Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ดาวน์โหลดสื่อ/เสียงจาก YouTube ด้วย Python - pafy


ในบทความนี้ เราจะดูวิธีดึงรายละเอียดวิดีโอ 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'