Skip to content

Releases: LOKOP01/downloader

Windows 1.8.17.0:新增 YouTube 视频解析

Choose a tag to compare

@LOKOP01 LOKOP01 released this 19 Oct 13:37

Windows 1.8.17.0:新增 YouTube 视频解析

本次更新

桌面端新增 YouTube 单视频解析,接入现有的「解析 → 选画质 → 下载 → ffmpeg 合并」流程。
另外把上一版(1.8.16.0)的抖音图文动图改动一并纳入本次发布。

一、YouTube 解析

  • 链接形态:watch、shorts、live、music.youtube、embed、youtu.be 短链,以及带 list= 的单集链接(只取当前视频)。
  • 画质档位:按视频高度聚合,最多 8 档(2160p / 1440p / 1080p / 720p / 480p / 360p / 240p / 144p),每个档位自动配最高码率的 m4a 音轨;档位标签标注帧率与编码(如 2160p · 25fps · AV1)。
  • 容器约束:只选 mp4 容器(视频 avc1 优先,其次 av01 / vp9;音频 m4a),保证 ffmpeg 能 -c copy 合并进 mp4,不重新编码。
  • 解析实现:用 yt-dlp 只负责取播放格式(含 nsig 签名与 JS 挑战),下载、分块、合并仍由本项目的下载器完成,不引入第二套下载逻辑。
  • 代理:解析与下载都走 Windows 系统代理,和其余平台一致。
  • 边界处理:播放列表、频道、搜索结果在本地直接给出中文提示,不展开整页;年龄限制、会员专享、私享视频、视频不可用、网络超时、签名求解失败等错误都转成中文提示。
  • 界面:平台支持行加入 YouTube;YouTube 视频的第三个统计位显示「观看」而不是「分享」。
  • 依赖:新增 yt-dlp 与 yt-dlp-ejs,打包时随 exe 一起分发,运行期不需要联网拉取组件。

二、1.8.16.0:抖音图文动图转 GIF

  • 抖音图文作品解析后自动补齐 Live Photo 的视频轨,并转成 GIF;静态图与动图各走各的,互不阻塞。
  • 图文作品的视频轨改用浏览器详情接口补齐,减少缺轨。

安装

  • 安装版:VideoDownloader-1.8.17.0-setup.exe(约 146 MB),双击按向导安装到
    %LOCALAPPDATA%\Programs\视频下载器。
  • 免安装:直接运行 VideoDownloader-1.8.17.0.exe(单文件,约 120 MB)。
  • 升级现有版本不需要卸载;config.json、edge_profile*、书架与下载文件都保留。
  • YouTube 1080p 以上是音视频分离,需要在「设置 → 合并组件(ffmpeg)」下载一次 ffmpeg;与 B 站 DASH 合并共用同一个组件。

验证

  • 全套 271 项测试通过(46 项子测试),新增 56 项 YouTube 解析测试,覆盖域名识别、档位选择、字段映射、错误分支与平台分发。
  • 解析矩阵实测:watch / shorts / music / embed / youtu.be / watch+list 各 8 档并带音轨;播放列表、频道、搜索在 0 秒内被本地拦截;失效视频 2.3 秒返回中文提示。
  • 端到端下载实测:1080p 合并后 h264 1920x1080 25fps + aac;720p 文件 29.9 MB、h264 1280x720 25fps + aac,速度 12–15 MB/s。
  • 打包版本机实测:启动日志 启动 v1.8.17,界面解析 Rick Astley - Never Gonna Give You Up 成功,显示 8 档画质与「18.3亿 观看」,日志 解析成功 youtube … 用时 5.27s | 画质 8 档。

Android 1.0.50 — 新增 Iwara / Pornhub / hanime1

Choose a tag to compare

@LOKOP01 LOKOP01 released this 19 Oct 15:10

Android 1.0.50:新增 Iwara / Pornhub / hanime1

本次更新

新增三个站点

  • Iwara:api.iwara.tv 详情 → 带 X-Version 签名请求档位表,Source / 540p / 360p 三档;每轮换一批 CDN 域名,多轮取备用地址;Range 探针取精确大小。
  • Pornhub:页面 flashvars → get_media 两跳,240 / 480 / 720 / 1080 四档,带视频页 Referer 与 X-Requested-With;站点按 IP 限流时会明确提示「稍等几秒再试」。
  • hanime1:/watch?v=<id> 页面直接取 <source>,1080 / 720 / 480 三档,签名直链用 Range 取大小。

抖音图文动图

  • 解析 images[].video.play_addr 里的 Live Photo 视频轨;
  • 新增纯 Kotlin 的 GIF89a 编码器(MediaMetadataRetriever 抽帧 → 6×6×6 调色板 + Floyd–Steinberg 抖动 → LZW),动图会先下视频轨再转成同名 GIF 存入相册。

