Tải xuống danh sách phát youtube bằng youtube-dl, bỏ qua các tệp hiện có


22

Tôi đã tự hỏi nếu có thể tải xuống danh sách phát youtube dưới dạng mp3 bằng cách sử dụng youtube-dl, bỏ qua các tệp đã có. Tôi đang sử dụng lệnh này:

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

và, mặc dù tôi đã đặt nó thành không ghi đè, nhưng nó tải lại mọi thứ từ đầu. Điều này có thể không?


mặc dù nó tải xuống lại, nó thường bỏ qua việc ghi tệp theo mặc định ngay cả khi không có tùy chọn đó được đặt
mchid

Ok, nếu tôi giữ video đã tải xuống cùng với tệp mp3, chức năng bỏ qua hoạt động đúng. Không chính xác những gì tôi cần nhưng nó là ok.
Chiến binh

Câu trả lời:


45

Với tùy chọn --download-archive FILE youtube-dl cả đọc và thêm vào danh sách các tệp không được tải xuống lại. Mỗi khi tệp được tải xuống thành công, id video đó sẽ được thêm vào FILE.

Bạn có thể sử dụng nó như sau:

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

Nó sẽ tải lại bất kỳ video nào từ trước đó mà bạn không giữ lại lần cuối cùng khi nó tạo danh sách. Bây giờ bạn có thể xóa chúng.

Nếu các tệp MP3 của bạn đã được đặt tên theo định dạng mặc định %(title)s-%(id)s.%(ext)s, bạn có thể tránh tải xuống bằng cách tạo downloaded.txttừ youtube %(id)strong thiết bị đầu cuối bash như sau:

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

1
Câu trả lời có giá trị ở đây. Nó giải quyết vấn đề của tôi. cảm ơn bạn.
Chiến binh

Cái gì -cwixđây
bteo

2
-cwixlà một sự thay thế ngắn hơn cho--continue --no-overwrites --ignore-errors --extract-audio
Martin Thornton

1
Điều đáng nói là trong khi điều này hoạt động hoàn hảo cho YouTube, youtube-dl cũng hoạt động với các trang web khác (ví dụ Soundcloud) trong đó -xtùy chọn dường như phá vỡ đầu ra. Bạn có thể xóa cờ đó một cách an toàn nếu bạn đang tải xuống từ một nguồn âm thanh.
christianbundy

2

Điều này thực sự hữu ích. Nếu nó có ích cho bất kỳ ai, tôi đã sửa đổi mã để tạo danh sách tải xuống hiện có để bao gồm tất cả các tệp trong thư mục. Hữu ích nếu tải xuống âm thanh với --extract-audio--audio-quality "best"cờ

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

Tôi chắc chắn rằng hầu hết mọi người có thể tự mình giải quyết vấn đề đó, nhưng không phải ai cũng bị dính vào kịch bản bash.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.