เครื่องมือ NodeJS เพื่อดาวน์โหลดคลิปและ VOD เป็นชุด (และเป็นข้อมูลเมตา) จากช่อง Twitch
เครื่องมือนี้สามารถดาวน์โหลดคลิปทั้งหมดจากช่องได้ (ไม่ใช่แค่ 1,000 อันดับแรก) ณ เวลานี้ เครื่องมือนี้ได้รับการทดสอบในช่องใหญ่ๆ หลายช่อง และดูเหมือนว่าจะสามารถรับคลิปทั้งหมดได้ (คลิป 433,000 คลิปจาก hasanabi
)
เพื่อเพิ่มการครอบคลุมคลิปให้สูงสุด เครื่องมือนี้จะไม่อนุญาตให้ Twitch API รายงานมากกว่า 500 คลิปในช่วงเวลาเดียว การแบ่งหน้าเกินจุดนี้ไม่น่าเชื่อถือ (จำกัดไว้ประมาณ 1,000 คลิปแต่แตกต่างกันมาก) เพื่อแก้ไขปัญหานี้ ระยะเวลาที่มีคลิปมากกว่า 500 คลิปจะถูกแบ่งออกเป็น 2 และกระบวนการจะเริ่มต้นใหม่จนกว่าช่วงเวลาหนึ่งจะรายงานคลิปน้อยกว่า 500 คลิป
โครงการนี้ไม่ได้ถูกละทิ้ง แต่ในขณะเดียวกันก็ไม่ได้รับการพัฒนาอย่างแข็งขันเนื่องจากข้อจำกัดด้านเวลาของฉัน
ฉันพบว่าโปรเจ็กต์นี้เติบโตเกินกว่าขอบเขตของชื่อ นั่นคือตัวดาวน์โหลดคลิปเป็นชุด และคิดว่าจำเป็นต้องจัดระเบียบทุกอย่างใหม่ให้เป็นส่วนต่างๆ ที่สามารถจัดการได้มากขึ้น ฉันยังคงคิดว่าแผนการโจมตีขั้นสุดท้ายจะเป็นอย่างไร สำหรับตอนนี้ นี่คือสิ่งที่ฉันกำลังวางแผน:
ส่วนใหญ่แล้วตอนนี้ก็เสร็จสิ้นแล้ว แต่จำเป็นต้องป้องกันไม่ให้สิ่งที่ผู้ใช้ทำกับผู้พัฒนา นอกจากนี้ยังช่วยให้ฉันมุ่งเน้นไปที่การรักษาฟังก์ชันหลักให้ทันสมัยและทดสอบบ่อยครั้ง และยังแชร์โค้ดที่สำคัญที่สุดระหว่างเครื่องมือทั้งหมด
ขณะนี้เครื่องมือนี้จะดาวน์โหลดทุกอย่างจากช่องเท่านั้น และนี่ไม่ใช่กรณีการใช้งานที่พบบ่อยที่สุด (แม้แต่สำหรับฉันด้วยซ้ำ) ฉันวางแผนที่จะเพิ่มสิ่งต่างๆ เช่น ดาวน์โหลด VOD/คลิปเดียว ดาวน์โหลดจากรายการ URL ตัวกรอง CLI ที่ดีกว่า ฯลฯ
เนื่องจากผู้ใช้ส่วนใหญ่กลัว CLI ฉันจึงต้องการนำ GUI โดยใช้ Electron มาใช้กับโปรเจ็กต์นี้ให้เข้าถึงได้สะดวกและใช้งานง่ายยิ่งขึ้น
เครื่องมือนี้ยังสามารถดาวน์โหลดแชท VOD ทั้งหมดจาก Twitch ได้อีกด้วย ทำให้ผู้เล่นสามารถเล่นซ้ำแชททั้งหมดได้เหมือนกับที่คุณทำสำหรับ VOD ที่ยังคงมีให้บริการอยู่
แผนขั้นสูงสุดคือการเปลี่ยนแพ็คเกจฟังก์ชันหลักให้กลายเป็นเครื่องมือสวิสสำหรับการสำรองข้อมูลที่เกี่ยวข้องกับสื่อของ Twitch ช่วยให้นักพัฒนาสามารถเขียนเครื่องมือสำรอง/ดาวน์โหลดของตนเองได้อย่างง่ายดายโดยไม่ต้องกังวลกับคำขอ การเชื่อมต่อหลายรายการ การตรวจสอบสิทธิ์ API การดึงข้อมูล VOD เพลย์ลิสต์ .m3u8 ฯลฯ
youtube-dl
;.ts
เป็น .mp4
;Client-ID
และ Client Secret
(อธิบายไว้ด้านล่าง) - เพื่อเข้าถึง API ของ Twitch ลงทะเบียนแอปพลิเคชันบน Twitch Console คลิก จัดการ และคัดลอก รหัสไคลเอ็นต์ และสร้าง รหัสลับไคลเอ็นต์
รันคำสั่งนี้บนคอนโซลของคุณ:
npm install
รันสคริปต์ผ่าน NPM ด้วย (จำเป็นสำหรับการโหลด dotenv
):
npm run start
ข้อมูลที่จำเป็นทั้งหมดจะได้รับแจ้งเมื่อเริ่มต้นระบบผ่านเทอร์มินัล
แต่ละครั้งที่คุณเรียกใช้สคริปต์นี้ มันจะถามคุณถึงชื่อช่อง จากนั้นยืนยันว่าคุณต้องการดาวน์โหลดทุกอย่างหรือไม่
ต่อไปนี้เป็นคำอธิบายสำหรับแต่ละตัวแปร:
DEBUG
: พิมพ์ข้อมูลจำนวนมหาศาล เพียงแค่เก็บไว้เป็นเท็จสำหรับการใช้งานปกติCLIENT_ID
: รหัสไคลเอ็นต์ Twitch API;CLIENT_SECRET
: ความลับไคลเอนต์ Twitch API;BASEPATH
: ตำแหน่งที่ควรจัดเก็บไฟล์ (คลิป, VOD, แฟรกเมนต์)YOUTUBE_DL_PATH
: โดยที่ไฟล์ปฏิบัติการ youtube-dl ตั้งอยู่;VIDEOS_PARALLEL_DOWNLOADS
: จำนวน VOD Fragment ที่ควรดาวน์โหลดในเวลาเดียวกันCLIPS_PARALLEL_DOWNLOADS
: ควรดาวน์โหลดคลิปจำนวนเท่าใดในเวลาเดียวกันBIN_PATH
: เส้นทางที่จะจัดเก็บไบนารีDEFAULT_PERIOD_HOURS
: ขนาดระยะเวลาเริ่มต้นในหน่วยชั่วโมง (12 เป็นตัวเลขที่ดีสำหรับช่องขนาดใหญ่ ลดค่านี้ลงเพื่อหลีกเลี่ยงการแบ่งช่วงเวลา เพิ่มค่านี้เพื่อลดจำนวน API และเร่งการดึง URL)