其它改进

  • 启动时把已保存的 Cookie 全量同步给 WebView:抖音 / X 的解析走 WebView,升级后旧登录态也能直接生效。
  • WebView 解析页改为桌面视口(useWideViewPort + loadWithOverviewMode)并抹平几个常见指纹,减少站点把 WebView 判成移动端。

安装

  • APK 约 17.6 MB,Android 7.0+(minSdk 24),debug 签名;
  • 覆盖安装不丢配置、书架与已下载内容。

已知限制

  • 抖音图文的动图视频轨仍取不到:抖音在安卓 WebView 里只下发 SSR 静态图、不触发 /aweme/v1/web/aweme/detail/(hook 状态恒为 cap:0,登录态、视口、指纹都已尝试),因此动图会落到静态图;桌面端不受此限。
  • Pornhub 对出口 IP 限流较严:返回 HTML 验证页时解析会失败并提示重试,换节点或等几分钟即可。
  • Instagram 需要有效的 sessionid,过期会提示重新填写。

Windows 1.8.15.0:新增 MP4 转 GIF 页面

Choose a tag to compare

@LOKOP01 LOKOP01 released this 18 Oct 14:44

Windows 1.8.15.0:新增 MP4 转 GIF 页面

本次更新

桌面端新增原生「MP4 转 GIF」页面,位于左侧导航「WebP 转 MP4」之后。
解析、下载、批量、书架、播放与 WebP 转换的既有调用链不变。

一、MP4 转 GIF

  • 输入:多选文件或直接拖入;每个 MP4 独立转换为同名 .gif,失败项不会阻断批量后续任务。
  • 片段截取:可设置起始时间与转换时长,支持秒数、分:秒、时:分:秒;时长留空表示从起始时间到结尾。
  • 输出参数:
    • 帧率 10 / 15 / 20 / 24 帧每秒;
    • 宽度 320 / 480 / 640 px 或原宽(原宽超过 1920 时自动缩小);
    • 颜色数 256 / 128 / 64;
    • Bayer 抖动或无抖动;
    • 无限循环,或只播放一次。
  • 编码方式:FFmpeg 两遍调色板(palettegen + paletteuse),避免逐帧独立调色造成闪烁;
    音频、字幕与数据流一律丢弃,只保留视频画面。
  • 复用组件:使用设置页已有的 ffmpeg,不新增强制依赖;缺失时按提示到「设置 → 合并组件」下载。
  • 取消与发布:后台线程转换,可随时取消;输出先写入目标目录下的临时目录,成功后才原子发布。
    失败或取消不会留下半成品,也不会修改源视频;默认不覆盖同名 GIF。
  • 资源上限:单文件 8 GiB、输出宽 ≤1920、时长 ≤300 秒、≤1500 帧;超限时明确报错,不静默截断。
  • 结果操作:结果列表显示尺寸与帧数,可用系统默认图片查看器预览,或直接打开输出目录。

安装

  • 安装版:视频下载器-1.8.15.0-setup.exe(约 137 MB),双击按向导安装到
    %LOCALAPPDATA%\Programs\视频下载器。
  • 免安装:直接运行 视频下载器.exe(单文件,约 111 MB)。
  • 升级现有版本不需要卸载;config.json、edge_profile*、书架与下载文件都保留。

验证

  • 全套 206 项测试通过(32 项子测试),覆盖引擎真实 FFmpeg 编码、中文与空格路径、
    起始/时长截取、缩放与循环、覆盖策略、取消清理、资源上限,以及界面队列、参数传递、
    批量失败继续、关闭不阻塞与主窗口真实端到端转换。
  • 打包版本机实测:添加 1.2 秒测试视频 → 输出 GIF 480×320、18 帧、无限循环,
    界面结果区显示「完成 · test.gif · 480×320 · 18 帧」。
  • 打包版启动日志出现「启动 v1.8.15.0」,转换页导航与全部设置项正常显示。

已知边界

  • 本次未在「本地视频」页增加右键「转为 GIF」快捷入口,入口仍是导航页手动添加或拖入。
  • 长视频/超大分辨率未做专项性能测试,受 300 秒、1500 帧与 1920 宽上限保护。
  • 单文件版启动仍需系统 TEMP 可写。

仅供个人学习与备份,请遵守平台服务条款和版权。

Windows 1.8.14.1:界面重做 + 合入长期分支的安全修复

Choose a tag to compare

@LOKOP01 LOKOP01 released this 18 Oct 07:40

Windows 1.8.14.1:界面重做 + 合入长期分支的安全修复

本次更新

两件事合到一起:桌面端界面整体重做,以及把长期停留在
audit/android-full-20261015 分支上的 12 个提交并入 main。此前 main
缺少五项高危修复与本地视频播放器。

