Mengunduh playlist youtube dengan youtube-dl, melewatkan file yang ada

22

Saya bertanya-tanya apakah mungkin untuk mengunduh daftar putar youtube sebagai mp3 menggunakan youtube-dl, melewatkan file yang sudah ada. Saya menggunakan perintah ini:

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

dan, meskipun saya mengaturnya untuk tidak menimpa, itu memang mengunduh ulang semuanya dari awal. Apakah ini mungkin?

pejuang
sumber
walaupun itu mengunduh ulang biasanya melompat menulis file secara default bahkan tanpa opsi yang ditetapkan
mchid
Oke, jika saya menyimpan video yang diunduh beserta file mp3nya, fungsi skipping berfungsi dengan baik. Tidak persis apa yang saya butuhkan tetapi tidak apa-apa.
Warrior

Jawaban:

45

Dengan opsi --download-archive FILE youtube-dl membaca dan menambah daftar file untuk tidak mengunduh lagi. Setiap kali file berhasil diunduh, id video itu ditambahkan FILE.

Anda dapat menggunakannya sebagai berikut:

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

Ini akan mengunduh ulang video apa pun dari sebelumnya yang tidak Anda simpan untuk terakhir kalinya saat membuat daftar. Anda sekarang dapat menghapusnya.

Jika file MP3 Anda dinamai dengan format default %(title)s-%(id)s.%(ext)s, Anda bisa menghindari pengunduhan dengan membuat downloaded.txtdari youtube %(id)sdi terminal bash sebagai berikut:

for n in *.mp3
do if [[ "$n" =~ -[-_0-9a-zA-Z]{11}.mp3$ ]]
   then echo "youtube ${n: -15: 11}" >> downloaded.txt
   fi
done
Martin Thornton
sumber
1
Jawaban yang berharga di sini. Ini memecahkan masalah saya. Terima kasih.
Warrior
Ada apa -cwixdisini
bteo
2
-cwixadalah alternatif yang lebih pendek untuk--continue --no-overwrites --ignore-errors --extract-audio
Martin Thornton
1
Perlu disebutkan bahwa sementara ini berfungsi dengan baik untuk YouTube, youtube-dl juga berfungsi dengan situs lain (misalnya, Soundcloud) di mana -xopsi tersebut tampaknya memecah output. Anda dapat menghapus bendera itu dengan aman jika Anda mengunduh dari sumber audio.
christianbundy
2

Ini sangat membantu. Jika ada gunanya bagi siapa pun, saya memodifikasi kode untuk membuat daftar unduhan yang ada untuk memasukkan semua file dalam folder. Berguna jika mengunduh audio dengan --extract-audiodan --audio-quality "best"flag

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

Saya yakin kebanyakan orang bisa melakukannya sendiri, tetapi tidak semua orang tahu tentang bash scripting.

Jeremy Paul Carroll
sumber