Python PYQT5 MP3播放器(三) 这次解决了修改TAG后,部分歌曲没有声音的BUG,显示爬取到的歌曲列表

之前用mutagen修改TAG,总是无法播放,后来经过调试发现没有任何错误,正常播放中,但是没有声音,所以下载了个LAVFilters-0.68.1-x64.zip(Windows下解码器,解压后运行install_splitter.bat),就完美解决了。
本次添加的功能:显示爬取到的TOP100歌曲,双击该歌曲播放并添加到播放列表中(我的歌单)
在这里插入图片描述

from PyQt5.QtWidgets import QMainWindow, QApplication, QFileDialog, QMessageBox, QDialog,QAbstractItemView,QWidget
from PyQt5.QtCore import QUrl, Qt
from PyQt5.QtGui import QStandardItemModel, QStandardItem
from Ui_playerUi4 import Ui_MainWindow
from Mp3Info import GetMp3Info,SetMp3Info
from PyQt5.QtMultimedia import QMediaPlayer, QMediaPlaylist, QMediaContent
from getKuwoInfo import getKuwoInfo,getsongInfo  #这个是爬取信息,自己去写^ ^
import sys,json,os


class My(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()
        win = self.setupUi(self)
        self.player = QMediaPlayer()  # 创建播放器
        self.playList = QMediaPlaylist()  # 创建播放列表
        self.playList.setPlaybackMode(QMediaPlaylist.Loop)  # 设置循环播放
        self.determineExistPlayDir()
        self.singalAndSlot()
        self.setWindowFlags(Qt.WindowCloseButtonHint)  # 取消窗口最大化和最小化
        self.songListSet()
        
    def kuwoList(self):
        self.kuwodata=getKuwoInfo()
        self.model = QStandardItemModel(0, 4)  # 创造数据模型,0行,4列
        self.model.setHorizontalHeaderLabels(['歌曲', '歌手', '专辑', '时长'])  # 设置标题
        if self.kuwodata:  # 添加数据
            for onedata in self.kuwodata:
                self.model.appendRow([  # 添加一行数据
                    QStandardItem(onedata['name']),
                    QStandardItem(onedata['artist']),
                    QStandardItem(onedata['album']),
                    QStandardItem(onedata['songTimeMinutes'])
                ])
        self.songList.setModel(self.model)  # 把数据添加至QtableView中
        self.table=2

    def songListSet(self):
        '''在界面显示歌曲列表'''
        self.model = QStandardItemModel(0, 4)  # 创造数据模型,0行,4列
        self.model.setHorizontalHeaderLabels(['歌曲', '歌手', '专辑', '时长'])  # 设置标题
        if not self.playList.isEmpty():  # 添加数据
            for index in range(self.playList.mediaCount()):
                if self.playList.media(index).canonicalUrl().path()[0]==r'/':
                    path = self.playList.media(index).canonicalUrl().path()[1:]
                else:
                    path = self.playList.media(index).canonicalUrl().path()
                info = GetMp3Info(path)
                print(path)
                self.model.appendRow([  # 添加一行数据
                    QStandardItem(info.title),
                    QStandardItem(info.artist),
                    QStandardItem(info.album),
                    QStandardItem(info.length)
                ])
                print(info.title)
        self.songList.setModel(self.model)  # 把数据添加至QtableView中
        self.songList.setColumnWidth(0, 350)  # 设置第1列列宽
        self.songList.setColumnWidth(1, 200)  # 设置第2列列宽
        self.songList.setColumnWidth(2, 250)  # 设置第3列列宽
        self.songList.setColumnWidth(3, 158)  # 设置第4列列宽
        self.songList.setEditTriggers(
            QAbstractItemView.NoEditTriggers)  # 设置不可编辑单元格
        self.songList.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)   #取消水平滚动条
        self.table=1 #1:表示当前界面是播放列表,2:表示当前界面不是播放列表

    def singalAndSlot(self):
        '''这里汇聚了所有的信号和槽'''
        self.nextSong.clicked.connect(self.nextS)
        self.preSong.clicked.connect(self.preS)
        self.startStop.clicked.connect(self.startOrStop)
        self.songDir.clicked.connect(self.writeDir)
        self.songList.doubleClicked.connect(self.doubleClickedToPlaySong)
        self.hotSongs.
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值