#python #cmd #mp3 #youtube-dl #webm
#python #cmd #mp3 #youtube-dl #webm
Вопрос:
Итак, это не мой код, я нашел его в руководстве YouTube (которое сейчас не могу найти).
from __future__ import unicode_literals
import youtube_dl
import os
from sys import argv
# Download data and config
download_options = {
'format': 'bestaudio/best',
'outtmpl': '%(title)s.%(ext)s',
'nocheckcertificate': True,
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '192',
}],
}
# Song Directory
if not os.path.exists('Songs'):
os.mkdir('Songs')
else:
os.chdir('Songs')
# Download Songs
with youtube_dl.YoutubeDL(download_options) as dl:
with open('..\' argv[1], 'r') as f:
for song_url in f:
dl.download([song_url])
Сначала загружается файл «.webm» (видео), затем правильно конвертируется в mp3 и после этого удаляется исходное видео «.webm», я не хочу, чтобы оно удаляло его, когда я запускаю его в CMD, он говорит «Удаление исходного файла.webm (передать -k, чтобы сохранить), но я не знаю, куда передать -k
(Я не программист, я просто скопировал код)
Заранее спасибо!
Ответ №1:
вам необходимо передать дополнительный аргумент
это скопировано с youtube_dl github
--postprocessor-args ARGS Give these arguments to the postprocessor
-k, --keep-video Keep the video file on disk after the post-
processing; the video is erased by default
вы можете посмотреть здесь, как передать параметры
Я протестировал этот синтаксис, и он работает для меня (Darude Sandstorm)
download_options = {
'format': 'bestaudio/best',
'outtmpl': '%(title)s.%(ext)s',
'nocheckcertificate': True,
'keepvideo': True,
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '192'
}]
}
Комментарии:
1. Не работает ` Трассировка (последний вызов): Файл «C:UsersngvalPythondownloader.py «, строка 27, в <module> с помощью youtube_dl. YoutubeDL(download_options) как dl: Файл «C:UsersngvalPythonlibsite-packagesyoutube_dlYoutubeDL.py «, строка 426, в инициализации pp_class = get_postprocessor(pp_def_raw[‘key’]) Файл «C:UsersngvalPythonlibsite-packagesyoutube_dlpostprocessor_ init_ .py», строка 22, в get_postprocessor возвращает globals()[key ‘PP’] KeyError: ‘keep-videoPP’ ` Это то, что я получаю
2. мой синтаксис был неправильным, я исправил это и связал ресурс (код github), который я использовал, чтобы разобраться.