您的位置:首页 >聚焦 >

环球观速讯丨Python实现一个音乐下载器,不存在充会员的 | 附源码

2022-12-17 19:48:21    来源:程序员客栈
Python实现一个音乐下载器,不存在充会员的| 附源码前言

halo,包子们上午好

很多学计算机的小伙伴应该都知道,毕业设计是一个头疼的东西


(资料图)

今天的话小编这边给大家用Python实现一个音乐下载器

这不是毕业设计必备项目

说实话操作起来还是有那么一点点的难度的,但是大家不用担心

作为一个宠粉狂魔的小编,肯定都给大家准备好了的

直接上才艺

相关文件

关注小编,私信小编领取哟!

当然别忘了一件三连哟~~

公众号:Python日志

源码领取QQ群:494958217

开发工具

Python版本:3.7.8

相关模块:

requests模块;

re模块;

os模块;

以及一些python自带的模块。

效果展示代码展示0101导入模块

import osimport refrom urllib import parseimport requestsimport sysfrom PyQt5.QtGui import QIcon, QPixmap, QTextCursorfrom PyQt5 import QtWidgetsfrom PyQt5.QtCore import QUrlfrom PyQt5.QtGui import QDesktopServicesfrom music import Ui_Form  # 界面

02获取连接

headers = {    "Accept-Language": "zh-CN,zh;q=0.9",  # 浏览器基本信息  "User-Agent": "User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",  # 辨别用户的身份  "Cookie": "_ga=GA1.2.1046563906.1629973377; _gid=GA1.2.864288642.1637645958; _gat=1; Hm_lvt_cdb524f42f0ce19b169a8071123a4797=1635428199,1637645959,1637647069,1637650108; Hm_lpvt_cdb524f42f0ce19b169a8071123a4797=1637650108; kw_token=79O0NFTF9MH",  # 认证令牌  "csrf": "79O0NFTF9MH",  # 指定的请求资源的域名  "Host": "www.kuwo.cn"}

03主函数

class Pyqt5_Music(QtWidgets.QWidget, Ui_Form):    def __init__(self):        super(Pyqt5_Music, self).__init__()        self.setupUi(self)        self.init()        self.setWindowTitle("音乐下载器")        self.setWindowIcon(QIcon("音乐_填充.svg"))        self.lineEdit.setText("")        self.lineEdit_2.setText("")        self.lineEdit_3.setText("")        pix = QPixmap("Python大本营.jpg")        self.label_6.setPixmap(pix)        self.label_6.setScaledContents(True)    def init(self):        self.pushButton.clicked.connect(self.song_ok)        self.pushButton_2.clicked.connect(self.main_exit)        self.pushButton_3.clicked.connect(self.show_child)    def song_ok(self):        music_info_list = self.get_music_info()        music_data = self.get_purl(music_info_list)        self.save_music_mp3(music_data)    def main_exit(self):        sys.exit(self)    def show_child(self):        QDesktopServices.openUrl(QUrl("https://ke.qq.com/course/package/51020?tuin=8ac397eb"))    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://www.kuwo.cn/search/list?key=" + parse.quote(name)        url = f"http://www.kuwo.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    def get_purl(self, a):        """获取歌曲url"""    music_data = []        for music in a:            music_name = music[0]            singer_name = music[1]            songmid = music[2]            purl = f"https://www.kuwo.cn/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)

源码获取

【领取方式】

QQ扫码添加

【依次发放,请勿重复添加】

添加时备注“公众号”

即可免费领取学习资料和课程

或者直接搜索QQ群:494958217 领取

关键词: 一个音乐 毕业设计 准备好了

相关阅读