功能与配置项未改动:解析、下载、批量、书架、转换、播放的调用链与上一版一致。

一、合入的高危修复(此前缺失)

  • 配置损坏会静默清空用户数据:config.json 解析失败时旧实现静默回退默认值,
    之后用户再切任意开关就触发保存,原文件被默认值整体覆盖,Cookie 与下载目录
    永久丢失。现在读不懂的配置会先改名备份为 .corrupt,用户数据不会丢。
  • 配置顶层非对象导致程序永久起不来:被写成 []、null、数字或字符串时,
    .items() 抛 AttributeError 而旧 except 覆盖不到。现在校验根节点必须是对象,
    并把越界/非法的数值项收敛到合法区间;保存改为先写临时文件再原子替换,进程被杀
    也不会留下半截 JSON。
  • 无 Content-Length 时半截文件被判定为已完成:服务端发一半就断开时旧实现会把
    半截文件改名成成品并标记「已完成」,静默产出坏文件。现在无长度且无 chunked 终止块
    一律判失败,不再当成品落盘。
  • 伪域名诱骗 Cookie 外发:旧实现用 keyword in host 子串匹配,
    douyin.com.evil.cn、evilbilibili.com、notx.com 都会被认成官方站点,
    进而把用户 Cookie 发往不可控域名。现改为按域名标签边界匹配;顺带显式补全
    douyinvod.com / douyinpic.com(它们此前靠子串侥幸命中,严格匹配后必须列出,
    否则抖音视频缺 Referer 会 403)。
  • 启动期 int() 转换无保护:max_concurrent 被改成 "abc" 时 ValueError 让主窗口
    构造即崩。现在回退默认值。

版本号顺带收敛一致:分支上 exe 资源写的是 1.8.14.0、安装包写的是 1.8.10.42,
现在三处文件与资源字符串统一为 1.8.14.1。

二、界面重做

  • 壳层:顶部标签改为左侧导航栏(208px,7 项),标题栏横向通栏,底部新增状态条
    (任务状态点、保存目录、版本号)。切页时内容区宽度不再随标签文案变化。
  • 视频解析:链接输入与解析结果合并到同一面板,解析完结果紧接着展开;未解析时是
    带引导的空态。作品信息分层(标题 / 作者与类型徽章 / 画质时长等元信息 / 互动数),
    主操作只保留「下载」,其余收为图标按钮。
  • 下载任务:新增分段筛选(全部 / 进行中 / 已完成 / 失败,计数就是筛选);列宽按
    实测文本重算,状态列只写状态、失败原因进悬停提示;文件名列单行省略,避免长文件名
    把行高撑成两三行;运行日志面板可折叠。
  • 设置:从「每项一张卡片」改为分组面板 + 设置行,右侧控件统一宽度对齐;账号区
    一个平台一行,状态用徽章表达。
  • WebP 转 MP4:左右两栏(输入队列 / 转换设置)+ 底部结果区;列表内操作收为图标按钮。
  • 批量下载 / 漫画阅读器:纳入新壳层;批量表数值列固定宽度,加载中不再左右抖动;
    漫画的搜索筛选排序与书架合并进同一块面板。
  • 本地视频:随分支一并回到界面上 —— 下载完成的视频自动入库、卡片墙、搜索排序、
    续播进度、倍速/全屏播放器,功能与分支版一致,页面换成新壳层的页头 + 面板布局。
  • 修复设置页数字输入框过窄:上一版把「每文件连接数 / 同时下载数」压到 96px,
    而该控件自带两个 31px 箭头按钮 + 5px 间距,数字区只剩 20px(数字贴左缘、多一位
    就被裁)。现统一为 132px 并显式左对齐,与同列下拉框等宽,数字区 60px。
  • 视觉:静态氛围层 —— 画布两团角落光晕(跟随强调色)、面板渐变描边与顶部受光
    高光、页头渐变标题与强调色竖条、侧栏选中项渐变底。全部静态绘制、无装饰动画;
    光晕按「尺寸 + 主题 + 强调色」缓存成位图,滚动时只做一次位图拷贝。

安装

  • 安装版:视频下载器-1.8.14.1-setup.exe(约 137 MB),双击按向导安装到
    %LOCALAPPDATA%\Programs\视频下载器。
  • 免安装:直接运行 视频下载器.exe(单文件,约 111 MB)。
  • 升级现有版本不需要卸载,安装包会原地替换程序文件;config.json、edge_profile*、
    书架与下载文件都保留。

