首页>代码>java swing开发B站视频下载工具,BiliBili视频下载工具,超好用的B站视频下载工具>/BilibiliDown-master/src/nicelee/bilibili/downloaders/Downloader.java
package nicelee.bilibili.downloaders;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import nicelee.bilibili.PackageScanLoader;
import nicelee.bilibili.annotations.Bilibili;
import nicelee.bilibili.enums.StatusEnum;
import nicelee.bilibili.util.HttpRequestUtil;
import nicelee.bilibili.util.Logger;
public class Downloader implements IDownloader {
private List<IDownloader> downloaders = null;
private IDownloader downloader = null;
private HttpRequestUtil util;
private StatusEnum status;
@Override
public boolean matches(String url) {
return true;
}
@Override
public void init(HttpRequestUtil util) {
downloaders = new ArrayList<>();
status = StatusEnum.NONE;
this.util = util;
try {
for (Class<?> clazz : PackageScanLoader.validDownloaderClasses) {
IDownloader downloader = (IDownloader) clazz.newInstance();
downloader.init(util);
downloaders.add(downloader);
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public boolean download(String url, String avId, int qn, int page) {
for (IDownloader downloader : downloaders) {
if (downloader.matches(url)) {
this.downloader = downloader;
status = StatusEnum.DOWNLOADING;
downloader.init(util);
return downloader.download(url, avId, qn, page);
}
}
System.out.print("未找到匹配当前url的下载器:");
System.out.println(url);
status = StatusEnum.FAIL;
return false;
}
@Override
public void startTask() {
if (downloader != null) {
status = StatusEnum.DOWNLOADING;
downloader.startTask();
} else {
Logger.println(StatusEnum.NONE.toString());
status = StatusEnum.NONE;
}
}
@Override
public void stopTask() {
if (downloader != null) {
downloader.stopTask();
}
status = StatusEnum.STOP;
}
@Override
public File file() {
if (downloader != null) {
return downloader.file();
}
return null;
}
@Override
public StatusEnum currentStatus() {
// 如果有downloader, 以downloader为准
if (downloader != null) {
return downloader.currentStatus();
} else {
return status;
}
}
@Override
public int totalTaskCount() {
if (downloader != null) {
return downloader.totalTaskCount();
}
return 0;
}
@Override
public int currentTask() {
if (downloader != null) {
return downloader.currentTask();
}
return 0;
}
@Override
public long sumTotalFileSize() {
if (downloader != null) {
return downloader.sumTotalFileSize();
}
return 0;
}
@Override
public long sumDownloadedFileSize() {
if (downloader != null) {
return downloader.sumDownloadedFileSize();
}
return 0;
}
@Override
public long currentFileDownloadedSize() {
if (downloader != null) {
return downloader.currentFileDownloadedSize();
}
return 0;
}
@Override
public long currentFileTotalSize() {
if (downloader != null) {
return downloader.currentFileTotalSize();
}
return 0;
}
}
最近下载更多

最近浏览