กำลังดาวน์โหลด youtube playlist ด้วย youtube-dl โดยข้ามไฟล์ที่มีอยู่


22

ฉันสงสัยว่ามันเป็นไปได้ไหมที่จะดาวน์โหลด youtube playlist เป็น mp3 โดยใช้youtube-dlข้ามไฟล์ที่มีอยู่แล้ว ฉันใช้คำสั่งนี้:

youtube-dl --continue --ignore-errors --no-overwrites --extract-audio --audio-format mp3 --output "%(title)s.%(ext)s" [path here]

และแม้ว่าฉันจะตั้งค่าให้ไม่เขียนทับมันจะทำการดาวน์โหลดใหม่ทุกอย่างตั้งแต่เริ่มต้น เป็นไปได้ไหม


แม้ว่ามันจะดาวน์โหลดซ้ำก็มักจะข้ามการเขียนไฟล์โดยค่าเริ่มต้นแม้ว่าจะไม่มีการตั้งค่าตัวเลือก
mchid

ตกลงถ้าฉันเก็บวิดีโอที่ดาวน์โหลดมาพร้อมกับไฟล์ mp3 ไว้ฟังก์ชันการข้ามจะทำงานได้อย่างถูกต้อง ไม่ใช่สิ่งที่ฉันต้องการ แต่ก็โอเค
Warrior

คำตอบ:


45

ด้วยตัวเลือก--download-archive FILE youtube-dlทั้งอ่านและเพิ่มลงในรายการไฟล์ที่จะไม่ดาวน์โหลดอีกครั้ง เวลาที่ไฟล์จะถูกดาวน์โหลดประสบความสำเร็จในทุกที่ ID FILEวิดีโอจะถูกเพิ่ม

คุณสามารถใช้มันได้ดังต่อไปนี้:

youtube-dl --download-archive downloaded.txt --no-post-overwrites -ciwx --audio-format mp3 -o "%(title)s.%(ext)s" [path here]

มันจะทำการดาวน์โหลดวิดีโอใหม่อีกครั้งก่อนหน้านี้ซึ่งคุณไม่ได้เก็บไว้เป็นครั้งสุดท้ายในขณะที่สร้างรายการ ตอนนี้คุณสามารถลบได้

หากมีการตั้งชื่อไฟล์ MP3 ของคุณด้วยรูปแบบเริ่มต้น%(title)s-%(id)s.%(ext)sคุณสามารถหลีกเลี่ยงการดาวน์โหลดซ้ำได้โดยสร้างdownloaded.txtจาก youtube %(id)sในเทอร์มินัล bash ดังนี้:

for n in *.mp3
do if [[ "$n" =~ -[-_0-9a-zA-Z]{11}.mp3$ ]]
   then echo "youtube ${n: -15: 11}" >> downloaded.txt
   fi
done

1
คำตอบที่มีค่าที่นี่ มันแก้ปัญหาของฉัน ขอขอบคุณ.
นักรบ

ที่-cwixนี่คืออะไร
bteo

2
-cwixเป็นทางเลือกที่สั้นกว่าสำหรับ--continue --no-overwrites --ignore-errors --extract-audio
Martin Thornton

1
เป็นเรื่องที่ควรกล่าวถึงในขณะที่ใช้งานได้ดีกับ YouTube แต่ youtube-dl ก็สามารถทำงานร่วมกับเว็บไซต์อื่น ๆ (เช่น Soundcloud) ซึ่ง-xตัวเลือกดูเหมือนจะแตกออก คุณสามารถลบการตั้งค่าสถานะนั้นได้อย่างปลอดภัยหากคุณกำลังดาวน์โหลดจากแหล่งเสียง
christianbundy

2

สิ่งนี้มีประโยชน์จริงๆ หากมีประโยชน์กับใครก็ตามฉันแก้ไขโค้ดเพื่อสร้างรายการดาวน์โหลดที่มีอยู่เพื่อรวมไฟล์ทั้งหมดในโฟลเดอร์ มีประโยชน์หากดาวน์โหลดเสียงด้วย--extract-audioและตั้ง--audio-quality "best"ค่าสถานะ

for n in *.*
do if [[ "$n" =~ -[-_0-9a-zA-Z]{11}.*$ ]]
   then echo "youtube ${n: -15: 11}" >> downloaded.txt
   fi
done

ฉันแน่ใจว่าคนส่วนใหญ่สามารถทำงานออกมาได้ด้วยตัวเอง แต่ไม่ใช่ทุกคนที่รู้เรื่องการเขียนสคริปต์ทุบตี

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