国庆节10月1日
--


博客影视收藏页每次手动搜海报、下载、写 Markdown 太麻烦,于是写了个 Python 脚本 fetch-media.py,只需一条命令就能通过 TMDB API 自动搜索影视信息、下载海报生成封面、写出完整的 bangumi Markdown 文件,搜不到还能切换手动模式。

博客的影视与游戏页面(/movies-games)展示你看过的电影、电视剧和动画。每添加一部作品,需要准备:
| 内容 | 用途 |
|---|---|
.jpg 海报 | 卡片封面图 |
.md | 博客内容文件(含标题、评分、标签、状态等) |
之前得自己去 TMDB 或豆瓣搜海报、下载、手写 frontmatter。现在有了 fetch-media.py,一条命令全搞定。
脚本调用 TMDB API v3(免费无需审核),搜索支持中文,自动获取中文标题、类型标签和海报。
无需安装任何依赖,Python 3 标准库即可运行。
TMDB API key 已内置在脚本中,开箱即用。需要开启代理/加速器才能访问 TMDB。
1# 电影2python scripts/fetch-media.py "星际穿越" -y3
4# 电视剧5python scripts/fetch-media.py "黑暗荣耀" --type=tv -y6
7# 动画8python scripts/fetch-media.py "你的名字" --type=anime -y9
10# 纪录片11python scripts/fetch-media.py "地球脉动" --type=documentary -y-y 模式下自动选第一个搜索结果,status 默认设为「看过」,跳过所有确认。
1python scripts/fetch-media.py "唐人街探案"交互模式下可以:
1# 直接指定状态和评分2python scripts/fetch-media.py "让子弹飞" -y --status=2 --score=93
4# 手动模式 + 提供封面 URL5python scripts/fetch-media.py "冷门电影" -y --cover-url=https://xxx.com/poster.jpg| 参数 | 说明 | 默认值 |
|---|---|---|
| 第一个参数 | 影视名称 | 必填 |
-y / --yes | 快速模式,自动第一个结果 | 关闭 |
--type=xxx | 指定类型:movie / tv / anime / documentary | 自动判断 |
--status=x | 状态:1想看 2看过 3在看 4搁置 5抛弃 | 2 |
--score=x | 评分 0-10 | 0 |
--cover-url=xxx | 手动模式下的封面图 URL | 空 |
--api-key=xxx | TMDB API key(覆盖内置 key) | 内置 key |
1$ python scripts/fetch-media.py "星际穿越" -y2
3搜索: 星际穿越4
5搜索结果:6
7 [ 1] [电影] 星际穿越 (2014)8 未来的地球黄沙遍野,农作物相继枯萎灭绝。人类不再像从前...9 [ 2] [电影] 走进星际穿越 (2015)10 该纪录片分为14个片段...11 [ 3] [电影] 星际穿越:诺兰的奥德赛 (2014)12
13快速模式: 自动选择第 1 个14
15获取详情...16
17==================================================18 标题: 星际穿越19 原名: Interstellar20 类型: 电影 → subcategory: movie21 年份: 201422 标语: 爱是一种力量,能让我们超越时空的维度来感知它的存在23 标签: 冒险, 剧情, 科幻24==================================================25
26 下载封面: 星际穿越.jpg27 封面 [100%] =========================> 86 KB/86 KB28 [MD] 星际穿越.md29
30完成: 星际穿越1$ python scripts/fetch-media.py "写给阿嬷的情书" -y2
3搜索: 写给阿嬷的情书4 TMDB 未找到结果,切换到手动模式5
6快速模式: subcategory=movie, status=2(看过), score=07 封面: [无]8 [MD] 写给阿嬷的情书.md9
10完成: 写给阿嬷的情书搜不到时自动降级为手动模式,MD 照样生成。后续手动补充封面图即可。
1scripts/img-anime/2└── 星际穿越.jpg ← 海报封面(需手动上传 CDN)3
4src/content/bangumi/anime/5└── 星际穿越.md ← 博客内容文件1---2title: 星际穿越3name_cn: 星际穿越4category: anime5subcategory: movie6status: 27image: https://img.tsh520.cn/file/blog/bangumi/星际穿越.jpg8score: 09tags:10 - 冒险11 - 剧情12 - 科幻13published: 2026-05-1814---image 字段指向 CDN 地址 https://img.tsh520.cn/file/blog/bangumi/| 值 | 含义 |
|---|---|
1 | 想看 |
2 | 看过 |
3 | 在看 |
4 | 搁置 |
5 | 抛弃 |
脚本下载的海报保存在 scripts/img-anime/ 目录。需要手动上传到 CDN 的 https://img.tsh520.cn/file/blog/bangumi/ 路径,文件名保持一致即可。
例如:
scripts/img-anime/星际穿越.jpghttps://img.tsh520.cn/file/blog/bangumi/星际穿越.jpgimage 字段已自动填写该 URL,无需修改urlopen error timed out?#TMDB API 需要代理。开启加速器/代理后再运行。
TMDB 作为国外数据库,部分华语冷门电影可能未收录。脚本会自动降级为手动模式,不影响 MD 生成。
去掉 -y 用交互模式,手动选择正确的搜索结果。
1python scripts/fetch-media.py "唐人街探案"2# → 选择序号: 2 (电影版)脚本会自动跳过已有 MD 文件,不会覆盖。如需重新生成,先手动删除旧的 MD。
修改脚本顶部的 CDN_BASE 变量即可。
| 操作 | 命令 |
|---|---|
| 快速添加电影 | python scripts/fetch-media.py "片名" -y |
| 添加电视剧 | python scripts/fetch-media.py "剧名" --type=tv -y |
| 添加动画 | python scripts/fetch-media.py "动画名" --type=anime -y |
| 交互模式手动选择 | python scripts/fetch-media.py "片名" |
| 指定评分和状态 | python scripts/fetch-media.py "片名" -y --score=9 --status=2 |
一条命令,海报 + MD 全部到位,再也不用手动搜图写 frontmatter 了。
如果你喜欢,那么欢迎来到我的世界!
了解更多暂未播放



"所有的相遇都是久别重逢。"—— 未知


