跳转至

进度回调

下载过程中可注册进度回调,实时获取下载进度。

基本用法

client.download(album)
        .withProgress(p -> System.out.printf(
                "进度: %d/%d 图片, %d/%d 章节%n",
                p.completedImages(), p.totalImages(),
                p.completedPhotos(), p.totalPhotos()))
        .execute();

DownloadProgress 字段

字段 类型 说明
completedImages() int 已完成的图片数(含成功/跳过/部分成功)
FailedImages() int 已结束但未完成的图片数(含失败/取消)
totalImages() int 总图片数
completedPhotos() int 已完成的章节数(含成功/跳过/部分成功)
FailedPhotos() int 已结束但未完成的章节数(含失败/取消)
totalPhotos() int 总章节数
albumId() String 本子ID
albumTitle() String 本子标题
photoId() String 当前章节ID(章节级有效)
photoTitle() String 当前章节标题(章节级有效)
isAlbumLevel() boolean 是否为本子级下载
downloadedBytes() long 已下载字节数(用于速度统计)
createTimestamp() String 进度快照创建时间戳

完整示例

private static void downloadWithProgress(AbstractJmClient client, String albumId) {
    JmAlbum album = client.getAlbum(albumId);
    System.out.println("本子: " + album.getTitle());

    DownloadResult result = client.download(album)
            .withProgress(p -> {
                double pct = (double) p.completedImages() / p.totalImages();
                System.out.printf("[%.0f%%] 图片 %d/%d, 章节 %d/%d%n",
                        pct * 100,
                        p.completedImages(), p.totalImages(),
                        p.completedPhotos(), p.totalPhotos());
            })
            .execute();

    if (result.isAllSuccess()) {
        System.out.println("完成! 共 " + result.getSuccessfulFiles().size() + " 张");
    }
}