การดาวน์โหลดหลายไฟล์ด้วย youtube-dl


45

ฉันใช้ youtube-dl เพื่อดาวน์โหลดไฟล์จาก YouTube ฉันลองดาวน์โหลดหลายไฟล์แล้ว แต่มันไม่ได้ผลสำหรับฉัน ฉันต้องเปิดเทอร์มินัลหลายเครื่องและเริ่มใหม่ทุกครั้งที่ฉันต้องการดาวน์โหลดวิดีโอ

คุณสามารถช่วยฉันดาวน์โหลดหลายไฟล์ด้วยหน้าต่างเทอร์มินัลเดียวโดยระบุ URL ทั้งหมดพร้อมกัน ฉันใช้ Ubuntu 12.04 64- บิต


1
ไม่ใช่คำตอบสำหรับคำถามของคุณ แต่คนอื่นอาจสะดุดกับสิ่งนี้ หากวิดีโอเกี่ยวข้องกันโปรดทราบว่า youtube-dl สามารถดาวน์โหลดวิดีโอทั้งหมดจากเพลย์ลิสต์ผู้ใช้หรือช่อง
Dennis

ดูคำตอบด้านล่าง (ไม่ใช่ upvoted มากที่สุดในปัจจุบัน) แนะนำเพียงเพิ่มช่องว่างระหว่าง url และคุณเสร็จแล้ว
gota

คำตอบ:


54

ทางลัด

หากวิดีโอทั้งหมดอยู่ในเพลย์ลิสต์เดียวกันหรือช่องเดียวกันคุณสามารถประหยัดเวลาได้โดยใช้ทางลัดต่อไปนี้

เพลย์ลิส

youtube-dl -f FORMAT -ciw -o "%(title)s.%(ext)s" -v <url-of-playlist>

... ที่<url-of-playlist>จะถูกแทนที่ด้วย URL ของรายการเพลงและแทนที่FORMATด้วยรูปแบบวิดีโอใด ๆ 18ยกตัวอย่างเช่น คุณสามารถใช้-Fตัวเลือกเพื่อดูรูปแบบที่ถูกต้องทั้งหมดเช่นนี้

youtube-dl -F 'http://www.youtube.com/some-alphanumeric-string'

ดาวน์โหลดส่วนหนึ่งของเพลย์ลิสต์ตั้งแต่เริ่มต้นแบทช์จนถึงสิ้นสุดแบทช์

youtube-dl -f FORMAT -ci --playlist-start NUMBER --playlist-end NUMBER <url-of-playlist>  

... ซึ่ง<url-of-playlist>จะถูกแทนที่ด้วย URL ของเพลย์ลิสต์แทนที่FORMATด้วยรูปแบบวิดีโอที่มีอยู่ตัวอย่างเช่น18และNUMBERเป็นจำนวนของวิดีโอในเพลย์ลิสต์เพื่อเริ่ม / สิ้นสุดการดาวน์โหลดที่

ช่อง

youtube-dl -f FORMAT -ciw -o "%(title)s.%(ext)s" -v <url-of-channel>

... ที่<url-of-channel>จะถูกแทนที่ด้วย URL ของช่องและแทนที่FORMATด้วยรูปแบบวิดีโอใด ๆ 18ยกตัวอย่างเช่น

วิดีโอไม่ได้อยู่ในเพลย์ลิสต์หรือช่องเดียวกัน

ขั้นแรกสร้างแบตช์ไฟล์ซึ่งเป็นไฟล์ข้อความที่มีรายการ URL ของวิดีโอจาก YouTube ที่คุณต้องการดาวน์โหลด ควรจัดเรียง URL ในรายการที่มีเพียงหนึ่ง URL เท่านั้นและไม่มีสิ่งใดในแต่ละบรรทัดพร้อมบรรทัดใหม่สำหรับแต่ละ URL ในรายการ บันทึกไฟล์แบตช์ด้วยชื่อที่จำได้ง่ายเช่น batch-file.txt หากไฟล์หลายไฟล์ทั้งหมดอยู่ในเพลย์ลิสต์ช่องหรือหน้าเว็บผู้ใช้เดียวกันใน YouTube คุณสามารถสร้างไฟล์ข้อความที่มีรายการที่มีลิงก์ทั้งหมดในหน้านั้นโดยเรียกใช้คำสั่งต่อไปนี้:

sudo apt install jq  
youtube-dl -j --flat-playlist "https://<yourYoutubeWebpage>" | jq -r '.id' | sed 's_^_https://youtu.be/_' > batch-file.txt

จากการทำงานของเครื่อง:

youtube-dl -ct --simulate --batch-file='/path/to/batch-file.txt'