验证

  • 全套 182 项单元测试通过(合并前 136 项,分支带来 46 项),覆盖任务表操作列
    必须在最左、列宽预算、漫画与转换窗口集成、解析失败重试、视频库持久化、配置损坏
    备份、伪域名拒绝、半截文件判定等。
  • 安全修复实测:损坏的 config.json 被备份为 .corrupt 且保存后未被覆盖;根节点为
    数组时不崩;max_concurrent="abc" 收敛为 3、segment_connections=999 收敛为 32;
    5 个伪域名(含 douyin.com@evil.cn 这种 userinfo 伪装)全部拒绝,31 个真实
    CDN/API 域名全部识别。
  • 本地视频实测:ffmpeg 生成测试视频走完整链路 —— 入库、首帧截取封面、播放器加载
    (时长 3000ms)、播放位置从 0 推进到 3000、进度落盘。
  • 界面冒烟脚本覆盖壳层与导航切换、深浅主题往返、强调色切换、任务入队与移除后
    表格/空态切换、七个页面关键控件可达。
  • 打包产物核对:从 exe 的 PYZ 中取出各模块 code 对象,确认新界面符号存在、
    已删除的旧模块不在包内。
  • 启动验证:日志出现「启动 v1.8.14.1」。

已知边界

  • 首次启动仍是默认窗口 1280×720;更窄的窗口下任务表会出现横向滚动条,核心的
    「操作」列固定在左侧始终可见。
  • 浅色主题的光晕刻意压得很淡,若觉得氛围不够可等后续版本提供强度设置。
  • 安装脚本现在同时兼容单文件版与文件夹版(onedir):有 _internal 就一并安装,
    没有就跳过。本次发布的仍是单文件版。
  • 本次一并合入的 Android 端改动(漫画书架与离线阅读、禁漫多章少页修复)属于
    1.0.49,未在本机做真机验证。

仅供个人学习与备份,请遵守平台服务条款和版权。

Windows 1.8.14.0:本地视频播放——封面、续播与源文件管理

Choose a tag to compare

@LOKOP01 LOKOP01 released this 17 Oct 11:39

Windows 1.8.14.0:本地视频播放——封面、续播与源文件管理

本次更新

新增「本地视频」页:不用外部播放器就能看下载好的视频

顶部标签栏新增本地视频页:下载完成的视频自动入库,点击卡片直接播放,
不需要再到文件夹里翻文件。支持 MP4 / MKV / WebM / MOV / AVI / FLV / TS / WMV 等常见格式,
也支持手动添加文件、导入整个文件夹(递归扫描)、把视频或文件夹直接拖进窗口。

播放器:续播、倍速与快捷键

  • 暂停或关闭播放器时自动保存进度,下次打开从上次的位置继续;看完全片自动归零
  • 0.5× – 2.0× 倍速、±10 秒快进快退(方向键 ±5 秒)、音量与静音、全屏
  • 快捷键与漫画阅读器一致:空格播放暂停、F11 全屏、Tab 隐藏工具栏、Esc 退出
  • PageUp / PageDown 在同一文件夹的多集视频之间切换

封面:解析时看到的封面直接上墙

视频卡片显示封面,按三级策略获取:

  1. 开启「同时下载封面」时直接使用下载的 _cover 图
  2. 未开启该开关也不受影响——入库时自动下载解析出的封面图(与页面预览一致)
  3. 都失败时(无网络等)用 ffmpeg 截取第一帧兜底

封面缓存在程序目录 video_covers/,重复刷新不会重新截帧或重新下载。

右键管理:删除之前先让你选清楚

右键卡片可以打开文件夹,或选择「删除…」——弹窗让你二选一:

  • 仅移除记录:源文件和封面原样保留,只是从视频库里消失
  • 删除记录和源文件:连视频带关联封面一起删除(不可撤销,红色按钮确认)

文件被占用删不掉时会明确提示并保留记录,不会静默丢数据。

数据安全

播放进度与视频记录保存在 video_library.json:多实例打开有文件锁协作、
写入采用「临时文件 + 原子替换」、损坏时自动从 .bak 备份恢复、检测到其他实例
修改过记录会拒绝保存而不是覆盖掉别人写的进度。


下载

  • VideoDownloader-1.8.14.0.exe:单文件版,双击即用(108.8 MB)
  • SHA256SUMS.txt:产物校验值(SHA256:df73774d278e431e…)

旧版本升级:直接覆盖运行即可,视频库记录与播放进度自动继承。

Windows 1.8.10.42:配置损坏不再丢 Cookie、下载残片不再误判为成品、域名识别加固

Choose a tag to compare

@LOKOP01 LOKOP01 released this 17 Oct 04:38

Windows 1.8.10.42:配置损坏不再丢 Cookie、下载残片不再误判为成品、域名识别加固

本次更新

配置损坏不再静默清空你的 Cookie

