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("progress-download", (progress) => console.log(`已下載${progress.toFixed(2)}% `)); downloader.on("progress-transcode", (progress) => console.log(`轉碼${progress.toFixed(2)}%`));downloader.on("start- download", (e) => console.log(`下載開始!on `, e));downloader.on("start-transcode", () => console.log(`轉碼開始!` ));// 取得該影片的所有可用解析度const Resolutions = 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();// 驗證目錄是否存在,如果不存在則創建itensureDirectoryExists(join(__dirname, "./../downloads/chats"));// 保存所有評論writeFileSync(join(__dirname, `./../downloads/chats/${comments.vodID}.chat`), comments.content);} catch (error) {console.log(error);}})() ;
此程式碼對於快速概覽該程式庫非常有用。如果克隆儲存庫,您可以在以下路徑中找到相同的檔案。
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 /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 使用者>", "<iWITCH 記錄.then(async (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.0(downloader.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 等函式庫