นี่คือคำสั่งพื้นฐาน แต่คุณต้องเพิ่มรูปแบบของวิดีโอที่คุณต้องการดาวน์โหลดมิฉะนั้นคุณอาจพบว่าตัวเองกำลังดาวน์โหลดวิดีโอด้วยรูปแบบที่คุณไม่ต้องการ ดังนั้นก่อนอื่นจำลองการดาวน์โหลดของคุณเพื่อดูว่ามีรูปแบบที่คุณต้องการหรือไม่:

youtube-dl -ct -f 34 --simulate 'http://www.youtube.com/some-alphanumeric-string'

requested format not availableหากรูปแบบวิดีโอไม่พร้อมใช้งานคุณจะได้รับข้อผิดพลาดที่พูดว่า: หากรูปแบบวิดีโอพร้อมใช้งานคุณจะไม่ได้รับข้อความแสดงข้อผิดพลาดเมื่อคุณใช้--simulateตัวเลือก คุณยังสามารถเพิ่มตัวเลือก -F เพื่อดูรูปแบบที่ถูกต้องทั้งหมดเช่นนี้:

youtube-dl -F 'http://www.youtube.com/some-alphanumeric-string'

ในคำสั่งที่สามฉันได้ใช้รูปแบบ 360p flv
-f 34วิดีโอร่วมกัน คุณอาจต้องการที่จะลองรูปแบบวิดีโอ FLV 480p -f 35โดยใช้ ดังนั้นหลังจากที่คุณเพิ่มรูปแบบวิดีโอที่คุณต้องการคำสั่งคำสั่งจะเป็นดังนี้:

youtube-dl -ciw -o "%(title)s.%(ext)s" --batch-file='/path/to/batch-file.txt'

หมายเหตุ:

ฉันไม่ได้เพิ่ม--simulateตัวเลือกในคำสั่งสุดท้ายดังนั้นคำสั่งนี้จะถูกดำเนินการจริง


18

คุณสามารถใส่ URL ทีละอันด้วยช่องว่างระหว่างกัน Youtube-dl จะดาวน์โหลดตามลำดับ นี่เป็นวิธีที่ง่ายกว่าการสร้างไฟล์แบตช์

สังเกตเห็น - ช่วยพูดว่า youtube-dl --help Usage: youtube-dl [options] url [url...]

ตัวอย่างอินพุต:

youtube-dl http://www.youtube.com/watch?v=fqULJBBEVQE http://www.youtube.com/watch?v=vDbbz-BdyYc http://www.youtube.com/watch?v=OrIFaWJ9Glo

ตัวอย่างผลลัพธ์:

    [youtube] Setting language
    [youtube] fqULJBBEVQE: Downloading video webpage
    [youtube] fqULJBBEVQE: Downloading video info webpage
    [youtube] fqULJBBEVQE: Extracting video information
    [download] Destination: Web Components - A Tectonic Shift for Web Development - Google I_O 2013-fqULJBBEVQE.mp4
    [download] 100% of 238.14MiB in 36:54
    [youtube] vDbbz-BdyYc: Downloading video webpage
    [youtube] vDbbz-BdyYc: Downloading video info webpage
    [youtube] vDbbz-BdyYc: Extracting video information
    [download] Paul Irish on Web Application Development Workflow-vDbbz-BdyYc.mp4 has already been downloaded
    [youtube] OrIFaWJ9Glo: Downloading video webpage
    [youtube] OrIFaWJ9Glo: Downloading video info webpage
    [youtube] OrIFaWJ9Glo: Extracting video information
    [download] Got server HTTP error. Retrying (attempt 1 of 20)...
    [download] Destination: Single Page Web Applications - JavaScript End-to-End (The Hard Stuff)-OrIFaWJ9Glo.mp4
    [download] 100% of 553.10MiB in 42:17

1
คำตอบที่ดีที่สุดในความคิดของฉัน! ง่ายมาก!
gota

5

ขั้นตอนที่ 1:ไปที่เดสก์ท็อปของคุณและสร้างเอกสารข้อความชื่อlist(หรือชื่ออื่น) คัดลอกและวาง URL หากไฟล์ที่คุณต้องการดาวน์โหลดลงในไฟล์หนึ่ง URL ต่อบรรทัด

ขั้นตอนที่ 2:เปิดเทอร์มินัลแล้วไปที่เดสก์ท็อป

cd Desktop

ขั้นตอนที่ 3:เพื่อดาวน์โหลดไฟล์ในรายการของคุณให้พิมพ์ (แทนที่listหากคุณตั้งชื่อไฟล์เป็นอย่างอื่น)

youtube-dl -a list

ในการดาวน์โหลดช่อง YouTube

