Tubeup - 多VOD服务到Archive.org的上传工具
tubeup
使用yt-dlp下载YouTube视频(或yt-dlp支持的任何其他提供商),然后使用python模块internetarchive将其上传到Internet Archive,包括所有元数据。
它由Bibliotheca Anonoma设计,用于将单个视频、播放列表(请注意下面关于上传多个视频的警告)或账户归档到Internet Archive。
先决条件
强烈建议使用Linux或某种POSIX系统(如macOS),最好是租用的VPS,而不是您的个人电脑或手机。
推荐的系统规格:
- 安装了Python 3.8或更高版本和
pipx
的Linux VPS - 2GB内存,100GB存储空间,或者对于单个短视频镜像以外的任何内容,需要更多存储空间。如果您的操作系统驱动器太小,请将其
symlink
到更大的驱动器。
设置和安装
- 安装
ffmpeg
、pip3(通常是python3-pipx
,在Arch中是python-pipx
)和git。 您还需要删除从发行版仓库安装的任何先前可能过时的yt-dlp
,因为您不想使用那么旧的版本。 对于Debian系统,您还需要启用universe
仓库。
对于Debian/Ubuntu:
sudo apt install ffmpeg python3-pipx git ; sudo apt remove yt-dlp
然后运行:
pipx ensurepath
对于Debian以外的发行版,请查阅您的包管理器手册或互联网以获取正确的包名。
- 使用pipx安装所需的python包。 至少需要Python 3.8及以上版本(首选最新的Python版本)。
pipx install tubeup --include-deps
-
如果您还没有Internet Archive账户,请注册一个以授予脚本上传权限。
-
使用您的Internet Archive账户配置
internetarchive
。
ia configure
系统将提示您输入您使用的Internet Archive账户的登录凭据。
配置完成后,您就可以开始上传了。
- 通过在yt-dlp支持的URL上运行脚本来开始归档视频。对于YouTube,这包括账户URL和播放列表URL。
tubeup <url>
-
每个归档的视频都会在Archive.org上获得自己的项目。在以下地址查看您上传的内容:
http://archive.org/details/@YOURUSERNAME
。
在运行之前,请定期升级tubeup
及其依赖项:
pipx upgrade-all
Docker
etnguyen03/docker-tubeup提供了Docker化的tubeup。提供了使用说明。
Windows设置
- 安装WSL2,选择您喜欢的发行版。Ubuntu很受欢迎且得到良好支持。
- 使用Microsoft的Windows Terminal与WSL2实例交互。
- 使用您选择的包管理器完全更新Linux安装。
sudo apt update ; sudo apt upgrade
- 安装python
pipx
和ffmpeg
。 - 按照上面Linux配置指南的步骤4-6安装Tubeup,并为您的Archive.org账户配置
internetarchive
。 - 定期更新您的Linux包和python包。
使用方法
用法:
tubeup <url>... [--username <user>] [--password <pass>]
[--metadata=<key:value>...]
[--cookies=<filename>]
[--proxy <prox>]
[--quiet] [--debug]
[--use-download-archive]
[--output <output>]
[--ignore-existing-item]
tubeup -h | --help
tubeup --version
参数:
<url> yt-dlp兼容的下载URL。
查看yt-dlp文档以获取兼容网站列表。
--metadata=<key:value> 要添加到archive.org项目的自定义元数据。
选项:
-h --help 显示此帮助屏幕。
-p --proxy <prox> 上传时使用代理。
-u --username <user> 提供用户名,用于像Nico Nico Douga这样的网站。
-p --password <pass> 提供密码,用于像Nico Nico Douga这样的网站。
-a --use-download-archive 将视频URL记录到下载存档。
这将只下载存档文件中未列出的视频。
在其中记录所有下载视频的ID。
-q --quiet 只打印错误。
-d --debug 将所有日志打印到stdout。
-o --output <output> yt-dlp输出模板。
-i --ignore-existing-item 不检查archive.org上是否已存在项目
元数据
您可以使用--metadata
标志指定自定义元数据。
例如,默认情况下,此脚本会将您的视频上传到Community Video集合。
您可以使用--metadata
标志指定不同的集合:
tubeup --metadata=collection:opensource_audio <url>
可以向项目添加任何任意元数据,但有一些例外。 您可以在这里了解更多关于archive.org元数据的信息。
集合
Archive.org用户可以上传到四个开放集合:
- Community Audio,标识符为
opensource_audio
。 - Community Software,标识符为
opensource_software
。 - Community Texts,标识符为
opensource
。 - Community Video,标识符为
opensource_movies
。
请注意,上传整个频道时应谨慎。 阅读本指南中关于创建集合的适当部分,如果您要上传一个频道或多个同一主题的频道(例如游戏或园艺),请联系集合工作人员。Internet Archive集合工作人员将为您创建一个集合,或将已上传的基于YouTube上传者名称的任何项目合并到新集合中。
将整个频道倾倒到Community Video中是滥用行为,可能会导致您的账户被锁定。 在进行大规模上传之前,请先与Internet Archive管理员沟通;最好先寻求指导或帮助,而不是违反规则。
如果您不拥有集合,您需要被添加为该集合的管理员才能上传到该集合。 如果您需要帮助,请与集合所有者或工作人员联系。
故障排除
- 某些视频在特定国家受版权限制。使用代理或种子/隐私VPN选项来绕过这种限制。瑞典和德国是绕过地理限制的良好选择。
- 上传时间过长?上传时遇到S3限制?Tubeup专门设计了最长的等待时间才会失败,我们从未见过S3中断时间超过Tubeup设置的极长等待时间。禁用S3超时等待不会让上传成功,反而会将下载的内容留在下载文件夹(
~/.tubeup/downloads
)中,因为下载会立即失败而不是优雅地等待。这些等待是为了防止超时发生的安全措施,不要禁用它们。
关于直播视频的说明
-
yt-dlp无法同时下载,也无法在YouTube上优先下载直播视频而非直播聊天。除非通过禁用直播聊天下载来开始视频下载,但即使这个解决方案可以接受(通过在我们这边设置一个禁用聊天以获取视频的标志,这同样不可接受),也会被下一个问题取消....
-
当使用
--live-from-start
选项时,yt-dlp的失败率不可接受地高,有时结果无法混合,在Twitch的情况下是不完整的,并且不是所有提取器都支持。yt-dlp维护者实际上认为这个标志是实验性的,并表示它不适合归档目的。
不要使用Tubeup来归档YouTube(或任何其他网站)的直播视频。我们无法/不会修复它,这甚至不是我们的问题,而且任何解决方案都令人不快,因为它们涉及更多需要维护的代码复杂性,而且还要仅为了直播视频而禁用一个提取器的直播聊天。
主要贡献者(排名不分先后)
- emijrp:在2012年编写了原始的youtube2internetarchive.py
- Matt Hazinski:在2015年分叉了emijrp的工作,并做了许多自己的改进
- Antonizoon:将脚本改为库调用而不是作为外部脚本运行,并做了许多小改进
- 来自BibAnon内外各种人的小型PR
- vxbinaca:稳定了yt-dlp/internetarchive库调用中的下载/上传,清理了项目输出,收集字幕,并随时间做了许多小改进
- mrpapersonic:添加了检查项目是否已存在于Internet Archive的逻辑,如果存在则跳过摄取
- Jake Johnson:来自Internet Archive,添加了可变集合能力作为标志,将Tubeup从脚本转换为PyPi存储库,ISO兼容的项目日期,修复了其他人无法修复的问题,并做了许多改进
- Refeed:将代码重新基于OOP,将Tubeup本身转变为一个库,添加了下载和上传条形图,并修复了错误
许可证(GPLv3)
版权所有 (C) 2024 Bibliotheca Anonoma
本程序是自由软件:您可以根据自由软件基金会发布的GNU通用公共许可证的条款重新分发和/或修改它,无论是版本3的许可证,还是(根据您的选择)任何后续版本。
本程序的发布是希望它能有用,但没有任何保证;甚至没有适销性或特定用途适用性的隐含保证。详情请参见GNU通用公共许可证。
您应该已经收到了一份GNU通用公共许可证的副本。如果没有,请参阅http://www.gnu.org/licenses/。