鱼C论坛

 找回密码
 立即注册
查看: 119|回复: 14

[作品展示] PyQt5+requests实现音乐下载

[复制链接]
回帖奖励 252 鱼币 回复本帖可获得 9 鱼币奖励! 每人限 1 次(中奖概率 80%)
发表于 3 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 pyzyd 于 2025-7-2 20:28 编辑

浅浅的学了一点爬虫和pyqt5,
做出来一个小作品,分享一下
代码不难,难的是找网站,找了我半天
会一点基础,不会破解(就算会破解了也不敢发出来


图像.png


双击每行文字就能下载!!!

源码打包:

音乐下载.zip (5.65 KB, 下载次数: 2)


附件只能上传2MB文件,做出来的exe文件
压缩包弄不了这么小,就通过网盘分享了

链接:打包好的应用

下载.gif



评分

参与人数 4荣誉 +15 鱼币 +15 贡献 +15 C币 +6 收起 理由
sfqxx_小 + 1 + 1 + 3
cjjJasonchen + 5 + 5 + 3 无条件支持楼主!
sfqxx + 3 + 3 + 3
不二如是 + 6 + 6 + 6 + 6 感谢楼主无私奉献!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 3 天前 | 显示全部楼层
下面是一个使用PyQt5和requests实现的简易音乐下载器示例代码。该程序通过搜索API获取音乐列表,双击列表项即可下载音乐文件:


  1. import sys
  2. import os
  3. import requests
  4. from PyQt5.QtWidgets import (QApplication, QWidget, QLineEdit,
  5.                              QListWidget, QVBoxLayout, QMessageBox)

  6. class MusicDownloader(QWidget):
  7.     def __init__(self):
  8.         super().__init__()
  9.         self.initUI()
  10.         
  11.     def initUI(self):
  12.         self.setWindowTitle('简易音乐下载器')
  13.         self.setGeometry(300, 300, 500, 400)
  14.         
  15.         # 创建搜索框
  16.         self.search_input = QLineEdit(self)
  17.         self.search_input.setPlaceholderText("输入歌曲名按回车搜索...")
  18.         self.search_input.returnPressed.connect(self.search_music)
  19.         
  20.         # 创建结果列表
  21.         self.result_list = QListWidget(self)
  22.         self.result_list.itemDoubleClicked.connect(self.download_music)
  23.         
  24.         # 布局
  25.         layout = QVBoxLayout()
  26.         layout.addWidget(self.search_input)
  27.         layout.addWidget(self.result_list)
  28.         self.setLayout(layout)
  29.    
  30.     def search_music(self):
  31.         """搜索音乐并显示结果"""
  32.         keyword = self.search_input.text().strip()
  33.         if not keyword:
  34.             return
  35.             
  36.         self.result_list.clear()
  37.         
  38.         try:
  39.             # 实际项目中替换为真实的搜索API
  40.             # 这里使用模拟数据演示
  41.             mock_data = [
  42.                 {"name": f"{keyword} - 歌手A", "url": "[url=http://example.com/song1.mp3"},]http://example.com/song1.mp3"},[/url]
  43.                 {"name": f"{keyword} - 歌手B", "url": "[url=http://example.com/song2.mp3"}]http://example.com/song2.mp3"}[/url]
  44.             ]
  45.             
  46.             for song in mock_data:
  47.                 self.result_list.addItem(song["name"])
  48.                 self.result_list.item(self.result_list.count()-1).setData(32, song["url"])
  49.                
  50.         except Exception as e:
  51.             QMessageBox.warning(self, "错误", f"搜索失败: {str(e)}")
  52.    
  53.     def download_music(self, item):
  54.         """下载选中的音乐"""
  55.         try:
  56.             url = item.data(32)  # 获取存储的URL
  57.             song_name = item.text().replace(" ", "_").replace("/", "") + ".mp3"
  58.             
  59.             # 创建下载目录
  60.             os.makedirs("downloads", exist_ok=True)
  61.             save_path = os.path.join("downloads", song_name)
  62.             
  63.             # 下载音乐文件
  64.             response = requests.get(url, stream=True, timeout=30)
  65.             with open(save_path, 'wb') as f:
  66.                 for chunk in response.iter_content(chunk_size=1024):
  67.                     if chunk:
  68.                         f.write(chunk)
  69.             
  70.             QMessageBox.information(self, "成功", f"已保存到: {save_path}")
  71.             
  72.         except Exception as e:
  73.             QMessageBox.critical(self, "下载失败", f"错误信息: {str(e)}")

  74. if __name__ == '__main__':
  75.     app = QApplication(sys.argv)
  76.     ex = MusicDownloader()
  77.     ex.show()
  78.     sys.exit(app.exec_())
复制代码


### 使用说明:
1. 在搜索框输入歌曲名,按回车进行搜索
2. 双击列表中的歌曲项开始下载
3. 下载的音乐文件会保存在程序所在目录的 downloads 文件夹

### 注意事项:
1. 需要安装依赖库:
   pip install PyQt5 requests
   
2. 实际使用时需要:
   - 替换代码中的模拟数据为真实音乐API
   - 处理可能的反爬机制(如Headers、Cookies)
   - 添加下载进度显示(可通过PyQt5的QProgressBar实现)

### 重要提示:
- 请确保遵守相关网站的使用条款
- 仅下载拥有合法授权的音乐内容
- 本示例仅用于技术学习目的

如果需要实现更完整的功能(如下载进度显示、多线程下载等),可以在基础代码上进行扩展。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层

回帖奖励 +9 鱼币

这个好!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层

回帖奖励 +9 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 3 天前 From FishC Mobile | 显示全部楼层

回帖奖励 +9 鱼币

666这可太刑了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 天前 From FishC Mobile | 显示全部楼层

回帖奖励 +9 鱼币

感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 前天 08:20 | 显示全部楼层

回帖奖励 +9 鱼币

哇!这可太棒了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 前天 09:58 | 显示全部楼层

回帖奖励 +9 鱼币

厉害厉害
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 前天 17:30 | 显示全部楼层

回帖奖励 +9 鱼币

好牛啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 前天 18:16 | 显示全部楼层

回帖奖励 +9 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 前天 21:40 | 显示全部楼层

回帖奖励 +9 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 昨天 08:46 | 显示全部楼层
不错不错
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 昨天 10:04 | 显示全部楼层

回帖奖励 +9 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 昨天 15:16 | 显示全部楼层

回帖奖励 +9 鱼币

好久没看到技术贴了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 昨天 21:55 | 显示全部楼层

回帖奖励 +9 鱼币

好活,当赏!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-5 06:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表