前言
今天发的就是最实用的文章–让你用Python实现听歌自由,不用再担心自己的钱包了
文章末尾名片可直接领取代码
代码实现
导入模块
import os
import re
from urllib import parse
import requests
import sys
from PyQt5.QtGui import QIcon, QPixmap, QTextCursor
from PyQt5 import QtWidgets
from PyQt5.QtCore import QUrl
from PyQt5.QtGui import QDesktopServices
from music import Ui_Form # 界面
界面主要内容
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.label.setText(_translate("Form", "请输入歌手/歌名:"))
self.label_2.setText(_translate("Form", "下载页数:"))
self.label_3.setText(_translate("Form", "歌曲数量:"))
self.label_4.setText(_translate("Form", "音乐下载器"))
self.label_5.setText(_translate("Form", "作者:青灯教育"))
self.pushButton.setText(_translate("Form", "确定"))
self.pushButton_2.setText(_translate("Form", "关闭"))
self.pushButton_3.setText(_translate("Form", "源码领取:309488165"))
效果
搜索歌曲
def get_music_info(self):
"""搜索歌曲"""
music_info_list = []
name = self.lineEdit.text()
page = self.lineEdit_2.text()
num = self.lineEdit_3.text()
headers['Referer'] = 'http://***.cn/search/list?key=' + parse.quote(name)
url = f'http://***.cn/api/www/search/searchMusicBykeyWord?key={name}&pn={page}&rn={num}'
response = requests.get(url, headers=headers)
music_data = response.json() # 获取到的是字符串
music_list = music_data['data']['list']
for music in music_list:
music_name = music['name'] # 歌曲的名字
singer_name = music['artist'] # 歌手的名字
songmid = music['rid']
media_mid = music['album']
music_info_list.append((music_name, singer_name, songmid, media_mid))
return music_info_list
获取歌曲url
def get_purl(self, a):
music_data = []
for music in a:
music_name = music[0]
singer_name = music[1]
songmid = music[2]
purl = f'https://***/api/v1/www/music/playUrl?mid={songmid}&type=convert_url3&br=320kmp3'
full_media_url = requests.get(purl, headers=headers).json()['data']['url']
music_name = re.sub(r'[\/:*?"<>|]', '', music_name)
music_data.append(
{
'music_name': music_name,
'singer_name': singer_name,
'full_media_url': full_media_url
}
)
return music_data
保存歌曲
def save_music_mp3(self, b):
if not os.path.exists('歌曲下载'): # 判断是否有歌曲下载文件夹
os.mkdir('歌曲下载') # 如果没有创建 歌曲下载文件夹
for music in b:
music_name = music['music_name']
singer_name = music['singer_name']
full_url = music['full_media_url']
music_response = requests.get(full_url).content
with open('歌曲下载/%s-%s.mp3' % (music_name, singer_name), 'wb')as fp:
fp.write(music_response)
print("[%s]保存成功!" % music_name)
self.textEdit.append("[%s-%s.mp3]保存成功!" % (music_name, singer_name))
cursor = self.textEdit.textCursor()
cursor.movePosition(QTextCursor.End) # 还可以有别的位置
self.textEdit.setTextCursor(cursor)
最后效果展示
周董的歌,大部分人还是听过吧,基本上都是需要会员滴
看我这,不就简简单单的下载保存好了吗 嘿嘿
最后
刚开始接触Python的宝子,有什么不懂的都可以私信我哦
我还准备了大量的免费视频教程,PDF电子书籍,以及源代码!直接在文末名片自取即可哦!