ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

不改核心代码,5 步给抖音批量下载器接一个新下载模式

不改核心代码,5 步给抖音批量下载器接一个新下载模式 不改核心代码5 步给抖音批量下载器接一个新下载模式【免费下载链接】douyin-downloaderA practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音批量下载工具去水印支持视频、图集、合集、音乐(原声)。项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader想让抖音批量下载器把某个博主仅点赞视频收藏夹内容也按你的规则存下来却发现配置里的mode只有 post、like、mix、music 这几个选项直接往下载器主流程里塞逻辑下次升级一更新就全白干。换个思路这个项目自带策略 注册表的扩展点新下载模式写成独立策略文件、登记进注册表就能被主流程自动调度限速、去重、增量判断、进度上报全部白拿核心下载链路一行不动。为什么不用改核心代码策略 注册表说了算把这个抖音下载器想成一列火车下载器主流程是车头负责进站、点火、到站报数每种下载模式是一节车厢靠统一的 coupler 接口耦合器即接口约定挂上就能被拖着跑。车头从不关心后面挂的是作品车厢还是音乐车厢它只认接口。这套机制由三块零件咬合策略基类core/user_modes/base_strategy.py 里的BaseUserModeStrategy定义了每节车厢必须长成的形状——声明mode_name模式名、api_method_name用哪个接口取数实现collect_items把内容抓成统一的作品列表注册表core/user_mode_registry.py 里的UserModeRegistry一张模式名 → 策略类的目录表出厂预置 post / like / mix / music / collect / collectmix 六节车厢并留了公开的register方法给你挂新车厢调度方UserDownloader读 YAML 配置里的mode列表逐个到注册表查策略、实例化、执行全程不关心策略内部。YAML 配置(mode: [post, like, ...]) ↓ UserDownloader 按配置取模式 ↓ UserModeRegistry 查表 → 策略类 ↓ 策略.collect_items() 收集作品 ↓ 下载器公共流水线去重 → 限速 → 增量判断 → 并发下载 → 结果汇总 划重点最妙的是箭头最后一段。只要你的策略返回的作品列表是标准结构跨模式去重、限速rate_limit、增量下载increase、失败重试就自动生效——这些能力长在车头里不在车厢里。如何 5 步接上你的第一个下载模式下面以新增一个comment模式按评论区热度筛选下载为例5 步走完。步骤 1通读基类契约打开 core/user_modes/ 下任意一个现有策略比如post_strategy.py对照基类确认要实现的两个点collect_items返回作品列表apply_filters可以按需追加筛选。效果心里有谱不用碰download_mode主方法。class BaseUserModeStrategy(ABC): mode_name api_method_name async def collect_items(self, sec_uid, user_info): return await self._collect_paged_aweme(sec_uid, user_info)步骤 2新建策略文件在core/user_modes/下新建comment_strategy.py继承基类声明模式名与取数方法名覆盖collect_items返回标准作品列表。效果一节新车厢造好接口形状和老车厢完全一致。class CommentUserModeStrategy(BaseUserModeStrategy): mode_name comment api_method_name get_user_comment async def collect_items(self, sec_uid, user_info): fetcher self.downloader.api_client.get_user_comment return [self._extract_aweme_from_item(item) for item in await fetcher(sec_uid)]⚠️ 避坑api_method_name必须指向api_client上真实存在的方法如果抖音接口给的是评论→作品的中间结构用基类自带的_extract_aweme_from_item把它拍平成作品项别自己造格式。步骤 3把模式登记进注册表在UserModeRegistry.__init__的_registry字典里加一行映射这是唯一的登记动作策略本体全在新文件里。效果调度方查表时能找到你的策略类。self._registry { ..., comment: CommentUserModeStrategy, }步骤 4在配置里触发新模式复制一份config.example.yml改名为config.yml把新 mode 加进列表并按需给数量上限。效果mode是列表写几个就跑几个顺序即执行顺序。mode: [post, comment] number: post: 0 comment: 50步骤 5跑一遍验证执行python run.py 用户主页链接盯两处日志出现User mode started: modecomment下载目录按作者/模式分层的结构里多出comment子文件夹。效果新车厢被正常拖跑去重、限速、进度条都没掉链子。加载失败、分页提前停、数量不生效怎么查现象可能原因处理方法日志Unsupported user mode注册表没登记或 YAML 里的 mode 名与mode_name拼写不一致对齐三处字符串mode:、register键、mode_name日志API method get_xxx not implementedapi_method_name拼错或api_client没有该方法核对 core/api_client.py 方法名缺接口就先补取数方法日志cursor did not advance, stop paging分页游标没前进翻页提前终止检查has_more/max_cursor传参或改用基类_collect_paged_entries非分页取数number上限不生效写错了配置层级或 mode 名写错导致取不到限制值确认number下的键与 mode 名一致mode写成字符串时只跑一个模式全部显示 skipped增量下载判定为已下载过磁盘主文件还在临时把对应 mode 的increase设为false强制重下怎么把多个扩展点串成流水线一个任务里同时配置多个 mode 时UserDownloader会依次执行并共享seen_aweme_ids同一作品在 post 和 comment 里重复出现也只下一次。再叠上项目自带的可选扩展点就是一条完整流水线用户主页 → post like comment 多模式顺序执行 → 跨模式去重 → 增量/重试 → comments 配置落 *_comments.json → transcript 配置做语音转写 → notifications 推 Bark / Telegram / Webhook两个零代码的现成案例评论采集——把comments.enabled打开每个作品自动多出一份*_comments.json含include_replies、max_comments两个旋钮下载完成推送——notifications.providers里加一条 webhook下载一结束就把成功/失败统计推到手机失败也能收到。扩展方案代码量获得的能力适用场景策略 注册表本文一个策略文件 一行注册新数据源自动继承限速/去重/增量/进度要按新规则抓取作品长期复用纯配置组合零只能从内置 mode 和开关里挑快速出活不改代码外部脚本后处理独立脚本完全自由下载完成后的二次加工归档、转存但拿不到下载器内部状态总结与延伸方向给这个抖音批量下载器扩下载模式的本质就三步定契约继承基类、写策略覆盖collect_items、挂注册表一行登记车头永远不用改。接下来可以试试照post_strategy.py加一个仅置顶作品策略复用现成的_is_pinned_aweme判断把comment策略的筛选逻辑接到comments配置上实现按评论数取 Top N把notifications的 webhook 指向自建服务让整条下载流水线的状态进团队群。仓库地址https://gitcode.com/GitHub_Trending/do/douyin-downloaderclone 下来按本文 5 步走一遍即可。【免费下载链接】douyin-downloaderA practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音批量下载工具去水印支持视频、图集、合集、音乐(原声)。项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表