Вот мой код:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from pydub import AudioSegment
import os
from urllib.parse import urlparse, parse_qs, unquote
from pytube import YouTube# misc
import urllib.request
from moviepy.editor import *
import eyed3
import time
class ConvertToMp3:
def convert(self,filename):
path_list = filename.split("/")
filename = path_list[len(path_list)-1]
path_list.remove(filename)
if(len(path_list)!=0 and path_list[0]==""):
path_list.remove(path_list[0])
path = ""
for folder in path_list:
path = path+"/"+folder
extension = filename.split(".")[1]
if path!="":
audio = AudioSegment.from_file(path+"/"+filename, format=extension)
else:
audio = AudioSegment.from_file(filename, format=extension)
audio.export("output files/"+filename.split(".")[0]+".mp3", format="mp3")
class ConvertFromYoutube:
def download(self,video_url,**options):
video_id = parse_qs(urlparse(video_url).query)['v'][0]
video = YouTube('https://www.youtube.com/watch?v='+video_id)
video.streams.get_by_itag(18).download("output files")
title = video.title
#print(title)
thumbnail = video.thumbnail_url
thumbnail_extension = thumbnail.split(".")
thumbnail_extension = thumbnail_extension[len(thumbnail_extension)-1]
urllib.request.urlretrieve(thumbnail, "output files/"+title+"."+thumbnail_extension)
self.save_as_mp3(title,"song_artist","song_album","song_album_artist","*****")
def save_as_mp3(self,song_title,song_artist,song_album,song_album_artist,song_rating):
video = VideoFileClip(os.path.join("output files",song_title+".mp4"))
video.audio.write_audiofile(os.path.join("output files",song_title+".mp3"))
audiofile = eyed3.load(os.path.join("output files",song_title+".mp3"))
audiofile.tag.artist = song_artist
audiofile.tag.album = song_album
audiofile.tag.album_artist = song_album_artist
audiofile.tag.title = song_title
print(audiofile.info.time_secs)
audiofile_duration = time.strftime('%H:%M:%S', time.gmtime(audiofile.info.time_secs))
print(audiofile.info.time_secs)
print(audiofile_duration)
audiofile.tag.save()
#test
#converter = ConvertToMp3()
#converter.convert("/home/chris/Μουσική/Απολυτίκιο Τριών Ιεραρχών.wav")
youtube = ConvertFromYoutube()
youtube.download("https://www.youtube.com/watch?v=JuYeHPFR3f0")
Время воспроизведения видео на YouTube с темой покемонов: 3 минуты 21 секунда.
Та же информация из свойств файла:
Но print(audiofile.info.time_secs)
Распечатывает 405.62361067503923. Это неправильно, поэтому расчет audiofile_duration = time.strftime('%H:%M:%S', time.gmtime(audiofile.info.time_secs))
также неверен.
Как я могу это исправить? Заранее спасибо, Крис Паппас
Редактировать:
object_methods = [attr for attr in dir(audiofile.info) if not callable(getattr(audiofile.info, attr)) and not attr.startswith("__")]
print(object_methods)
['bit_rate', 'bit_rate_str', 'lame_tag', 'mode', 'mp3_header', 'sample_freq', 'size_bytes', 'time_secs', 'vbri_header', 'xing_header']