前言 大家早好、午好、晚好吖~ 環境使用: Python 3.8 Pycharm 安裝python第三方模塊: win + R 輸入 cmd 點擊確定, 輸入安裝命令 pip install 模塊名 (pip install requests) 回車 在pycharm中點擊Terminal(終端) ...
前言
大家早好、午好、晚好吖~
![](https://img2022.cnblogs.com/blog/2911107/202210/2911107-20221019164727461-1989587227.png)
環境使用:
-
Python 3.8
-
Pycharm
安裝python第三方模塊:
-
win + R 輸入 cmd 點擊確定, 輸入安裝命令 pip install 模塊名 (pip install requests) 回車
-
在pycharm中點擊Terminal(終端) 輸入安裝命令
如何配置pycharm裡面的python解釋器?
-
選擇file(文件) >>> setting(設置) >>> Project(項目) >>> python interpreter(python解釋器)
-
點擊齒輪, 選擇add
-
添加python安裝路徑
pycharm如何安裝插件?
-
選擇file(文件) >>> setting(設置) >>> Plugins(插件)
-
點擊 Marketplace 輸入想要安裝的插件名字 比如:翻譯插件 輸入 translation / 漢化插件 輸入 Chinese
-
選擇相應的插件點擊 install(安裝) 即可
-
安裝成功之後 是會彈出 重啟pycharm的選項 點擊確定, 重啟即可生效
代碼
導入模塊
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 # 界面
源碼、教程 ==點擊 藍色字體 自取== ,我都放在這裡了。
加入偽裝
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',
有網站名得鏈接發出來就不給過拉~寶子們自己按照下麵得圖添加一下哦
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('清風微信.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 get_music_info(self): music_info_list = [] name = self.lineEdit.text() page = self.lineEdit_2.text() num = self.lineEdit_3.text()
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]
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) if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) my_show = Pyqt5_Music() my_show.show() sys.exit(app.exec_())
from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(724, 328) self.label = QtWidgets.QLabel(Form) self.label.setGeometry(QtCore.QRect(80, 100, 101, 16)) self.label.setObjectName("label") self.label_2 = QtWidgets.QLabel(Form) self.label_2.setGeometry(QtCore.QRect(80, 130, 101, 16)) self.label_2.setObjectName("label_2") self.label_3 = QtWidgets.QLabel(Form) self.label_3.setGeometry(QtCore.QRect(80, 160, 101, 16)) self.label_3.setObjectName("label_3") self.lineEdit = QtWidgets.QLineEdit(Form) self.lineEdit.setGeometry(QtCore.QRect(190, 100, 201, 20)) self.lineEdit.setObjectName("lineEdit") self.lineEdit_2 = QtWidgets.QLineEdit(Form) self.lineEdit_2.setGeometry(QtCore.QRect(190, 130, 201, 20)) self.lineEdit_2.setObjectName("lineEdit_2") self.lineEdit_3 = QtWidgets.QLineEdit(Form) self.lineEdit_3.setGeometry(QtCore.QRect(190, 160, 201, 20)) self.lineEdit_3.setObjectName("lineEdit_3") self.label_4 = QtWidgets.QLabel(Form) self.label_4.setGeometry(QtCore.QRect(140, 30, 151, 20)) font = QtGui.QFont() font.setFamily("幼圓") font.setPointSize(14) self.label_4.setFont(font) self.label_4.setObjectName("label_4") self.label_5 = QtWidgets.QLabel(Form) self.label_5.setGeometry(QtCore.QRect(240, 70, 101, 16)) self.label_5.setObjectName("label_5") self.pushButton = QtWidgets.QPushButton(Form) self.pushButton.setGeometry(QtCore.QRect(90, 290, 81, 23)) self.pushButton.setObjectName("pushButton") self.pushButton_2 = QtWidgets.QPushButton(Form) self.pushButton_2.setGeometry(QtCore.QRect(234, 290, 81, 23)) self.pushButton_2.setObjectName("pushButton_2") self.textEdit = QtWidgets.QTextEdit(Form) self.textEdit.setGeometry(QtCore.QRect(60, 190, 361, 91)) self.textEdit.setObjectName("textEdit") self.label_6 = QtWidgets.QLabel(Form) self.label_6.setGeometry(QtCore.QRect(470, 70, 200, 200)) self.label_6.setText("") self.label_6.setObjectName("label_6") self.pushButton_3 = QtWidgets.QPushButton(Form) self.pushButton_3.setGeometry(QtCore.QRect(530, 290, 111, 23)) self.pushButton_3.setObjectName("pushButton_3") self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(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", "系統學習,請掃碼!"))
效果
文章看不懂,我專門錄了對應的視頻講解,本文只是大致展示,完整代碼和視頻教程點擊下方藍字
==點擊 藍色字體 自取,我都放在這裡了。==