此前 config.json 解析失败时会静默回退到默认值:你在设置页随便切一个开关就会触发保存,
损坏的文件被默认值整体覆盖——Cookie、下载目录、命名规则全部丢失,且全程没有任何提示。

现在读不懂的配置文件会先改名备份为 config.json.corrupt 再回退默认值,原始内容完整保留,
可以手工修复后改回来。保存本身也改为「先写临时文件再原子替换」,进程被杀或磁盘写满时
不会留下半截 JSON——否则下次启动又是一次「损坏」。

配置被改坏时程序不再起不来

config.json 若被外部工具写成数组、null、数字或字符串,旧的解析路径会在 .items() 上抛
AttributeError,而异常捕获覆盖不到它——程序永久无法启动,删文件才能恢复。
现在会校验配置根节点必须是对象,坏文件走上面的备份流程。

顺带把数值项收紧:max_concurrent 写成 "abc" 以前会在主窗口构造时 ValueError 直接崩溃,
现在回退默认值;segment_connections 越界会收敛到 1–32。

下载残片不再被当成完整文件

当服务端不声明 Content-Length 又提前关闭连接时,iter_content 并不会抛异常,
旧实现因此把只下了一部分的文件当成成品重命名并标记「已完成」。

实测复现:源数据 3,072,000 字节,服务端发 500,000 字节后断开 → 旧版状态显示已完成,
文件只有 500,000 字节;现在会判定失败并明确提示,不会把坏文件留在下载目录。

正常的 chunked 传输不受影响,仍照常完成。

域名识别加固,Cookie 不再被伪域名骗走

旧实现用 keyword in host 的子串匹配,以下链接都会被认成官方站点并从你配置里取出 Cookie 发出去:

  • douyin.com.evil.cn
  • evilbilibili.com
  • notx.com
  • instagram.com.evil.cn

现在改为按域名标签边界匹配:完整域名要求是其子域,主干型关键字(instagram、xhscdn)
要求标签以主干结尾、紧跟官方 TLD、且其后不能再有别的域。

同时补全了 douyinvod.com / douyinpic.com——这两个抖音 CDN 此前靠子串匹配侥幸命中,
改成严格匹配后必须显式列出,否则抖音视频会因缺少 Referer 而 403。

安装包改为文件夹版

本次发布安装包与便携版均为文件夹版(onedir),不再是单文件 exe。

单文件 exe 启动时需要把自身解包到系统临时目录,在 TEMP 受限或被安全软件拦截的机器上
会直接退出且没有任何提示(退出码 -1)。文件夹版使用程序目录的 .runtime-temp,不依赖系统 TEMP。

注意:EXE 必须与同目录的 _internal 一起保留,不能只复制单个 EXE。

使用与升级

二选一:

  • 安装包:运行 视频下载器-1.8.10.42-setup.exe,默认装到 %LOCALAPPDATA%\Programs\视频下载器。
  • 便携版:解压后双击「视频下载器.exe」,不要只复制 EXE。

升级前请先关闭程序。安装包会保留你原有的 config.json、edge_profile*、manga_library.json。

附件仅包含程序与运行依赖,不含本机 Cookie、浏览器登录态、个人配置、书架或下载内容。

验证

  • 176 项单元测试全部通过。
  • 10 个伪造域名全部正确拒绝;31 个真实 CDN / API 域名识别正常。
  • 真实 B 站视频端到端下载通过(57.8 MB,文件头与字节数校验一致)。
  • 安装包实测完成完整安装:退出码 0,753 个文件就位,卸载注册项写入正常,
    安装后启动版本显示 1.8.10.42、窗口响应正常。
  • 打包版行为验证:把 config.json 写成 [] 再启动,程序正常启动并生成 .corrupt 备份,
    确认配置容错修复确实已进入产物。

已知边界

  • 保存目录的访问权限、账号权限与服务端风控仍以系统与平台实际允许范围为准。
  • 若目录被安全软件或沙箱工具施加了完整性级别限制(如 Low 标签 + No-Write-Up),
    程序与安装器同样无法写入,需先调整该目录的完整性标签。
  • 抖音 / X / Instagram / 小红书等站点的实际解析仍受登录态与风控影响,公开接口可用的部分不受本次改动影响。

Android 1.0.49 — 本地漫画书架、离线阅读与下载完整性修复

Choose a tag to compare

@LOKOP01 LOKOP01 released this 17 Oct 02:27

Android 1.0.49:本地漫画书架、离线阅读与下载完整性修复

本次是 Android 端(Kotlin + Compose)的功能完善,桌面端代码未改动。

新增:本地漫画书架与离线阅读

