PyQt5+requests实现音乐下载
本帖最后由 pyzyd 于 2025-7-2 20:28 编辑浅浅的学了一点爬虫和pyqt5,
做出来一个小作品,分享一下
代码不难,难的是找网站,找了我半天{:10_247:}
会一点基础,不会破解(就算会破解了也不敢发出来{:10_260:})
双击每行文字就能下载!!!
源码打包:
附件只能上传2MB文件,做出来的exe文件
压缩包弄不了这么小,就通过网盘分享了{:10_262:}
链接:打包好的应用
下面是一个使用PyQt5和requests实现的简易音乐下载器示例代码。该程序通过搜索API获取音乐列表,双击列表项即可下载音乐文件:
import sys
import os
import requests
from PyQt5.QtWidgets import (QApplication, QWidget, QLineEdit,
QListWidget, QVBoxLayout, QMessageBox)
class MusicDownloader(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('简易音乐下载器')
self.setGeometry(300, 300, 500, 400)
# 创建搜索框
self.search_input = QLineEdit(self)
self.search_input.setPlaceholderText("输入歌曲名按回车搜索...")
self.search_input.returnPressed.connect(self.search_music)
# 创建结果列表
self.result_list = QListWidget(self)
self.result_list.itemDoubleClicked.connect(self.download_music)
# 布局
layout = QVBoxLayout()
layout.addWidget(self.search_input)
layout.addWidget(self.result_list)
self.setLayout(layout)
def search_music(self):
"""搜索音乐并显示结果"""
keyword = self.search_input.text().strip()
if not keyword:
return
self.result_list.clear()
try:
# 实际项目中替换为真实的搜索API
# 这里使用模拟数据演示
mock_data = [
{"name": f"{keyword} - 歌手A", "url": "http://example.com/song1.mp3"},
{"name": f"{keyword} - 歌手B", "url": "http://example.com/song2.mp3"}
]
for song in mock_data:
self.result_list.addItem(song["name"])
self.result_list.item(self.result_list.count()-1).setData(32, song["url"])
except Exception as e:
QMessageBox.warning(self, "错误", f"搜索失败: {str(e)}")
def download_music(self, item):
"""下载选中的音乐"""
try:
url = item.data(32)# 获取存储的URL
song_name = item.text().replace(" ", "_").replace("/", "") + ".mp3"
# 创建下载目录
os.makedirs("downloads", exist_ok=True)
save_path = os.path.join("downloads", song_name)
# 下载音乐文件
response = requests.get(url, stream=True, timeout=30)
with open(save_path, 'wb') as f:
for chunk in response.iter_content(chunk_size=1024):
if chunk:
f.write(chunk)
QMessageBox.information(self, "成功", f"已保存到: {save_path}")
except Exception as e:
QMessageBox.critical(self, "下载失败", f"错误信息: {str(e)}")
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = MusicDownloader()
ex.show()
sys.exit(app.exec_())
### 使用说明:
1. 在搜索框输入歌曲名,按回车进行搜索
2. 双击列表中的歌曲项开始下载
3. 下载的音乐文件会保存在程序所在目录的 downloads 文件夹
### 注意事项:
1. 需要安装依赖库:
pip install PyQt5 requests
2. 实际使用时需要:
- 替换代码中的模拟数据为真实音乐API
- 处理可能的反爬机制(如Headers、Cookies)
- 添加下载进度显示(可通过PyQt5的QProgressBar实现)
### 重要提示:
- 请确保遵守相关网站的使用条款
- 仅下载拥有合法授权的音乐内容
- 本示例仅用于技术学习目的
如果需要实现更完整的功能(如下载进度显示、多线程下载等),可以在基础代码上进行扩展。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 这个好! {:10_275:} 666这可太刑了 感谢 哇!这可太棒了{:5_106:} 厉害厉害 好牛啊
{:5_106:} 赏 不错不错
页:
[1]