Я новичок в Python и работал только с PHP 5 в прошлом (много лет назад). Как начинающий проект, я подумал, что я сделаю загрузчик YouTube, используя pytube, который позволит вам выбрать, загружать ли видео в высоком качестве или только скачивать аудио с него в формате .mp3.
Ну, я застрял на последней части: изменение расширения на .mp3.
Мне бы хотелось простое и элегантное решение, которое я могу понять, но любая помощь будет оценена.
Я пытался использовать os.rename (), но не уверен, как заставить его работать.
from pytube import YouTube
import os
yt = YouTube(str(input("Enter the URL of the video you want to download: \n>> ")))
print("Select download format:")
print("1: Video file with audio (.mp4)")
print("2: Audio only (.mp3)")
media_type = input()
if media_type == "1":
video = yt.streams.first()
elif media_type == "2":
video = yt.streams.filter(only_audio = True).first()
else:
print("Invalid selection.")
print("Enter the destination (leave blank for current directory)")
destination = str(input(">> "))
video.download(output_path = destination)
if media_type == "2":
os.rename(yt.title + ".mp4", yt.title + ".mp3")
print(yt.title + "\nHas been successfully downloaded.")
РЕДАКТИРОВАТЬ:
Вчера, когда я попробовал, он висел на последней части, но я просто попытался снова, и через некоторое время я получил это сообщение об ошибке:
Traceback (most recent call last):
File "Tubey.py", line 42, in <module>
os.rename(yt.title + ".mp4", yt.title + ".mp3")
FileNotFoundError: [WinError 2] The system cannot find the file specified: "Cristobal Tapia de veer - DIRK GENTLY's original score sampler - cut 3.mp4" -> "Cristobal Tapia de veer - DIRK GENTLY's original score sampler - cut 3.mp3"
Файл загружен, но не переименован.
ЗАКЛЮЧИТЕЛЬНОЕ РЕДАКТИРОВАНИЕ: (вероятно)
Я наконец заработал, в основном благодаря J_H. Спасибо, что миришься с моей некомпетентностью, ты святой.
Вот полный код, который наконец добился цели (на тот случай, если у кого-нибудь еще, кто столкнется с этим в будущем, возникнет аналогичная проблема):
from pytube import YouTube
import os
yt = YouTube(str(input("Enter the URL of the video you want to download: \n>> ")))
print("Select download format:")
print("1: Video file with audio (.mp4)")
print("2: Audio only (.mp3)")
media_type = input(">> ")
if media_type == "1":
video = yt.streams.first()
elif media_type == "2":
video = yt.streams.filter(only_audio = True).first()
else:
print("Invalid selection.")
print("Enter the destination (leave blank for current directory)")
destination = str(input(">> ")) or '.'
out_file = video.download(output_path = destination)
if media_type == "2":
base, ext = os.path.splitext(out_file)
new_file = base + '.mp3'
os.rename(out_file, new_file)
print(yt.title + " has been successfully downloaded.")
Я намереваюсь превратить это в долгосрочный проект и расширять сценарий, добавляя больше функций, чем больше я учусь, но пока я удовлетворен. Еще раз спасибо.