下载完成的漫画会自动进入书架,之后断网、原源站失效、登录过期都能直接打开阅读。

  • 禁漫本子(整本 zip)与图集(多张图片)在下载成功之后自动入库;失败、取消、部分下载都不留记录。
  • 底部新增「书架」页;下载任务卡片上的「去书架阅读(可离线)」可直达。
  • 压缩包首次打开解包到应用缓存并落 manifest,之后翻页只读缓存;阅读全程不发网络请求。
  • 阅读进度写入 filesDir/manga_library.json(原子替换 + .bak 备份),重启后回到上次那一页。
  • 书架支持搜索、四种排序(最近阅读/加入时间/标题/进度)、收藏、扫描下载目录找回已下载文件。
  • 页序按自然排序,与桌面端 app/core/manga.py 的 natural_key 逐条等价(含全角数字与超长数字的边界)。

新增:移除时由用户选择是否删文件

  • 「仅移除书架」——文件保留,可逆(默认出口)。
  • 「移除并删文件」——永久删除,需二次确认。
  • 删除只针对这一本登记的文件:不递归删目录、不按名字匹配、不扫目录;单本超过 5000 个目标视为记录损坏并整体拒绝。

修复:禁漫多章本子「解析 50 页、下载 25 页」

实测本子 350234:/album 返回 total_photos = 50,series 有 2 章,逐章 /chapter 各 25 张。

  • 根因:官方整本打包 /album_download_2 按本子 id 打包,而多章本子里本子 id 等于首章 id。旧代码只检查「包里有没有图片」,不校验覆盖范围,于是第一章的 25 张被当成整本静默完成。
  • 现要求官方包张数 ≥ 逐章合计才采信,否则丢弃并回退逐张下载。
  • 空章节不再静默跳过;下载完成后做页数对账,少页会写进任务备注(如「实际只下到 25 张,比预期的 50 张少 25 张」)。
  • 首页多章本子改显示「2 章 · 共 50 页」「共约 50 页(各章合计)」,避免把合计误读成单章页数。

修复:中文路径下 file:// 解析错误

File.toURI() 会把中文编码成 %E4%B8%AD,原实现不解码,导致下载目录(默认名「视频下载器」)下文件判不存在、删除静默失败。已改为纯字符串解析 + URLDecoder 解码。

其他

  • AppLog 对 android.util.Log 失败容错,使 JVM 单测可覆盖同一链路。
  • 阅读器首次打开大包时显示解压进度;错误页可重试。
  • 未新增任何 Android 权限;不迁移、不改名、不搬运任何已下载文件。

验证与边界

  • Android:226 项单测全部通过(本次新增 130 项);clean assembleDebug testDebugUnitTest lintDebug 全绿,Lint 0 Error。
  • 安装包签名校验通过;dex 核对确认新增类与关键文案均进入产物。
  • 本机未连接安卓真机,未声称完成真机验证:content:// 的 MediaStore 删除、大包解压耗时、相册刷新时机均未实测。
  • 官方整本打包接口对多章本子的真实返回未观察到(未登录时服务端回「請先登入」),因此校验写成不依赖其返回值的形态:张数少于逐章合计即丢弃。
  • 书架不提供「选择任意文件夹添加」:Android 10+ 需走 SAF,本应用产生的内容都在自己写的目录里,用「扫描下载目录」覆盖。
  • Android 9 及以下扫描公共下载目录需 READ_EXTERNAL_STORAGE,本应用不申请,那里会明确提示无法扫描。

下载

  • VideoDownloader-Android-1.0.49.apk:安卓安装包(沿用本机既有 debug 签名,可覆盖此前同签名版本)。
  • SHA256SUMS.txt:附件校验值。

仅供个人学习与备份,请遵守平台服务条款及内容版权。仓库原有第三方代码授权说明保持不变,详见 README。

Windows 1.8.10.41:下载路径报错定位、WebP 合并磁盘限额修正与客户端健壮性

Choose a tag to compare

@LOKOP01 LOKOP01 released this 16 Oct 13:49

Windows 1.8.10.41:下载路径报错定位、WebP 合并磁盘限额修正与客户端健壮性

本次更新

下载失败不再只报一句 Permission denied

Windows 上「父目录建不出来」「目标位置被同名目录占用」「目录真的不可写」抛出的都是
PermissionError: [Errno 13],以前用户只能看到一句含义模糊的报错,改权限、换目录都不解决问题。
现在按成因分开报出可操作的原因:

  • 新增落点预检:归一化路径后校验父目录,并逐个检查 .part/.vpart/.apart 等全部临时落点是否被同名文件夹占用。用户报错那次最终文件还不存在,占用发生在 .part 位置,只查目标文件会漏掉。
  • 分段下载前确认临时文件能真正创建,把「路径/权限问题」与「写入中途失败」区分开:前者换地址重试毫无意义,不再白跑全部候选地址。
  • 抖音直链是限时签名,按 l= 签发时刻判断是否过期,过期直接提示重新解析,不再跑完所有镜像才失败。

