Проблема с загрузкой музыки / видео в формате .mp3 / webm с YouTube с использованием python youtube_dl

#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), который я использовал, чтобы разобраться.