Java下载-4
package cn.cnMyGitHub.download.JulyEdu;import java.io.BufferedReader;import java.io.File;import java.io.IOException;import java.io.InputStreamReader;import java.nio.charset.Charset;public clas...
·
package cn.******.******.****;
/**
* 时间:90624
* 作者:沏茶人
* 用途:下载一组ts
*/
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
public class tsDown {
static String kinleStr[] = {"", ".m3u8.", "-"};
static String version[] = {"v1", "v2", "v3"};
static String type[] = {"mp4", "ts", "video"};
static Integer err = 0;
public static void main(String[] args) throws IOException {
Integer m_id = 101;
Integer id[] = {800,801,802,803,804,805,806,807};
String code[] = {
"8e19e9a74b",
"09f0cc3018",
"1972dd68ca",
"6c65444e36",
"1ca9b967cd",
"5b8e3f76e4",
"bbd9366740",
"06e2d23287"};
Integer indexMax[] = {488,476,490,531,454,367,449,406};
for(int i = 0; i<id.length; i++ ){
System.out.println("开启"+code[i]+"任务...");
System.out.println("任务信息: "+ m_id+", "+ id[i]+", "+ code[i]+", "+ indexMax[i]);
downloadTS("H","Python\\"+i+"\\"+ code[i], m_id, id[i], code[i], 1, indexMax[i], 2);
}
System.out.println("当前任务"+m_id+"已经全部完成");
}
/**
* 暂时淘汰
* 葫芦娃、葫芦娃、合体
* @param souPath 源路径
* @param tarPath 目标路径
* @param newFileName 合成文件名
*/
public static void synthesisTemp(String souPath,String tarPath,String newFileName){
/* 合成TS文件*/
//synthesisTemp(path + code,path,code);
if(newFileName.equals("")){ //如果为空,则默认获取文件名文文件夹名
}
execCMD("copy /b "+souPath+"\\*.ts "+tarPath+newFileName+".ts");
//System.out.println("copy /b "+souPath+"\\*.ts "+tarPath+newFileName+".ts");
System.out.println("合成完成!");
}
/**
* 给我一个盘,给我一支禁卫军,我带你攻占一城
* @param pan
* @param indexMain
* @param indexSub
* @param code
* @param number
* @param indexMax
* @param verNum
* @throws IOException
*/
private static void downloadTS(String pan,String path, Integer indexMain,Integer indexSub,String code,Integer number,Integer indexMax, Integer verNum) throws IOException{
createFolder(pan, path);
Integer n = 0;
if(number!=0){
n = number;
}
//下载执行体
for(;n<indexMax+1;n++){
//判断文件是否存在,即下载中或下载成功
File fileExists = new File(pan+":\\"+path+"\\"+code + kinleStr[verNum] + num(n)
+ kinleStr[verNum]
+ code + kinleStr[verNum] + num(n) +".ts");
if(noExists(fileExists)){
String tempZeroNumber = num(n); //初始化 临时变量体零数
//规则 .m3u8.
if(kinleStr[verNum].equals(".m3u8.")){
if(n==0 || n==number)System.out.println("以\".\"为规则,执行下载体");
String resp = execCMD("dl "
+ "--exec \"move {} "
+pan+":\\"
+path+"\\{}\" http://" + version[verNum] + ".******.com/" + type[verNum] + "/"
+indexMain+"/"
+indexSub+"/"
+code+kinleStr[verNum]
+n+".ts");
}
//规则 -
if(kinleStr[verNum].equals("-")){
if(n==0 || n==number) System.out.println("以\"-\"为规则,执行下载体.(" + (n==0 || n==number) + ")");
String resp = execCMD("dl "
+ "--exec \"move {} "
+pan+":\\"
+path+"\\{}\" http://" + version[verNum] + ".******.com/" + type[verNum] + "/"
+indexMain+"/"
+indexSub+"/"
+code+kinleStr[verNum]
+tempZeroNumber+".ts");
}
//判断文件是否存在,即下载中或下载成功
File fileDownSucc = new File(pan+":\\"+path+"\\"+code + kinleStr[verNum] + tempZeroNumber
+ kinleStr[verNum]
+ code + kinleStr[verNum] + tempZeroNumber +".ts");
if(!fileDownSucc.exists()){
System.err.println("正在执行(已执行"+n+"次),已完成 "
+((float)n/indexMax*100)+"%"
+", 下载失败:"
+ pan+":\\"+path+"\\"+code + kinleStr[verNum] + tempZeroNumber
+ kinleStr[verNum]
+ code + kinleStr[verNum] + tempZeroNumber +".ts");
err = err + 1;
n--;
if(err>=5){
System.err.println("下载失败。请检查网络是否畅通或下载地址是否正确!");
if(!errInfo.equals(""))
errInfo = errInfo + ", ";
errInfo = errInfo
+ "\"" +code
+ "\":[{\"code\":\"" + code
+ "\", \"m_id\":\"" + indexMain
+ "\", \"id\":\"" + indexSub
+ "\", \"version\":\"" + version[verNum]
+ "\", \"index\":\"" + n
+ "}]";
break;
}
}else {
err = 0;
System.out.println("正在执行(已执行" + n + "次),已完成 " + ((float) n / indexMax * 100) + "%");
}//判断是否有错误信息
}//判断文件是否已经存在
} //循环结束
if(!(errInfo == "")){
System.out.println(errInfo);
}
System.out.println("下载结束! ");
}
/**
* 623 已淘汰
* 我种下一个苹果,终于得到一堆
* @param pan
* @param indexMain
* @param indexSub
* @param code
* @param number
* @param indexMax
* @param verNum
* @throws IOException
*/
private static void downloadTS(String pan,int indexMain,int indexSub,String code,int number,int indexMax, int verNum) throws IOException{
createFolder(code);
int n = 0;
if(number!=0){
n = number;
}
//下载执行体
for(;n<indexMax+1;n++){
//判断文件是否存在,即下载中或下载成功
File fileExists = new File(pan+":\\"+code+"\\"+code + kinleStr[verNum] + num(n)
+ kinleStr[verNum]
+ code + kinleStr[verNum] + num(n) +".ts");
if(noExists(fileExists)){
String tempZeroNumber = num(n); //初始化 临时变量体零数
//规则 .m3u8.
if(kinleStr[verNum].equals(".m3u8.")){
if(n==0 || n==number)System.out.println("以\".\"为规则,执行下载体");
String resp = execCMD("dl "
+ "--exec \"move {} "
+pan+":\\"
+code+"\\{}\" http://" + version[verNum] + ".*****.com/" + type[verNum] + "/"
+indexMain+"/"
+indexSub+"/"
+code+kinleStr[verNum]
+n+".ts");
}
//规则 -
if(kinleStr[verNum].equals("-")){
if(n==0 || n==number) System.out.println("以\"-\"为规则,执行下载体.(" + (n==0 || n==number) + ")");
String resp = execCMD("dl "
+ "--exec \"move {} "+pan+":\\"
+code+"\\{}\" http://" + version[verNum] + ".*****.com/" + type[verNum] + "/"
+indexMain+"/"
+indexSub+"/"
+code+kinleStr[verNum]
+tempZeroNumber+".ts");
}
//判断文件是否存在,即下载中或下载成功
File fileDownSucc = new File(pan+":\\"+code+"\\"+code + kinleStr[verNum] + tempZeroNumber
+ kinleStr[verNum]
+ code + kinleStr[verNum] + tempZeroNumber +".ts");
if(!fileDownSucc.exists()){
System.err.println("正在执行(已执行"+n+"次),已完成 "+((float)n/indexMax*100)+"%"+", 下载失败:"+ code+kinleStr[verNum] +tempZeroNumber+".ts");
err = err+1;
n--;
if(err>=5){
System.err.println("下载失败。请检查网络是否畅通或下载地址是否正确!");
break;
}
}else {
err = 0;
System.out.println("正在执行(已执行" + n + "次),已完成 " + ((float) n / indexMax * 100) + "%");
}
}
} //循环结束
System.out.println("下载结束! ");
}
/**
* 6.18 已淘汰
* 我可不可以横道夺爱?
* @param indexMain 哪个省份
* @param indexSub 哪个城市
* @param folder 欲横道夺爱的人
* @param number 到底要不到中间插一脚?
* @param indexMax 这个世界人口就这么多
* @throws IOException
*/
public static void downloadTS(int indexMain,int indexSub,String folder,int number,int indexMax, String kinleStr, String version, String type) throws IOException{
//downloadTS(101,800,code,1,400,2);
//downloadTS(65,896,code,0,400,"-","v3","video");
createFolder(folder);
int n = 0;
if(number!=0){
n = number;
}
//下载执行体
for(;n<indexMax+1;n++){
System.out.println("正在执行(已执行"+n+"次),已完成 "+((float)n/indexMax*100)+"%");
if(kinleStr.equals(".")){
if(n==0 || n==number){System.out.println("以\".\"为规则,执行下载体");}
String resp = execCMD("dl "
+ "--exec \"move {} H:\\"
+folder+"\\{}\" http://" + version + ".*****.com/" + type + "/"
+indexMain+"/"
+indexSub+"/"
+folder+".m3u8."
+n+".ts");
System.out.println(resp);
}
if(kinleStr.equals("-")){
String tempZeroNumber = ""; //初始化 临时变量体零数
if(n==0 || n==number){System.out.println("以\"-\"为规则,执行下载体.(" + (n==0 || n==number) + ")");}
if(n>999){
tempZeroNumber="0"+n;
}else if(n>99){
tempZeroNumber="00"+n;
}else if(n>9){
tempZeroNumber="000"+n;
}else if(n>-1){
tempZeroNumber="0000"+n;
}else{
System.out.println("系统异常!");
}
String resp = execCMD("dl "
+ "--exec \"move {} H:\\"
+folder+"\\{}\" http://" + version + ".*****.com/" + type + "/"
+indexMain+"/"
+indexSub+"/"
+folder+kinleStr
+tempZeroNumber+".ts");
System.out.println(resp);
}
}
//下载结束提示语
System.out.println("下载结束! ");
}
/**
* 看什么看,编号而已
* @param n
* @return
*/
private static String num(int n){
if(n>999) return "0"+n;
else if(n>99) return "00"+n;
else if(n>9) return "000"+n;
else if(n>-1) return "0000"+n;
else return "系统异常";
}
/**
* 看一下文件是不是不在
* @param file 给我地址啊,要不然怎么约会?
* @return 如果不在,返回true;如果在,返回false
*/
private static boolean noExists(File file){
if(file.exists()){
System.out.println("该文件已存在,跳过...");
return false;
}else{
return true;
}
}
/**
* 隔壁
* @param folder 要我接生也行啊,给我地址啊
* @throws IOException
*/
private static boolean createFolder(String pan,String folder) throws IOException{
File file = new File(pan+":\\"+folder);
System.out.println(pan+":\\"+folder);
if(!file.exists()){
//file.mkdir();
file.mkdirs();
System.out.println("文件夹"+folder+"创建成功");
return true;
}else{
System.out.println("文件夹"+folder+"已经存在");
return false;
}
}
/**
* 自家
* 男孩纸生个宝宝不过分吧?
* @param folder
* @throws IOException
*/
private static boolean createFolder(String folder) throws IOException{
File file = new File("H:\\"+folder);
System.out.println("H:\\"+folder);
if(!file.exists()){
file.mkdir();
System.out.println("文件夹"+folder+"创建成功");
return true;
}else{
System.out.println("文件夹"+folder+"已经存在");
return false;
}
}
/**
* 不检查DNA
* @param command
* @return 返回字符串
*/
private static String execCMD(String command) {
StringBuilder sb =new StringBuilder();
try {
Process process=Runtime.getRuntime().exec(command);
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while((line=bufferedReader.readLine())!=null)
{
sb.append(line+"\n");
}
} catch (Exception e) {
return e.toString();
}
return sb.toString();
}
/**
* 检查DNA
* @param command
* @param encode
* @return
*/
private static String execCMD(String command,String encode) {
StringBuilder sb =new StringBuilder();
try {
// 执行ping命令
Process process = Runtime.getRuntime().exec(command);
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream(), Charset.forName(encode)));
String line = null;
while ((line = br.readLine()) != null) {
//System.out.println(line);
sb.append(line+"\n");
}
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}
}
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献1条内容
所有评论(0)