WebP 合并改为按实际落盘字节限额

PNG 会压缩,旧实现用「未压缩像素数 × 总帧数」预估磁盘占用,会误判:小图多帧的正常合并可能被提前拒绝。
现改为只给下一帧预留保守空间,总量按实际落盘字节逐帧限制 2 GiB,并逐帧检查剩余磁盘空间,空间不足时给出可操作原因并清理临时帧。

其他修复

  • 重试与批量重试跟随用户当前下载目录。此前沿用任务创建时的旧路径,表现为「改了下载目录还是下到老地方」。
  • 「打开所在文件夹」在目录不存在时给出明确提示,而不是点了没反应。
  • 输出目录选择改用 Qt 自绘对话框,避免受限启动环境下原生 Shell 选择器不显示;修复拖放事件在列表/输入框子控件上失效。
  • 启动外部程序时隔离 DLL 搜索路径,避免继承程序自身的依赖目录导致 shell 程序加载到错误 DLL。

使用与升级

本次附件为文件夹便携版 ZIP,无需安装。

  1. 解压整个 VideoDownloader-1.8.10.41 文件夹到可写位置。
  2. 双击文件夹中的「视频下载器.exe」。必须保留同目录的 _internal 文件夹,不能只复制 EXE,也不要在压缩包内直接运行。
  3. 升级旧版本前先关闭程序,只替换 EXE 与 _internal,保留自己的 config.json、edge_profile*、manga_library.json 等个人文件。
  4. 运行期临时文件放在程序旁的 .runtime-temp,只影响本程序及子进程,不修改 Windows 全局环境变量。

附件仅包含程序与运行依赖,不含本机 Cookie、浏览器登录态、个人配置、书架或下载内容。可用 SHA256SUMS.txt 校验。

验证

  • 打包产物内 50 个 app 模块与入口的字节码与当前源码逐项核对一致,已确认本次路径报错定位修复确实在包内。
  • exe 文件版本与产品版本均为 1.8.10.41,与源码 app_version.txt、安装脚本版本号统一。
  • 附件内含本地现有 ffmpeg 合并组件,用于 WebP 转 MP4 与音视频合并。

已知边界

  • 保存目录访问权限、账号权限与网络风控仍以 Windows 与服务端实际允许范围为准;程序无法绕过系统权限。
  • 若目录被安全软件或沙箱工具施加了完整性级别限制,程序同样无法写入,此时请改用可写目录。

Windows 1.8.10.35 — 禁漫自动入库与文件夹便携版

Choose a tag to compare

@LOKOP01 LOKOP01 released this 15 Oct 03:51

Windows 1.8.10.35:禁漫自动加入书架与文件夹便携版

本次更新

  • 禁漫任务下载成功后,自动将保存目录加入漫画书架,不切换页面、不自动弹出阅读窗口。
  • 书架正在导入或刷新时,将下载完成事件排队处理;失败、取消及非禁漫任务不自动入库。
  • 同路径重复入库不生成重复记录,保留收藏、阅读进度和用户自定义书名;新任务使用作品标题作为书架名称。
  • 禁漫下载异常记录完整调用栈,不再只打印“状态=失败”,便于区分接口、组件和本地保存权限问题。

Windows启动兼容

本次附件为文件夹便携版ZIP。旧单文件EXE需要先解包到系统TEMP,当系统临时目录不可写时会报“Could not create temporary directory!”。
文件夹版不需要启动时临时解包;运行期临时目录改为程序旁的 .runtime-temp,仅影响本程序和子进程,不修改Windows全局环境变量。

使用方法

  1. 下载 VideoDownloader-1.8.10.35-Windows-portable.zip,解压整个文件夹到可写位置。
  2. 双击文件夹中的 视频下载器.exe。必须保留同目录 _internal 文件夹,不能只复制EXE,也不要在压缩包内直接运行。
  3. 在设置中选择可写的下载目录;如果出现 WinError 5,程序未必有该目录的实际写入权限,切换到有权限的位置再重试。该错误不是禁漫接口错误,版本更新也不会绕过Windows权限。
  4. 升级现有文件夹版前先关闭程序。保留原config.json、edge_profile*、manga_library.json等个人文件,只替换EXE和_internal程序依赖。

便携包附带本地现有ffmpeg合并组件。附件仅收集程序、运行依赖及说明,不包含本机Cookie、浏览器登录态、个人配置、书架或下载图片。