เรียกใช้คำสั่งนี้

youtube-dl -citk -format mp4 -yes-playlist VIDEO_PLAYLIST_LINK
  • -c ทำการดาวน์โหลดไฟล์บางส่วนต่อ
  • -i ละเว้นข้อผิดพลาดใด ๆ
  • -t ใช้ชื่อวิดีโอเป็นชื่อไฟล์
  • -k เก็บวิดีโอไว้บนดิสก์หลังจากที่ทำการประมวลผลเสร็จสิ้น
  • --format mp4 บันทึกไฟล์วิดีโอเป็นไฟล์ MP4
  • --yes-playlist ยืนยันว่า URL ที่ตามมาชี้ไปที่เพลย์ลิสต์วิดีโอ

1
-citkทำให้เข้าใจผิดมากและสามารถนำไปสู่ข้อผิดพลาด -cกองกำลังกลับมาทำงานต่อแม้ว่ามันจะไม่สมเหตุสมผลก็ตาม ค่าเริ่มต้นคือการดำเนินการต่อไป -iอาจจะโอเค แต่ระวังว่าคุณอาจพลาดข้อผิดพลาดในวิดีโอบางรายการ -tเป็นค่าเริ่มต้นแล้วและเลิกใช้แล้ว ทำให้รู้สึกไม่มี-k -f mp4ดูคำถามที่พบบ่อย youtube-dlสำหรับรายละเอียดเพิ่มเติม
Phihag

3

หากคุณมี URL วิดีโอหลายรายการให้เพิ่มไว้ในเพลย์ลิสต์เดียวลงในเพลย์ลิสต์ YouTube ของคุณด้วยการสร้าง URL ใหม่หรือใช้ URL ที่มีอยู่

จากนั้นใช้คำสั่งด้านล่าง

youtube-dl -f FORMAT --yes-playlist [url-of-playlist]

ตัวเลือก--yes-playlistจะดาวน์โหลดเพลย์ลิสต์หาก URL อ้างถึงวิดีโอและเพลย์ลิสต์

นี่เป็นตัวเลือกที่ง่ายและเร็วที่สุดที่ฉันพบเพื่อการดาวน์โหลดวิดีโอหลายร้อยรายการจากเว็บไซต์ที่มีวิดีโอที่เชื่อมโยงจาก YouTube


สิ่งนี้มีประโยชน์สำหรับการดาวน์โหลดวิดีโอจำนวนมากจากช่องเดียวกัน คุณสามารถใช้เพลย์ลิสต์ที่ไม่แสดงเพื่อไม่ให้เป็นแบบสาธารณะ
qwr

3

หากต้องการดาวน์โหลดวิดีโอหลายรายการคุณสามารถใช้โครงสร้างนี้ มันคล้ายกับการตอบสนองของ @ coreyb ด้วยการเพิ่มที่คุณสามารถใช้ที่อื่นในการทุบตีตัวอย่างเช่นกับ echo นี่คือสองวิธี:

วงเล็บปีกกา

youtube-dl -f FORMAT {url1,url2,url...}

ทำซ้ำคำสั่งสุดท้ายโดยไม่มีอาร์กิวเมนต์สุดท้าย

youtube-dl -f FORMAT url1; !:- url2; !:-url...

3

คำตอบที่ตรงไปตรงมาส่วนใหญ่จะสร้างสคริปต์ทุบตีเช่นนี้

#!/bin/bash
terminal=`tty`
exec < ~/Documents/youtubevideolinks.txt

while read -r line
do
    cd ~/Desktop/TilakDa/
    youtube-dl -f 18 "$line"
done
exec < "$terminal"

เพียงแค่คัดลอกและวางลิงค์วิดีโอในไฟล์ txt ในโฟลเดอร์เอกสารที่มีแต่ละ URL วิดีโอในบรรทัดใหม่และเรียกใช้สคริปต์นี้ มันจะดาวน์โหลดวิดีโอทีละตัว โดยค่าเริ่มต้น-f 18ตัวเลือกสำหรับวิดีโอ 360p


1

พิมพ์คำสั่งแล้วพิมพ์&&และพิมพ์คำสั่งถัดไปเช่น:

youtube-dl--add-metadata -xic http://(the url) && youtube-dl--add-metadata -xic http://(the url) 


1

หัวข้อยังคงเกี่ยวข้องดังนั้น:

  • รับลิงก์ YouTube ของคุณ
  • ลบพารามิเตอร์วิดีโอแรกที่เริ่มต้นด้วย ?
  • ใช้แบบนี้ :-)

    youtube-dl.exe --yes-playlist https://www.youtube.com/watch?list=yourlistlink
    

มันใช้งานได้สำหรับฉัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.