you-get -I 批量下载:一个文本文件搞定100条URL
【免费下载链接】you-get:arrow_double_down: Dumb downloader that scrapes the web项目地址: https://gitcode.com/GitHub_Trending/yo/you-get
你盯着终端里第47次粘贴的URL,终于意识到这活儿完全可以用脚本糊弄过去。更糟的是,你不确定下一条会不会和上一条重复。you-get 的-I参数就是为这一刻准备的:它让工具直接从文本文件读入一批下载 URL 列表,一条命令批量下载,不用再逐个复制粘贴。
它到底做了什么
-I是--input-file的缩写。机制很简单:you-get 打开你指定的文本文件,把每一行拆成一条独立 URL,依次塞进下载队列。打个比方,这相当于把一沓快递单号交给快递员,让他按单顺序取件。每条 URL 后续走的流程和你手动粘贴进命令行完全一样:打印站点、标题、画质,再跑进度条。
需要留意的是,它处理的是"一行一个视频",不是"一个链接拆出整个播放列表"。相关逻辑在 src/you_get/common.py 的参数解析部分,找到-I那一行就能看懂。
从零跑通一次
先准备清单文件,格式极简:一行一个 URL,空行和#开头的注释都可以混在里面。
# urls.txt,保存为 UTF-8 编码 # 第一讲 https://example.com/video/1 https://example.com/video/2确认机器上有 you-get,没有就先装一个:
pip install you-get然后执行核心命令:
you-get -I urls.txt就这样。它会按文件里的顺序逐条下载,每条照常打印站点、标题和进度条。想让文件落到指定目录而不是当前目录,加上-o即可:
you-get -I urls.txt -o ~/Videos/batch跑通之后,其实你已经完成了80%的工作,剩下20%是让这条命令更贴合你的环境。
让它更顺手
如果你要备份一整门课,希望文件按编号整齐排列,可以加--pre lecture给每个文件名加前缀,排序时一目了然。
如果目标站点在你的网络环境下打不开,在命令末尾接上-x 127.0.0.1:8080指定代理。它对列表里所有 URL 统一生效,不用逐条处理。
如果视频标题里有中文或特殊字符、保存后文件名乱码,把终端切到 UTF-8 环境再跑,比如export PYTHONUTF8=1,或者按报错提示设置 locale。
还有一个容易忽略的点:已下载的文件会自动跳过,想强制重新下载时才加-f,否则会覆盖同名文件。
踩坑速查
整个列表没反应,提示 reading playlist from a file is unsupported:你同时加了-l。-I和-l不兼容,去掉-l重跑即可。
前几条正常,后面某条卡住或报错:多为限速或网络抖动。you-get 支持断点续传,直接重跑同一条命令,已完成的会自动跳过。
报 Unicode 错误:当前环境不支持非 ASCII 文件名。按提示设置 UTF-8 locale(Linux 上LC_ALL=C.UTF-8)再执行。
边界与替代
说清楚边界:-I只收单视频 URL,一个链接对应的整个播放列表它不会替你展开。要下完整播放列表,直接给播放列表主 URL 并加-l,例如you-get -l 'https://example.com/playlist/1',把-I留给"一堆零散单链接"的场景。
它也是串行执行的,没有多线程。链接实在多、带宽又够时,可以把清单文件交给 GNU Parallel 开多进程:
grep -E '^https?://' urls.txt | parallel -j 4 you-get {} -o ~/Videos/batch收尾
今晚把攒下的 URL 存成 urls.txt,跑一遍you-get -I urls.txt -o ~/Videos/batch,明天打开目录,文件已经排好队了。哪一步卡住了,回来告诉我。
【免费下载链接】you-get:arrow_double_down: Dumb downloader that scrapes the web项目地址: https://gitcode.com/GitHub_Trending/yo/you-get
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考