验证

  • 全套103项单测:102通过,1项因本机创建符号链接权限不足而跳过。
  • 覆盖工作线程完成信号、成功入库、失败/取消忽略、书架忙时排队、重复事件保留进度收藏和书名。
  • 发布产物内应用模块及入口字节码与当前源码逐项核对,ZIP完整性校验通过。
  • 文件夹版在无效系统TEMP环境下的实际主窗口启动/关闭已验证;用户确认将保存位置改至可写目录后下载可用。
  • 本次不重新发布Android;安卓当前仍为1.0.44,可从上一版Release下载。

已知边界

  • 自动入库仅适用于本程序当前会话中成功完成的禁漫任务,历史下载可手动导入文件夹。
  • 账号权限、网络风控及保存目录访问权限仍以服务端和Windows实际允许范围为准。
  • 漫画阅读器支持JPG/JPEG文件夹,单张源图超过1600万像素会提示;不直接读取ZIP/CBZ。
  • 便携版无需安装,但程序目录必须可写,以保存配置、书架和运行期临时文件。

本次无安装版附件,避免误把文件夹版EXE单独打进旧单文件安装流程。SHA256SUMS.txt可用于校验附件。

仅供个人学习与备份,请遵守平台服务条款和版权。现有第三方许可说明见README。

Windows 1.8.10.34 / Android 1.0.44 — 漫画书架与网页登录

Choose a tag to compare

@LOKOP01 LOKOP01 released this 15 Oct 02:34

Windows 1.8.10.34 / Android 1.0.44

合并来源

本次将 codex/optimization 分支提交 ebf6258(本地漫画书架与阅读器)合入当前 main,保留本地尚未推送的桌面修复及安卓1.0.44网页登录功能。原分支并非无问题直接合入:已完成代码审查并修复下列问题。

Windows 新增:漫画书架与阅读器

  • 五标签页中新增漫画阅读器;支持JPG/JPEG文件夹及章节自然排序。
  • 支持收藏、搜索、最近阅读、阅读进度与独立版书架导入;移除记录不删除原图片。
  • 支持键盘翻页、缩放、全屏、长图适合宽度及左右阅读方向。
  • 已完成的独立目录图集、禁漫任务可直接打开阅读;视频封面不会导入整个下载根目录,未完成的图集不会提前打开。

审查后修复

  • 修复首次关闭阅读器窗口仍留在屏幕、但任务系统已停用的问题。
  • 关闭不再在GUI线程同步等待解码,排队封面任务会取消实际扫描;快速翻页只保留最新待加载页。
  • 修复双击全屏前误翻页、窗口关闭后立即重开、刷新页数与当前阅读器不同步等问题。
  • 书架备份和损坏快照使用临时文件+原子替换,避免跟随硬链接/符号链接覆盖其他源文件。
  • 主文件缺失时可恢复备份;无穷大页码等损坏输入可回退;多实例写入有锁和陈旧快照冲突检测。
  • 保留操作列最左和默认窗口取消按钮可见的既有修复。

保留当前本地修改

  • 保留Instagram登录窗口及受限账号提示、下载任务/图集预览修复。
  • 保留当前本地已移除E-Hentai下载支持的状态,不因合并旧分支重新引入。
  • Android 1.0.44:B站官方网页登录、服务端验证后自动保存、重新登录/换账号;包含Cookie请求头覆盖修复及抖音解析修复。Cookie与账号权限仍由服务端判定,不能保证所有视频均有高清流。

验证与边界

  • Windows:95项单测,94通过、1项因Windows本机无符号链接创建权限而跳过;硬链接安全测试已实际执行。包含真实Qt关闭/翻页/主窗口导入阅读重开刷新测试。
  • Android:60项单测通过,安装包签名与版本核对通过;本机未连接安卓真机,未声称完成真实手机登录验证。
  • 阅读器当前不直接读取ZIP/CBZ;单张源图超过1600万像素会明确拒绝,暂不提供分块或降采样阅读。
  • 关闭窗口不等待正在执行的解码,但应用最终退出仍可能等待已运行的Qt解码结束,不能安全强杀codec。
  • 多实例书架冲突不自动合并,可从“更多→重新加载已保存书架”恢复后重做未保存修改。
  • 保持既有升级安装标识;隔离安装验证成功写入程序文件,但本机执行环境拒绝写入HKCU卸载注册项(错误5),安装器已回滚,未完成完整安装/升级/卸载验证。没有操作用户现有安装。静默卸载按脚本保留用户配置与书架,原漫画图片不属于清理对象。

下载

  • VideoDownloader-1.8.10.34-setup.exe:Windows 10/11 x64安装包。
  • VideoDownloader-Android-1.0.44.apk:安卓安装包(沿用本机既有debug签名,可覆盖此前同签名版本)。
  • SHA256SUMS.txt:附件校验值。

仅供个人学习与备份,请遵守平台服务条款及内容版权。仓库原有第三方代码授权说明保持不变,详见README。