ห้องสมุดสำหรับดาวน์โหลดวิดีโอ วิดีโอสำหรับคำบรรยาย และความคิดเห็นจาก Twitch
$ npm ใน twitch-video-downloader
จำเป็นต้องใช้ไลบรารี FFMPEG เพื่อแปลงไฟล์วิดีโอจาก m3u8 เป็น mkv
นำเข้า { เข้าร่วม } จาก "path"; นำเข้า { writeFileSync } จาก "fs"; นำเข้า { VideoDownloader, SureDirectoryExists } จาก "twitch-video-downloader"; (async () => {try {const downloader = new VideoDownloader ("https ://www.twitch.tv/videos/800558240");downloader.on("progress-download", (ความคืบหน้า) => console.log(`ดาวน์โหลด ${progress.toFixed(2)}%`));downloader.on("progress-transcode", (progress) => console.log(`Transcoded ${progress.toFixed(2)} %`));downloader.on("start-download", (e) => console.log(`ดาวน์โหลดเริ่มต้นแล้ว! บน `, e));downloader.on("start-transcode", () => console.log (`เริ่มการแปลงโค้ดแล้ว!`));// รับความละเอียดทั้งหมดที่มีสำหรับความละเอียด videoconst นี้ = รอการดาวน์โหลด ข้อมูลและเส้นทางของ hls filesconsole.log ที่ดาวน์โหลด (ดาวน์โหลด); // วิดีโอที่แปลงรหัสจาก HLS เป็น MKVconst transcode = รอ downloader.transcode(download);// ข้อมูลและเส้นทางของ trancoded videoconsole.log(transcode);// ดาวน์โหลดความคิดเห็น chatconst แบบออฟไลน์ = await downloader.downloadChat();// ตรวจสอบว่ามีไดเร็กทอรีอยู่ หากไม่ได้สร้าง itensureDirectoryExists(join( __dirname, "./../downloads/chats"));// บันทึกความคิดเห็นทั้งหมดwriteFileSync(join(__dirname, `./../downloads/chats/${comments.vodID}.chat`), comment.content);} catch (ข้อผิดพลาด) {console.log(error);}})();
รหัสนี้มีประโยชน์มากในการดูภาพรวมของไลบรารีโดยย่อ หากคุณโคลนพื้นที่เก็บข้อมูล คุณจะพบไฟล์เดียวกันนี้ในเส้นทางต่อไปนี้
twitch-video-downloader │ └───example │ index.ts
เมื่อติดตั้งการพึ่งพาโครงการแล้ว
ติดตั้ง $npm
คุณสามารถเล่นกับไฟล์นี้ได้โดยการแก้ไขและดาวน์โหลดวิดีโอที่คุณสนใจ ในการรันสคริปต์ให้รันคำสั่งต่อไปนี้
$ npm เริ่มรัน: ดู
หากคุณต้องการทราบทุกสิ่งที่ไลบรารีกำลังทำอยู่ ให้รันคำสั่งต่อไปนี้เพื่อรันสคริปต์ในโหมดแก้ไขข้อบกพร่อง
$ npm วิ่ง 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", ตัวเลือกเริ่มต้น);
ตัวเลือก | คำนิยาม | ค่าเริ่มต้น |
---|---|---|
รหัสลูกค้า | นี่คือพารามิเตอร์ที่ใช้โดยแพลตฟอร์ม twitch ค่าจะเท่ากันไม่ว่าจะใช้บัญชีใดก็ตาม ดังนั้นคุณจึงไม่ควรเปลี่ยน | kimne78kx3ncx6brgo4mv6wki5h1ko |
แก้ปัญหา | หากต้องการเริ่มไลบรารีในโหมดดีบัก ไฟล์ debug.log จะถูกสร้างขึ้นโดยที่ทุกสิ่งที่ไลบรารีทำอยู่จะถูกบันทึกไว้ | เท็จ |
โฟลเดอร์ดาวน์โหลด | โฟลเดอร์ที่จะบันทึกวิดีโอ ค่าเริ่มต้นคือไดเร็กทอรีการทำงาน | กระบวนการ.cwd() |
oAuthToken | พารามิเตอร์นี้มีความสำคัญมากเนื่องจากคุณสามารถดาวน์โหลดวิดีโอสำหรับสมาชิกเท่านั้น ไม่ใช่เรื่องมหัศจรรย์ ก่อนที่คุณจะต้องมีสิทธิ์เข้าถึงวิดีโอในบัญชี Twitch ของคุณก่อนจึงจะสามารถดาวน์โหลดได้ | - |
พูลลิมิต | เป็นการดาวน์โหลดแบบขนานสูงสุดเมื่อดาวน์โหลดวิดีโอ | 20 |
คุณมีสองทางเลือก คุณสามารถดึงข้อมูลจากคุกกี้ Twitch เมื่อคุณเข้าสู่ระบบแล้ว ฟิลด์นี้เรียกว่า 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 } จาก "twitch-video-downloader";const loginDefaultOptions: LoginOptions = {authy_token: "", // นี่เป็นตัวเลือกเดียวที่มีประโยชน์ ใช้เมื่อคุณเปิดใช้งาน Two-factor แล้ว ให้คัดลอกโค้ดจากแอปพลิเคชัน Authenticator ตรวจสอบให้แน่ใจว่าโค้ดยังคงใช้ได้เมื่อคุณรันเมธอดนี้client_id: "kimne78kx3ncx6brgo4mv6wki5h1ko",remember_me: true,}const twitchOAuth = new TwitchOAuth();twitchOAuth.login("<YOUR TWITCH USER>", "<YOUR PASSWORD>", loginDefaultOptions ).แล้ว(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: สตริง คุณภาพ: สตริง โฟลเดอร์พาธ:สตริง} |
เริ่มต้นการแปลง | เหตุการณ์จะถูกเรียกเมื่อการแปลงรหัสเริ่มต้นขึ้น | เป็นโมฆะ |
ตัวอย่างการลงทะเบียนผู้ฟังของคุณ
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");downloader.on("<EVENT NAME>", (param) => console.log(param));
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");const Resolution = รอ 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 Resolution = await downloader.getVideoResolutionsAvailable();// Donwload ความละเอียดเฉพาะ const download = await downloader.download(solutions[0]) ;
เมื่อฟังก์ชันเสร็จสิ้นแล้ว ก็จะส่งคืนอ็อบเจ็กต์โดยมีข้อมูลดังต่อไปนี้
{vodID: '800558240',คุณภาพ: '1080p60',folderPath: 'D:Projectstwitch-video-downloaderdownloadsvideos800558240hls1080p60'}
ฟังก์ชั่นนี้ช่วยให้คุณสามารถแปลงรหัสวิดีโอได้ เนื่องจากพารามิเตอร์ที่คุณต้องส่งออบเจ็กต์ที่มีคุณภาพของฟิลด์ ความละเอียด และเส้นทางโฟลเดอร์ ฟิลด์นี้จะถูกส่งกลับด้วยวิธีการดาวน์โหลด
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");const Resolution = await downloader.getVideoResolutionsAvailable();const download = await downloader.download(solutions[0]);// Trancoded วิดีโอจากการแปลง HLS เป็น MKVconst = รอ downloader.transcode (ดาวน์โหลด);
ฟังก์ชันนี้ยังได้รับอาร์กิวเมนต์ที่สองที่เป็นทางเลือกในรูปแบบของออบเจ็กต์ที่มีการตั้งค่าเพิ่มเติม
const transcode = รอ downloader.transcode (ดาวน์โหลด, {deleteHslFiles: false, // Default valueoutputPath: "<WORKING DIRECTORY>/downloads/videos/<VIDEO ID>/mkv/", // ค่าเริ่มต้น});
เมื่อฟังก์ชันเสร็จสิ้นแล้ว ก็จะส่งคืนอ็อบเจ็กต์โดยมีข้อมูลดังต่อไปนี้
{vodID: '800558240',คุณภาพ: '1080p60',filePath: 'D:Projectstwitch-video-downloaderdownloadsvideos800558240mkv1080p60.mkv'}
ฟังก์ชั่นนี้ให้คุณดาวน์โหลดการแชทของวิดีโอ การส่งคืนฟังก์ชันคือข้อมูลดิบจาก twitch api
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");// ดาวน์โหลดแชทออฟไลน์ ความคิดเห็น const = รอ downloader.downloadChat();
โค้ดบางส่วนมาจากไลบรารีเช่น twitch-m3u8 และ twitch-tools