Skip to content

fix(media): 追剧不认领刷流的种子、被删的种子马上重新找,缺集信息的刮削自动补 - #895

Merged
sunerpy merged 1 commit into
v1.0.0-rcfrom
fix/follow-adopt-and-scrape-retry
Nov 11, 2026
Merged

sunerpy merged 1 commit into
v1.0.0-rcfrom
fix/follow-adopt-and-scrape-retry

Conversation

@sunerpy

@sunerpy sunerpy commented Nov 11, 2026 •

Copy link
Copy Markdown
Owner

问题

生产上《伟大的长征》第 44 集一直没下、第 21–55 集里 27 集没有集截图与简介:

  • 刷流加的季包被追剧认领成第 44 集的来源;订阅推 LongWeb S01E44-S01E45 时第 44 集「在下载」,被设成不下载、只下了 E45。
    刷流几小时后删了季包,订阅 7 天后才发现;之后搜索一律跳过已经下载过的 LongWeb 种子,版本锁又只要 LongWeb,第 44 集一直等。
  • 第 54、56 集正在重演(认领的刷流种子已经被删,要到 11-16、11-17 才重新找)。
  • 新的一集播出后几个小时就整理入库,那时 TMDB 还没有截图、简介;只有开了「每周补一次缺的刮削」的媒体库才会再刮。
    缺集标题、集简介也不算部分刮削。

改动

追剧(internal/media/subscribe):

  • adopt 跳过 torrent_infos.download_source = brush 的种子。
  • dropVanished:下载中的订阅种子在下载器里连着 10 分钟看不到(记录也改过 10 分钟以上)就标成失败,订阅马上搜一次、记运行记录;
    下载器列不出来或列出来是空的不判。
  • 推送时设成不下载的集记在 skipped_episodes(升级前的按种子名的集减去 covered_episodes 算)。这些集重新缺了时
    evaluate 不再跳过这个已入库的种子:下载器里还有的,AdoptExisting 按这一次的策略与优惠记账,把这几集的文件改回下载,
    种子记录改回没下完;没有了就重新加进去、只下缺的集。repushed_at 以前的整理记录不算这一次入库。
  • 再下的种子下完了、10 分钟还没有新的整理记录:订阅按订阅的条目让整理入库整理一次(每小时最多一次),防完成事件丢了。

推送(internal/push.go):新加进下载器的种子清掉记录里的完成状态(以前下完、删掉以后再推的种子也会发完成事件);补记账的不清。

刮削(internal/media/scrape、internal/media/organize):

  • 一集来源里没有集标题或集简介时,NFO 照样写,记录记成部分刮削,说明里写明缺什么。
  • scrapeRetry:部分刮削与刮削失败的记录在整理后第 1、3、7、14 天各补刮一次(一部排一次,只补没有的文件,换 pt-tools 写的 NFO),
    不看每周补刮的开关;每个库一次最多 50 个条目。

数据库:media_subscription_torrents 加 skipped_episodes、repushed_at 两列(AutoMigrate,不用编号迁移)。

文档:追剧与订阅、整理入库、1.0 新功能(中英)。

验证

  • CGO_ENABLED=1 go test -race -count=1 ./... 全部通过(87 个包)。
  • 新测试:internal/media/subscribe(TestVanished*、TestAdoptSkipsBrushTorrents、TestRepush*、TestSkippedOf、TestRepushable)、
    internal/media/organize(TestScrapeRetry*,含真实刮削的补刮)、internal/media/scrape(TestEpisodeLacks)、
    internal(TestPushTorrent_FreshAddClearsCompletion、TestPushTorrent_AdoptExistingKeepsCompletion)。
  • make fmt-check、make lint-go、make docs-check、make build 通过。
  • 真实入口 QA(假站点 + 假 qBittorrent + 假 TMDB,生产二进制):刷流的第 2 集不认领;认领别处的第 3 集后第 3–4 集只下第 4 集;
    删掉别处的第 3 集 10 分钟后认领的种子标成失败、马上重新找;再推第 3–4 集,第 3 集的文件改回下载、下完整理入库;
    缺集简介与截图的一集记成部分刮削,整理满一天的记录在重启后的第一拍自动补刮;日志里没有 ERROR 与 panic。

追剧:
- 下载器里刷流任务下的种子不再认领成某一集的来源(刷流按自己的规则随时会删掉它们)。
- 下载中的订阅种子从下载器里没了(被刷流、手动或别的工具删掉):连着 10 分钟看不到就标成失败,
  这几集马上重新算缺的、马上搜一次,运行记录里记一条;以前要等 7 天。下载器读不到、列出来是空的时不判。
- 推送一个有几集的种子时设成不下载的集记下来;这些集之后又缺了,搜到同一个种子时再下一次:
  下载器里还有就把这几集的文件改回下载(按这一次的策略与优惠记账,种子记录改回没下完),
  没有了就重新加进去、只下缺的集。以前这样的种子一律跳过,版本锁又只要这个版本,这一集一直等。
- 再下的种子在下载器里下完了、10 分钟还没有新的整理记录时,订阅让整理入库整理一次(一小时最多一次)。
- 新加进下载器的种子把记录里的完成状态清掉:以前下完、删掉以后再推的种子也会发下载完成事件。

刮削:
- 一集的 NFO 写成了、来源里却没有集标题或集简介(刚播出的集常常这样),也记成部分刮削并写明缺什么。
- 部分刮削与刮削失败的记录在整理以后的第 1、3、7、14 天各自动补刮一次,不看「每周补一次缺的刮削」开关。
@codecov

codecov Bot commented Nov 11, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 80.00000% with 64 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
internal/media/subscribe/repush.go 69.44% 14 Missing and 8 partials ⚠️
internal/media/subscribe/vanished.go 82.90% 11 Missing and 9 partials ⚠️
internal/media/organize/scrape_retry.go 81.81% 5 Missing and 3 partials ⚠️
internal/media/subscribe/evaluate.go 79.48% 8 Missing ⚠️
internal/media/subscribe/ledger.go 70.00% 2 Missing and 1 partial ⚠️
internal/media/subscribe/progress.go 80.00% 1 Missing and 1 partial ⚠️
internal/media/organize/runner.go 0.00% 1 Missing ⚠️
Files with missing lines Coverage Δ
internal/media/organize/scrape.go 83.38% <100.00%> (-1.26%) ⬇️
internal/media/scrape/nfo.go 100.00% <100.00%> (ø)
internal/media/scrape/scrape.go 88.55% <100.00%> (+0.05%) ⬆️
internal/media/subscribe/service.go 87.12% <100.00%> (ø)
internal/push.go 91.42% <100.00%> (+0.06%) ⬆️
models/init.go 79.59% <ø> (ø)
models/media_subscribe.go 100.00% <ø> (ø)
scheduler/brush_monitor.go 92.34% <ø> (ø)
internal/media/organize/runner.go 79.65% <0.00%> (-0.18%) ⬇️
internal/media/subscribe/progress.go 75.99% <80.00%> (+0.42%) ⬆️
... and 5 more

... and 5 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@sunerpy
sunerpy merged commit ad14e2b into v1.0.0-rc Nov 11, 2026
14 checks passed
@sunerpy
sunerpy deleted the fix/follow-adopt-and-scrape-retry branch November 11, 2026 17:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant