เห็นเว็บดัง ๆ อย่าง keepvid ที่ใช้กันอย่างแพร่หลาย ก็อยากจะลองมาเขียนเองดูมั่ง เริ่มศึกษาจาก html ในหน้า youtube ที่เราจะโหลดก่อนเลยว่าพอมีอะไรให้บ้าง ก็ไปเจอ parameter ตัวหนึ่งใน javascript ที่บอกรายระเอียดเกี่ยวกับไฟล์วิดีโอที่ stream มาให้เราดูกันที่ชื่อว่า adaptive_fmts ดังภาพ
สงสัยป่ะละว่ารู้ได้ไงว่า adaptive_fmts เก็บข้อมูลของวิดีโอไว้ ลองสังเกตดูที่รูปขวามือจิ เห็นมีคำว่า size กับ url อยู่เห็นป่ะ ก็เดาว่าน่าจะเก็บอยู่ในตัวนีเแหละ
เหลือบไปเห็นว่ามีอะไรแปลก ๆ คือ ทุก ๆ ชุดข้อมูลมันจะมีเลข itag เห็นป่ะ ก็เลยเอาไปหาดู มันเป็นเหมือน id ที่บอกว่าวีดีโอมีความละเอียดเท่าไหร่ ไฟล์เป็นชนิดเป็นไหน โดยดูได้จากตารางข้างล่างนี้ (ตารางเก่า อันใหม่มีเพิ่มขึ้นมาเป็นความละเอียด 2K กับ 4K)
How to ?
- ดึง video id มาให้จาก อาจจะมาจากลิงค์เต็ม ๆ โดยใช้ regex exp. ดึงเอา
- ได้ id มาแล้วเอาไปดึง info มาจาก
http://www.youtube.com/get_video_info?&video_id=[VIDID]&asv=3&el=detailpage&hl=en_US
โดยแทนที่[VIDID]
ด้วย id ของวีดีโอ - ดึงค่าของ adaptive_fmts โดยใช้ regex exp.
adaptive_fmts=(.[^&]*?)&
แล้วใช้คลาส URLDecoder ถอดค่าออกมา - split ค่าที่ได้ด้วย
,
หลังถอดด้วย URLDecoder จะได้ค่า itag ที่พ่วง url ของวีดีโอแต่ละความละเอียด
แสดงความคิดเห็น