Модуль Youtube-dl, получающий файл части вместо файла mp4 при прерывании

#python-3.x #interrupt #youtube-dl

#python-3.x #прерывание #youtube-dl

Вопрос:

Когда я прерываю процесс загрузки (нажатием ctrl c), вместо получения файла mp4 я получаю файл части. Я также получаю следующие сообщения :

 Exiting normally, received signal 2.
ERROR: ffmpeg exited with code 255
  

Это часть кода :

 self.ydl_opts = {}
with youtube_dl.YoutubeDL(self.ydl_opts) as ydl:
    ydl.download([self.download_url])
  

Также я забыл упомянуть, что если изменить имя файла с filename.mp4.part на finemame.mp4 , я могу нормально смотреть видео.

Любая помощь очень ценится!

Ответ №1:

Такое поведение требуется, поскольку вы должны иметь возможность перезапустить загрузку. Затем он продолжит или, по крайней мере, должен продолжить загрузку с того места, где вы остановились.

Вы могли бы попробовать использовать
--no-part при использовании в командной строке
или nopart True при использовании встроенного youtube-dl
это приведет к прямой записи выходных данных.

Комментарии:

1. А что, если я хочу сохранить файл mp4 до завершения потока? Также я не думаю, что такое поведение является нормальным, потому что, когда я делаю то же самое через cmd, я получаю файл mp4.

Ответ №2:

Я только что понял это, мне пришлось использовать os.rename(old_title,new_title) where, old_title = video_title '.part' и new_title = video_title '.mp4' , тем не менее, это ненормально, когда я делаю то же самое через cmd, программа возвращает mp4, во всяком случае, это работает для меня!