之前用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.