查找MP3的时间长度 – python

这是我的代码。

#!/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秒

同样的信息从文件属性。Pokemon song time information

但是… 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']

解决方案:

我在这里找到了解决方案。

寻找MP3文件的长度

但如果无法使用这么多图书馆,请随意换个答案。

给TA打赏
共{{data.count}}人
人已打赏
未分类

是否可以使用 VSTSAzure DevOps Release 部署任务来故障转移 Azure 函数?

2022-9-8 19:26:19

未分类

检测从子组件进入父组件的情况 Vue

2022-9-8 19:26:21

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索