ในบทความนี้ เราจะดูวิธีดึงรายละเอียดวิดีโอ YouTube และดาวน์โหลดในรูปแบบต่างๆ โดยใช้โมดูล pafy ไปที่ลิงก์สำหรับเอกสารอย่างเป็นทางการ
ติดตั้งโมดูล pafy ด้วยคำสั่งต่อไปนี้
pip install pafy
หากรันคำสั่งข้างต้น จะได้ผลลัพธ์ดังนี้เมื่อติดตั้งโมดูล pafy สำเร็จ
Collecting pafy Using cached https://files.pythonhosted.org/packages/b0/e8/3516f761558525b00d3eaf73744eed5c267db 20650b7b660674547e3e506/pafy-0.5.4-py2.py3-none-any.whl Installing collected packages: pafy Successfully installed pafy-0.5.4
ตรวจสอบว่าสามารถ import โมดูล pafy ได้หรือไม่ โดยรันคำสั่งต่อไปนี้
import pafy
หากไม่พบข้อผิดพลาด แสดงว่าเสร็จแล้ว มิฉะนั้นติดตั้งโมดูลต่อไปนี้เพื่อแก้ปัญหา
pip install youtube-dl
หากรันคำสั่งข้างต้น จะได้ผลลัพธ์ดังนี้เมื่อติดตั้งโมดูล youtube-dl สำเร็จ
Collecting youtube-dl Using cached https://files.pythonhosted.org/packages/b1/ec/fe552181d6bd05a9e5b6b51f6f7ea4fed9f12 1ce595d788217e59318e47c/youtube_dl-2019.7.30-py2.py3-none-any.whl Installing collected packages: youtube-dl Successfully installed youtube-dl-2019.7.30
รายละเอียดวิดีโอ YouTube
ขั้นตอนในการดึงรายละเอียดวิดีโอโดยใช้ลิงก์
Import โมดูล pafy
เก็บลิงก์วิดีโอไว้ในตัวแปร
เรียกเมธอด pafy.new(url) และเก็บผลลัพธ์ไว้ในตัวแปร
ดึงข้อมูลทั้งหมดเกี่ยวกับวิดีโอโดยใช้ตัวแปรข้างต้น
มาดูตัวอย่างหนึ่ง
## import โมดูล
import pafy
## URL ของวิดีโอ
url = "https://www.youtube.com/watch?v=cr3-J5wDLsM"
## เรียกเมธอด new ของ pafy
result = pafy.new(url)
## ดึงรายละเอียดเช่น title, rating, viewcount, author, length, likes ฯลฯ
print(f"Title: {result.title}")
print(f"Viewcount {result.viewcount}")
print(f"Author: {result.author}")
print(f"Video Length: {result.length}")
print(f"Likes: {result.likes}")
print(f"Dislikes: {result.dislikes}")
print(f"Description: {result.description}")
หากรันโปรแกรมข้างต้น จะได้ผลลัพธ์ดังนี้
Title: Indexing Overview Viewcount 862 Author: Tutorials Point (India) Pvt. Ltd. Video Length: 167 Likes: 6 Dislikes: 1 Description: Indexing Overview Watch more Videos at https://www.tutorialspoint.com/videotutorials/index.htm Lecture By: Mr. Arnab Chakraborty, Tutorials Point India Private Limited
ดาวน์โหลดวิดีโอคุณภาพสูงสุด
Import โมดูล pafy
เก็บลิงก์วิดีโอไว้ในตัวแปร
เรียกเมธอด pafy.new(url) และเก็บผลลัพธ์ไว้ในตัวแปร
ดึงคุณภาพวิดีโอที่ดีที่สุดโดยใช้เมธอด getbest จากตัวแปรก่อนหน้าและเก็บในตัวแปร
เรียกเมธอด download บนตัวแปรก่อนหน้า
ดูตัวอย่างด้านล่าง
## import โมดูล import pafy ## URL ของวิดีโอ url = "https://www.youtube.com/watch?v=cr3-J5wDLsM" ## เรียกเมธอด new ของ pafy result = pafy.new(url) ## ดึงคุณภาพวิดีโอที่ดีที่สุดจาก 'result' โดยใช้ getbest() best_quality_video = result.getbest() ## พิมพ์เพื่อดูคุณภาพวิดีโอ print(best_quality_video) ## ดาวน์โหลดโดยใช้ download() best_quality_video.download()
หากรันโปรแกรมข้างต้น จะได้ผลลัพธ์ดังนี้
normal:mp4@1280x720 26,638,008 Bytes [100.00%] received. Rate: [820 KB/s]. ETA: [0 secs]
คุณสามารถดาวน์โหลดวิดีโอทุกประเภทได้โดยใช้เมธอด getbest() พร้อมระบุ preftype เช่น 3gp, mp4, WebM ฯลฯ ดูไวยากรณ์ด้านล่างและลองเอง
## ขั้นตอนก่อนหน้าเหมือนเดิม best_quality_video = result.getbest(preftype="mp4") ## ขั้นตอนถัดไปเหมือนเดิม
ดาวน์โหลดเสียงคุณภาพสูงสุด
ทำตามกระบวนการเดียวกับการดาวน์โหลดวิดีโอ เรียก getbestaudio() แทน getbest() แล้วดาวน์โหลดด้วยเมธอด download() ลองเองก่อน หากยากดูโค้ดด้านล่าง
import pafy ## URL ของวิดีโอ url = "https://www.youtube.com/watch?v=cr3-J5wDLsM" ## เรียกเมธอด new ของ pafy result = pafy.new(url) ## ดึงคุณภาพเสียงที่ดีที่สุดจาก 'result' โดยใช้ getbestaudio() best_quality_audio = result.getbestaudio() ## พิมพ์เพื่อดูคุณภาพเสียง print(best_quality_audio) ## ดาวน์โหลดโดยใช้ download() best_quality_audio.download()
หากรันโปรแกรมข้างต้น จะได้ผลลัพธ์ดังนี้
audio:m4a@128k 27,518 Bytes [100.00%] received. Rate: [306 KB/s]. ETA: [0 secs] 'Indexing Overview.m4a'