NodeJS 工具,用于从 Twitch 频道批量下载剪辑和 VOD(及其元数据)。
该工具可能可以下载某个频道的所有剪辑(不仅是前 1000 个)。目前,该工具已在多个大频道上进行了测试,似乎能够获取所有剪辑(来自hasanabi
的 433k 剪辑)。
为了最大限度地提高剪辑覆盖范围,该工具不允许 Twitch API 在单个时间段内报告超过 500 个剪辑。超出此点的分页是不可靠的(上限约为 1k 剪辑,但变化很大)。为了解决此问题,超过 500 个剪辑的时段将被分为 2 个,并且该过程将重新启动,直到单个时段报告的剪辑少于 500 个。
这个项目并没有被放弃,但同时由于我的时间限制而没有被积极开发。
我意识到该项目的发展超出了其名称的范围:批量剪辑下载器,并认为我需要将所有内容重新组织成更易于管理的部分。我仍在弄清楚最终的攻击计划是什么,目前我正在计划:
目前这大部分已完成,但需要将用户的内容与开发人员的内容分开。这也使我能够专注于保持核心功能最新和经常测试,并在所有工具之间共享最重要的代码
目前,该工具只能从频道下载所有内容,这不是最常见的用例(即使对我来说也是如此)。我计划添加以下内容:下载单个 VOD/剪辑、从 URL 列表下载、过滤器、更好的 CLI 等。
由于大多数用户害怕 CLI,我想使用 Electron 实现一个 GUI,使这个项目更易于访问和用户友好。
该工具还能够从 Twitch 下载整个 VOD 聊天内容,允许玩家重播整个聊天内容,就像播放仍然可用的 VOD 一样。
最终计划是将核心功能包转变为 Twitch 媒体相关备份的瑞士刀工具,允许任何开发人员轻松编写自己的备份/下载工具,而不必担心请求、多个连接、API 身份验证、获取 VOD .m3u8 播放列表等
youtube-dl
;.ts
转码为.mp4
;Client-ID
和Client Secret
(如下所述)- 访问 Twitch 的 API。 在 Twitch 控制台上注册应用程序,单击管理并复制客户端 ID并生成客户端密钥。
在控制台上运行此命令:
npm install
通过 NPM 运行脚本(这是加载dotenv
所必需的):
npm run start
启动时将通过终端提示所需的所有信息。
每次运行此脚本时,它都会询问您通道名称,然后确认是否要下载所有内容。
以下是每个变量的描述:
DEBUG
:打印一大堆信息,正常使用时保持 false 即可;CLIENT_ID
:Twitch API 客户端 ID;CLIENT_SECRET
:Twitch API 客户端密钥;BASEPATH
:文件(剪辑、VOD、片段)应存储的位置;YOUTUBE_DL_PATH
:youtube-dl 可执行文件所在的位置;VIDEOS_PARALLEL_DOWNLOADS
:应同时下载多少个 VOD 片段。CLIPS_PARALLEL_DOWNLOADS
:应同时下载多少个剪辑;BIN_PATH
:存储二进制文件的路径;DEFAULT_PERIOD_HOURS
:默认周期大小(以小时为单位)(对于大通道来说,12 是一个不错的数字。降低此值以避免周期分割,增加此值以减少 API 计数并加速 URL 获取)。