UI界面布局实现效果如下:
文章插图
2. 音乐本地下载及添加我喜爱的歌曲我们根据V1.0版本完成的,输入的关键字和选择音乐来源进行音乐爬取,通过多线程,将歌曲、歌手、歌曲url地址全都获取;并将这些爬取的音乐数据列表显示到搜索页面中 。双击列表页面中某一首歌曲,即可实现音乐播放功能 。
V2.0版本中,我们添加了对当前播放音乐的本地下载、搜索页音乐列表一键下载、喜爱的歌列表一键下载、添加我喜爱的歌曲功能 。
音乐下载:
对于音乐下载,我们可以进行当前播放音乐下载、搜索页音乐列表一键下载、喜爱的歌一键下载 。如下图所示:
文章插图
核心代码如下:
# 当前播放音乐下载def down(self):if bo == 'local':downpath = str(filew)downpath = downpath.replace('/', '\')downpath = downpath + SongName[num]print(downpath)print('explorer /select,{}'.format(downpath))call('explorer /select,{}'.format(downpath))else:call('explorer /select,{}'.format(to))# 下载所有音乐def downloadall(self, typer):try:global typerrtyperr = typerprint(typer)print(typerr)self.work = downall()self.work.start()self.work.trigger.connect(self.disdownall)except:print('默认图片下载错误')pass# 下载搜索页列表所有音乐def downloadalls(self):self.downloadall('boing')# 下载喜爱的歌列表所有音乐def downloadalllove(self):self.downloadall('love')
添加喜爱的歌:对于添加喜爱的歌曲,我们可以通过当前播放音乐的?标志,也可以通过右键音乐列表进行喜爱的歌曲添加 。核心代码如下:
# 通过点击?标志,对当前播放音乐添加喜爱的歌def lovesong(self):if bo == 'boing' or bo == 'boed':try:global lovesglobal loveurlsglobal lovepicsglobal lovelrcif bo == 'boing':loves.Append(songs[num])loveurls.append(urls[num])lovepics.append(pic[num])lovelrc.append(lrcs[num])elif bo == 'boed':loves.append(songed[num])loveurls.append(urled[num])lovepics.append(picd[num])lovelrc.append(lrcd[num])else:passexcept:passself.work = firstThread()self.work.start()self.work.trigger.connect(self.dispng)r = 0self.listwidget3.clear()for i in loves:self.listwidget3.addItem(i)self.listwidget3.item(r).setForeground(Qt.white)r = r + 1print(loves)else:pass# 通过右键音乐列表进行喜爱的歌曲添加def addItem(self):try:global lovesglobal loveurlsglobal lovepicsglobal lovelrcif list_confident == 'boing':loves.append(songs[num_m])loveurls.append(urls[num_m])lovepics.append(pic[num_m])lovelrc.append(lrcs[num_m])else:loves.append(songed[num_m])loveurls.append(urled[num_m])lovepics.append(picd[num_m])lovelrc.append(lrcd[num_m])self.work = firstThread()self.work.start()self.work.trigger.connect(self.dispng)except:passr = 0self.listwidget3.clear()for i in loves:self.listwidget3.addItem(i)self.listwidget3.item(r).setForeground(Qt.white)r = r + 1print('done')print(loves)
这样我们就可以把歌曲添加到喜爱的歌子列表页面下,如下图所示 。文章插图
3. 喜爱的歌初始化读取显示及列表播放对于添加到喜爱的歌曲列表,我们需要在退出音乐播放器程序时,将这些数据保存到本地文件,方便后面重新运行时初始化读取显示列表 。
喜爱歌曲本地保存:我们可以把喜爱的歌曲列表、喜爱歌曲图片、歌曲url链接、歌词等数据保存到本地 。核心代码如下:
def close(self):reply = QMessageBox.question(self, u'警告', u'确定退出?', QMessageBox.Yes,QMessageBox.No)if reply == QMessageBox.Yes:close = Truetry:mixer.music.stop()except:passtry:rmtree(str(data))except Exception as e:print('删除错误类型是', e.__class__.__name__)print('删除错误明细是', e)filepath = '{}/musicdata'.format(apdata)try:mkdir(filepath)except:passprint(filepath)with open(filepath + "/loves", 'w', encoding='utf-8') as f:f.truncate(0)print(f.write(str(loves)))with open(filepath + "/lovepics", 'w', encoding='utf-8') as f:f.truncate(0)print(f.write(str(lovepics)))with open(filepath + "/loveurls", 'w', encoding='utf-8') as f:f.truncate(0)print(f.write(str(loveurls)))with open(filepath + "/lovelrc", 'w', encoding='utf-8') as f:f.truncate(0)print(f.write(str(lovelrc)))with open(filepath + "/voice", 'w', encoding='utf-8') as f:f.truncate(0)print(f.write(str(voice)))try:rmtree(str(data))except Exception as e:print('删除错误类型是', e.__class__.__name__)print('删除错误明细是', e)exit()else:pass
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 《水浒传》中武松的相关情节?水浒传里面的武松是怎样的一个人
- 鼻子有火气是什么原因?
- 什么叫自闭症
- 鼻子火气重怎么降火?
- 职业拳击|赛前称重结束!明日,女子职业拳击将诞生P4P第一人
- lgd为什么叫lxo?lgd relx
- 打完针后一直疼
- 人类第一次超音速飞行?美国超音速飞行器
- 一场秋雨一场寒是哪首诗?一场秋雨一场寒是什么诗
- 一念起、万水千山?一路踏遍千山和万水