pyzyd 发表于 前天 20:09

PyQt5+requests实现音乐下载

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

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





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

源码打包:




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

链接:打包好的应用





FishC 发表于 前天 20:11

下面是一个使用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 小助理,如未能正确解答您的问题,请继续追问。

不二如是 发表于 前天 20:52

这个好!

某一个“天” 发表于 前天 21:19

{:10_275:}

冲浪的口香糖 发表于 前天 21:41

666这可太刑了

爬虫121 发表于 前天 22:02

感谢

画风华 发表于 昨天 08:20

哇!这可太棒了{:5_106:}

快速收敛 发表于 昨天 09:58

厉害厉害

gpa5031 发表于 昨天 17:30

好牛啊

Mr.江南 发表于 昨天 18:16

{:5_106:}

sfqxx 发表于 昨天 21:40

yueyueyue1023W 发表于 1 小时前

不错不错
页: [1]
查看完整版本: PyQt5+requests实现音乐下载