มาเขียนโปรแกรมโหลดไฟล์จาก Youtube กันเถอะ

By Unknown | วันเสาร์, กันยายน 27, 2557

เห็นเว็บดัง ๆ อย่าง keepvid ที่ใช้กันอย่างแพร่หลาย ก็อยากจะลองมาเขียนเองดูมั่ง เริ่มศึกษาจาก html ในหน้า youtube ที่เราจะโหลดก่อนเลยว่าพอมีอะไรให้บ้าง ก็ไปเจอ parameter ตัวหนึ่งใน javascript ที่บอกรายระเอียดเกี่ยวกับไฟล์วิดีโอที่ stream มาให้เราดูกันที่ชื่อว่า adaptive_fmts ดังภาพ

สงสัยป่ะละว่ารู้ได้ไงว่า adaptive_fmts เก็บข้อมูลของวิดีโอไว้ ลองสังเกตดูที่รูปขวามือจิ เห็นมีคำว่า size กับ url อยู่เห็นป่ะ ก็เดาว่าน่าจะเก็บอยู่ในตัวนีเแหละ

เหลือบไปเห็นว่ามีอะไรแปลก ๆ คือ ทุก ๆ ชุดข้อมูลมันจะมีเลข itag เห็นป่ะ ก็เลยเอาไปหาดู มันเป็นเหมือน id ที่บอกว่าวีดีโอมีความละเอียดเท่าไหร่ ไฟล์เป็นชนิดเป็นไหน โดยดูได้จากตารางข้างล่างนี้ (ตารางเก่า อันใหม่มีเพิ่มขึ้นมาเป็นความละเอียด 2K กับ 4K)

How to ?

  1. ดึง video id มาให้จาก อาจจะมาจากลิงค์เต็ม ๆ โดยใช้ regex exp. ดึงเอา
  2. ได้ id มาแล้วเอาไปดึง info มาจาก
    http://www.youtube.com/get_video_info?&video_id=[VIDID]&asv=3&el=detailpage&hl=en_US
    โดยแทนที่ [VIDID] ด้วย id ของวีดีโอ
  3. ดึงค่าของ adaptive_fmts โดยใช้ regex exp. adaptive_fmts=(.[^&]*?)& แล้วใช้คลาส URLDecoder ถอดค่าออกมา
  4. split ค่าที่ได้ด้วย , หลังถอดด้วย URLDecoder จะได้ค่า itag ที่พ่วง url ของวีดีโอแต่ละความละเอียด

แสดงความคิดเห็น