twitch video downloader
1.0.0
用于下载视频、订阅者视频和来自 twitch 的评论的库。
$ npm 我抽搐视频下载器
将视频文件从 m3u8 转码为 mkv 需要 FFMPEG 库
从“path”导入{ join };从“fs”导入{ writeFileSync };从“twitch-video-downloader”导入{ VideoDownloader,ensureDirectoryExists };(async () => {try {const downloader = new VideoDownloader(“https ://www.twitch.tv/videos/800558240");downloader.on("进度下载", (进度) => console.log(`已下载 ${progress.toFixed(2)}%`));downloader.on("progress-transcode", (progress) => console.log(`已转码 ${progress.toFixed(2)} %`));downloader.on("start-download", (e) => console.log(`下载开始!在 `, e));downloader.on("start-transcode", () => console.log(`转码开始!`));// 获取该视频的所有可用分辨率 const reports = wait downloader.getVideoResolutionsAvailable();// 下载特定分辨率 const download = wait downloader.download(resolutions[0] );// 下载的hls文件的信息和路径console.log(download);// 转码后的视频,从HLS到MKVconst transcode = wait downloader.transcode(download);// 转码后的信息和路径 videoconsole.log(transcode);// 下载离线聊天 const comments = wait downloader.downloadChat();// 验证目录是否存在,如果不存在则创建 iensureDirectoryExists(join( __dirname, "./../downloads/chats"));// 保存所有评论writeFileSync(join(__dirname, `./../downloads/chats/${comments.vodID}.chat`), comments.content);} catch (错误) {console.log(错误);}})();
此代码对于快速概览该库非常有用。如果克隆存储库,您可以在以下路径中找到相同的文件。
twitch-video-downloader │ └───example │ index.ts
安装项目依赖项后
$ npm 安装
您可以通过修改该文件并下载您感兴趣的视频来播放该文件。要运行脚本,请运行以下命令
$ npm 运行开始:watch
如果您想了解库正在执行的所有操作,请执行以下命令以调试模式运行脚本
$ npm run dev:watch
或者您可以在选项中传递调试参数
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240", {debug: true});
VideoDownloader是库的主类,它是开始下载视频或聊天的入口点
const defaultOptions = {clientID: "kimne78kx3ncx6brgo4mv6wki5h1ko",debug: false,downloadFolder: process.cwd(),oAuthToken: "",poolLimit: 20};const downloader = new VideoDownloader("https://www.twitch.tv/videos /800558240", 默认选项);
选项 | 定义 | 默认 |
---|---|---|
客户端ID | 这是twitch平台使用的参数,无论使用什么帐户,该值都是相同的,因此您可能不应该更改它 | kimne78kx3ncx6brgo4mv6wki5h1ko |
调试 | 要在调试模式下启动库,将创建一个 debug.log 文件,其中将保存库正在执行的所有操作。 | 错误的 |
下载文件夹 | 将保存视频的文件夹。默认是工作目录 | 进程.cwd() |
oAuthToken | 此参数非常重要,因为通过此参数,您只能为订阅者下载视频。这并不神奇,您必须已经可以访问您的 twitch 帐户中的视频才能下载它 | ”” |
池限制 | 它们是下载视频时的最大并行下载数 | 20 |
您有两个选择,您可以在登录后从 Twitch cookie 中提取它,该字段称为 auth-token。以下是您必须遵循的步骤:
* Sign in to your Twitch account * With the Twitch tab open, open the chrome devtools (press f12) * With the devtools window open, now go to the application tab * Select 'https://www.twitch.tv' in the Cookies section * And look in the 'name' column for the field that says 'auth-token' and copy what is in the 'value' column
第二种选择(仍在开发中,不推荐)是使用 TwitchOAuth 类
import { TwitchOAuth, LoginOptions } from "twitch-video-downloader";const loginDefaultOptions: LoginOptions = {authy_token: "", // 这是唯一有用的选项。当您激活双因素时使用它,从身份验证器应用程序复制代码。确保运行此方法时代码仍然有效client_id: "kimne78kx3ncx6brgo4mv6wki5h1ko",remember_me: true,}const twitchOAuth = new TwitchOAuth();twitchOAuth.login("<您的 TWITCH 用户>", "<您的密码>", loginDefaultOptions ).then(异步 (oAuthToken) => {const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240", {oAuthToken: oAuthToken,});...});
Warning: THIS CLASS IS NOT YET FINISHED DEVELOPING, so problems may arise. And we have not yet developed the option to solve the catchas when Twitch asks you to log in IT IS RECOMMENDED THAT YOU USE THE FIRST METHOD TO GET YOUR OAUTH TOKEN FROM COOKIES BEFORE THIS METHOD
活动名称 | 描述 | 参数 |
---|---|---|
进度下载 | 每次下载进度更新时都会调用该事件 | 小数 |
进度转码 | 每次更新转码进度时都会调用该事件 | 小数 |
开始下载 | 下载开始时调用该事件 | { vodID:字符串,质量:字符串,folderPath:字符串} |
开始转码 | 转码开始时调用该事件 | 空白 |
注册听众的示例
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");downloader.on("<事件名称>", (param) => console.log(param));
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");const reports = wait downloader.getVideoResolutionsAvailable();
该函数返回一个包含以下信息的数组
[{质量:'1080p60',分辨率:'1920x1080',url:'https://...index-dvr.m3u8'},{质量:'1080p',分辨率:'1920x1080',url:'https: //...index-dvr.m3u8'},{质量: '720p60',分辨率: '1080x720',url:'https://...index-dvr.m3u8'},...]
此函数允许您下载特定分辨率,作为参数,您必须传递具有质量、分辨率和 url 字段的对象
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");const reports = wait downloader.getVideoResolutionsAvailable();// 下载特定分辨率 const download = wait downloader.download(resolutions[0]) ;
函数执行完毕后,将返回一个包含以下信息的对象
{vodID:'800558240',质量:'1080p60',folderPath:'D: Projects twitch-video-downloader downloads videos 800558240 hls 1080p60'}
此函数允许您对视频进行转码,作为参数,您必须传递一个具有质量、分辨率和文件夹路径字段的对象,该字段由下载器方法返回
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");const reports = wait downloader.getVideoResolutionsAvailable();const download = wait downloader.download(resolutions[0]);// 转码视频,从 HLS 到 MKVconst transcode = wait downloader.transcode(download);
该函数还接收带有附加设置的对象形式的可选第二个参数。
const transcode = wait downloader.transcode(download, {deleteHslFiles: false, // 默认值outputPath: "<WORKING DIRECTORY>/downloads/videos/<VIDEO ID>/mkv/", // 默认值});
函数执行完毕后,将返回一个包含以下信息的对象
{vodID:'800558240',质量:'1080p60',文件路径:'D: Projects twitch-video-downloader downloads videos 800558240 mkv 1080p60.mkv'}
此功能允许您下载聊天视频。函数的返回是来自 twitch api 的原始数据
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");// 下载离线聊天 const comments = wait downloader.downloadChat();
一些代码来自 twitch-m3u8 和 twitch-tools 等库