flet 读取本地音频文件的信息,歌名,歌手,歌曲长度,封面

请先安装 pip install flet, tinytag 组件

tinytag 是用来读取音频文件的信息的

测试用最好找一个有封面的音频的文件, 我是windows电脑,打开预览模式,选中文件时候能够右边显示图片, 如下,我电脑上某个音频文件的封面

import flet as ft
from tinytag import TinyTag
import base64


def main(page: ft.Page):
    page.window_width = 600
    page.window_height = 600

    # bytes 转 base64
    def byte_to_base64(data):
        encoded_data = base64.b64encode(data)
        return encoded_data.decode("utf-8")

    def ms_to_time(ms):
        # 毫秒转换为时间格式
        ms = int(ms)
        minute, second = divmod(ms / 1000, 60)
        minute = min(99, minute)
        return "%02d:%02d" % (minute, second)

    # 音频文件路径
    # 这是我本地的歌曲,请确认自己的文件路径
    song_url = "E:/music/从不后悔爱上你-姜育恒.mp3"
    # 首先我们给这个图片载入一个没有图片的默认图片,我这里是设置了默认图片
    # 我这是放在 项目目录 assets/album.png的 一张图片
    song_cover = ft.Image(width=200, height=200, src="album.png")
    
    # 读取音频文件
    song_info = TinyTag.get(song_url, image=True)
    # 获取文件内图片(一般为专辑封面)
    img = song_info.get_image()
    # 这里注意, img 是一个bytes格式的,所以要把他转成base64位
    # flet Image控件,有两个属性src和src_base64, 第一个是接收一个图片的路径(本地文件或者网络文件的url)
    # 这样我们需要把img的格式转换成src_base64用来显示图片 byte_to_base64函数就是这个作用
    # 这里测试的结果 Image 会优先显示 src_base64的内容
    if img:
        song_cover.src_base64 = byte_to_base64(img)
    print(song_info)
    song_name = ft.Text(value=f"歌名:{song_info.title}")
    song_artist = ft.Text(value=f"歌手:{song_info.artist}")
    song_duration = ft.Text(value=f"歌曲长度:{ms_to_time(song_info.duration*1000)}")
    cont = ft.Row(
        [
            song_name,
            song_artist,
            song_duration,
            song_cover,
        ]
    )
    page.add(cont)


ft.app(target=main, assets_dir="assets")

下面是运行界面,我这里只是演示,没有进行美化

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值