Python批量下载音乐功能
Python批量下载音乐功能
Python批量下载音乐,调用API接口,同时下载歌曲和歌词
先安排一下要用的模块,导入进来。
import re
import json
import requests
目录结构
- 下载音乐
- Awking_Class.py
- music.txt
- 文件文件写的是音乐名字,使用换行分割
- new_music
- 注意这个 new_music是文件夹
- 注意new_music文件夹 没有创建是会报错的
下面是代码:
Awking_Class.py
import re
import json
import requestsclass Awking_Music():def __init__(self, text):self.url = 'https://music.jinchuang.org/api.php?callback=jQuery1113018942027461259858_1722409511333'self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'
}self.source = 'netease' # 接口方式: 网易云:netease QQ音乐:tencentself.text_file = text # 文件地址self.So_Name = '' # 搜索时候的歌名self.Music_Id = '' # 音乐idself.Music_Name = '' # 搜索后,搜到的歌名self.artist = '' # 歌手self.url_id = '' # 音频idself.lyric_id = '' # 歌词iddef main(self):"""入口函数"""# 第一步,读取音乐文件,拿到歌名result = Awking_Music.read_unique_nonempty_lines(self)print(len(result))# 第二步,循环歌名, 搜素音乐for So_Name in result:self.So_Name = So_Nametry:# 调用搜索音乐接口Awking_Music.Search_Music(self)except:print(So_Name, '下载失败')# 开始下载音乐,下载歌词try: # 尝试下载音乐Awking_Music.Url_Music(self)print(So_Name,'-------------下载成功------------')except:Awking_Music.fail_write(self)print(So_Name, '下载失败')try: # 尝试下载歌词Awking_Music.Lyric_Music(self)except:print(So_Name, '歌词下载失败,下载失败')def read_unique_nonempty_lines(self):'''读取text文件,并去除重复的内容'''with open(self.text_file, encoding='utf-8') as f:return list(dict.fromkeys(line.strip() for line in f if line.strip()))def Requests_POST(self, datas):response = requests.post(url=self.url, data=datas, headers=self.headers)try:# 尝试直接从JSONP中提取JSONjson_str = re.search(r'\((.*)\)', response.text).group(1)if json_str:return json.loads(json_str)else:raise ValueError("无法从响应中提取 JSON")except json.JSONDecodeError:raise ValueError("收到的 JSON 无效")def Search_Music(self):'''搜索音乐,返回音乐id'''Search_data = {'types': 'search','count': 1,'source': self.source,'pages': '1','name': self.So_Name,}data = Awking_Music.Requests_POST(self,datas=Search_data)[0]# print(data)self.Music_Id = data['id']self.Music_Name = data['name']self.artist = " ".join(data['artist']) # 列表转字符串self.url_id = data['url_id']self.lyric_id = data['lyric_id']print(self.Music_Name, '搜索成功!!!')# print(f'音乐名称:{self.Music_Name}, {self.Music_Id}, {self.artist} {self.url_id} {self.lyric_id}')def Lyric_Music(self):'''下载歌词'''data = {'types': 'lyric','id': self.lyric_id,'source': self.source,}res = Awking_Music.Requests_POST(self,datas=data)# 保存歌词文件with open(f'./new_music/{self.Music_Name + "--" + self.artist}.lrc', 'w', encoding='utf-8') as f:f.write(res['lyric'])def Url_Music(self):'''下载音乐'''data = {'types': 'url','id': self.url_id,'source': self.source,}Music_Url = Awking_Music.Requests_POST(self,datas=data)['url']res = requests.get(Music_Url) # 请求音乐源地址with open(f'./new_music/{self.Music_Name + "--" + self.artist}.mp3', 'ab') as file: # 保存到本地的文件名file.write(res.content)file.flush()def fail_write(self): # 记录下载失败的音乐# 追加写入内容到文件with open('./fail_music.txt', "a") as file:file.write(self.So_Name)file.write("\n")A = Awking_Music('music.txt')
A.main()
music.txt
青花瓷
太聪明
我们俩
运行结果:
如果下载失败的话,会出现一个 fail_music.txt文件来记录下载失败的音乐
Awking 音乐网址
相关文章:
Python批量下载音乐功能
Python批量下载音乐功能 Python批量下载音乐,调用API接口,同时下载歌曲和歌词 先安排一下要用的模块,导入进来。 import re import json import requests目录结构 下载音乐 Awking_Class.pymusic.txt 文件文件写的是音乐名字,使用换行分割 new_music 注意这个 ne…...
用 Bytebase 实现批量、多环境、多租户数据库的丝滑变更
Bytebase 提供了多种功能来简化批量变更管理,适用于多环境或多租户情况。本教程将指导您如何使用 部署配置 和 数据库组 在不同场景下进行数据库批量变更。 默认流水线 vs 部署配置 图片数据库 vs 数据库组 1. 准备 请确保已安装 Docker,如果本地没有重…...
java之方法引用 —— ::
目录 一、简介 二、引用静态方法 1.格式 2.示例 编辑 3.条件解析 三、引用成员方法 1.格式 2.示例 四、引用构造方法 1.格式 2.示例 五、类名引用成员方法 1.格式 2.略微不同的方法引用规则 3.示例 六、引用数组的构造方法 1.格式 2.示例 一、简介 方…...
「测试线排查的一些经验-上篇」 后端工程师
文章目录 端口占用脚本失灵线上部署项目结构模版配置文件生效 一般产品研发过程所使用的环境可分为: 研发环境-dev测试环境-test生产环境-prod 软件开发中,完整测试环境包括:UT、IT、ST、UAT UT Unit Test 单元测试 IT System Integration …...
AOSP12_BatteryStats统计电池数据信息
前言 BatteryStats模块主要用于设备在电池供电是系统对各个模块电量使用的统计,Android提供的Battery Historain工具就是对此模块统计的数据进行解析和展示。 一 BatteryStats模块类图 模块主要类图如下:见根目录的模块类图 BatteryStats:抽象类,本模块的核心类,主要定…...
【Android Studio】UI 布局
文章目录 view布局LinearLayout view 在Android开发中,View是一个非常重要的概念,它是所有用户界面组件的基类。View类及其子类构成了Android应用中的用户界面。每个View都占用屏幕上的一个矩形区域,并可以响应用户输入(如触摸、按…...
虚拟机Windows server忘记密码解决方法
原理 utilman.exe是Windows辅助工具管理器程序,虽然它本身不是一个关键的系统进程,但通过修改这个文件,用户可以访问一些有用的UI设置。在某些情况下,比如忘记密码需要重置时,通过修改utilman.exe文件为c…...
【香橙派系列教程】(六)嵌入式SQLite数据库
【六】嵌入式SQLite数据库 文章目录 【六】嵌入式SQLite数据库1.简介2.SQLite数据库安装3.SQLite命令用法1.创建数据库2.创建和查看表格3.插入查看数据(记录)4.删除更改数据(记录) 4.SQLite编程操作1.打开/创建数据库的C接口2.创建…...
深入探讨PHP8的新特性与性能优化
本文由 ChatMoney团队出品 随着互联网技术的飞速发展,PHP作为后端开发领域的热门语言也在不断演进。近期,PHP8的发布引起了广泛关注。本文将为您详细介绍PHP8的新特性以及性能优化,并通过具体示例帮助您更好地理解和应用这些新特性。 一、PH…...
2024年06月 Scratch 图形化(四级)真题解析#中国电子学会#全国青少年软件编程等级考试
Scratch图形化等级考试(1~4级)全部真题・点这里 一、单选题(共10题,共30分) 第1题 运行下列程序,输入单词“PLAY”,最后角色说?( ) A:LY4AP B:AP4LY C:YA4PL D:PL4AY 答案:B 根据程序分析可知,首先获取单词字符数,然后奇数位的字母放在字符数左侧,偶数位…...
书生大模型全链路开源体系
书生大模型全链路开源体系 数据 预训练 微调 评测 部署 应用...
极简聊天室-websocket版(双向通信)
我们知道WebSocket是可以双向通信的,把极简聊天室代码又改了一下,前端发信息到后端也使用websocket,其实代码量更少了。。。 const express require(express); const app express(); var wsServer require(express-ws)(app)var msgs[];ap…...
从小白到架构师 | 缓存预热
缓存预热指的是在系统启动或上线前,提前将经常访问的数据加载到缓存中,以避免在系统刚启动时,用户大量请求直接访问数据库,导致数据库压力过大或系统性能下降。通过缓存预热,可以确保系统一上线就能提供快速的响应时间…...
Modbus -- TCP协议
MODBUS TCP协议是一种基于TCP/IP协议的Modbus变种,它允许Modbus协议在以太网网络上运行,使得设备之间可以通过IP网络交换数据。 一:协议概述 modbus_TCP协议:走的是网口,所以需要创建TCPclient对象进行通信,和modubus-RTU协议最大的区别是&a…...
python四舍五入取整数
在Python中,如果你想要对一个浮点数进行四舍五入并取整(即只保留整数部分),你可以使用内置的round()函数,但不指定第二个参数(即小数位数),或者明确指定为0。这样,Python…...
洛谷 P1868 饥饿的奶牛
原题 题目描述 有一条奶牛冲出了围栏,来到了一处圣地(对于奶牛来说),上面用牛语写着一段文字。 现用汉语翻译为: 有 N 个区间,每个区间x,y 表示提供的x∼y 共y−x1 堆优质牧草。你可以选择任意区间但不…...
Arco Design 之Table表格
此篇文章为table表格示例,包含列、data数据、展开、选中、自定义等相关属性 基础表格 <a-table :columns"columns1" :data"tableData1" />const columns1 [{ title: "编号", dataIndex: "no"},{ title: "名称…...
Python机器学习 模型
Python机器学习模型、回归预测模型、数据清洗、数据处理、数据挖掘、数据分析代做。 模型不仅限于线性回归、逻辑回归、决策树、SVM、随机森林、贝叶斯、XGBoost、LightGBM、CatBoost,聚类:K-Means、DBSCAN,机器学习都可。 时间序列分析&…...
基于 STM32 的 NAS私有云盘搭建:集成LwIP 协议、HTTP/HTTPS、WEB前端技术栈(代码示例)
项目概述 在本项目中,我们将搭建一个基于 STM32 的 NAS(网络附加存储)私盘,通过网络访问存储在外部 SATA 硬盘上的文件。该项目将使用 STM32 开发板、外接 SATA 硬盘、LwIP 协议栈以及 FATFS 文件系统来实现文件的上传、下载和管…...
蓝屏?死机?爆CPU?多开卡顿?你有关心过你的硬盘吗?
上来先叠甲 蓝屏、死机、爆cpu、多开卡顿,不一定是硬盘的问题,只是硬盘有问题都可能会引起这些现象,所以不要遇到这些问题就一定认为是硬盘的问题然后说我说的,只是给你一个排除问题的思路。本文会采用比较通俗所以不太专业的角度…...
Flutter开发报错error: unable to unlink old ‘pubspec.yaml‘: Invalid argument
背景:主分支master,然后每人1个分支,每次push到自己分支后,再提mr到master。 于是每次提交前要先git merge origin/master。 有时候会报这个错误,无法merge 原因:很简单,就是pubspec.yaml这个文…...
零基础进程最详解:进程状态、僵尸进程、孤儿进程、阻塞态、挂起态、进程切换、进程常用命令、进程创建、队列优先级
目录 强烈建议全文阅读!!! 强烈建议全文阅读!!! 强烈建议全文阅读!!! 一、进程状态 二、僵尸和孤儿进程 1、僵尸进程 Z(zombie) 2、孤儿进…...
Redis的分布式锁
目录 一、定义与原理 基于Redis的分布式锁 获取锁 释放锁 锁误删问题:因为key值一样,将别人的锁删掉了 锁误判问题二:判断锁和释放锁不是原子性的 Lua脚本 分布式锁:满足分布式系统或集群模式下多进程可见并且互斥的锁 分布式锁的优点…...
C++笔记---类和对象
1. 类的定义 类是C中的一种自定义类型,是某个具体事物或概念的抽象化代码表示,通过类的成员(变量函数/方法),可以表征出事物或概念的特征。 1.1 类定义的格式 class Stack { public:// 成员函数void Init(int n 4)…...
全国区块链职业技能大赛样题第9套后端源码
后端源码地址:https://blog.csdn.net/Qhx20040819/article/details/140746050 前端源码地址:https://blog.csdn.net/Qhx20040819/article/details/140746216 智能合约+数据库表设计:https://blog.csdn.net/Qhx20040819/article/details/140746646 项目预览 登录 用户管理...
3个功能强大的PDF转换工具,免费试用
给大家分享3个功能强大能满足更高需求的PDF转换工具,都提供免费的试用机会。 1.嗨动PDF编辑器 一款多功能的PDF编辑软件,集PDF阅读、PDF转换、PDF编辑功能为一体。支持转换的格式多样,转换速度快,转换后的排版和内容与原文保持一…...
表单修改数字输入框保留小数点
1.在表单设计打开修改的表单 2.打开需要修改的字段 3.按F12,进入“开发模式” 4.开启“开发者工具”左上角检索工具 开启:鼠标左键点击,当图标颜色为蓝色 关闭:鼠标左键点击,当图标颜色为灰色 5.鼠标移动到需要修改的…...
[VS Code扩展]写一个代码片段管理插件(一):介绍与界面搭建
文章目录 VS Code扩展机制项目搭建创建UI元素活动栏按钮主边栏视图主边栏工具栏按钮侧边栏右键菜单编辑器右键菜单 项目地址 [VS Code扩展]写一个代码片段管理插件(一):介绍与界面搭建[VS Code扩展]写一个代码片段管理插件(二&…...
vxe grid slots 用法
官方例子:Vxe Table v3.8 {field: num1,title: Num1,showHeaderOverflow: true,filters: [{ data: }],editRender: { autofocus: .my-input },slots: {// 使用插槽模板渲染default: num1_default,header: num1_header,footer: num1_footer,filter: num1_filter,edi…...
【网络】基于UDP协议的聊天室(第二篇)
目录 UDP服务器 UDP客户端 在C中,使用UDP协议进行网络通信通常涉及到socket编程。下面我将给出基于UDP的简单的客户端和服务器示例代码。这些示例将使用C标准库以及POSIX套接字接口(主要适用于Linux和类Unix系统)。如果你在使用Windows&…...
网站注册管理策划方案/艾滋病阻断药
一、连接查询[连表查询、多表查询]当查询结果的列来源于多张表时,需要将多张表连接成一个大的数据集,再选择合适的列返回mysql支持三种类型的连接查询,分别为:内连接查询(inner join)查询的结果为两个表匹配到的数据使用内连接&am…...
wordpress安装虚拟主机/深圳市企业网站seo营销工具
首先解释一下CiA,CiA是一个组织,CAN in Automation,主要工作是推广CANopen协议。CANopen大概是这样的: CANopen四问 http://www.gongkong.com/article/201412/55783.html 1. CANopen的起源,CANopen从何而来ÿ…...
网站建设流程中哪些部分比较重要/推广接单平台哪个好
RabbitMQ在Erlang node(节点)上 Erlang天生具有集群特性,非常好搭建集群,每一个节点(node)上具有一个叫erlang.Cookie的东西,也是一个标识符,可以互认。 1)、n台Linux的防…...
青海网站制作哪家好/软文范例200字
1. app项目下 ionic setup sass “第一次clone一个项目要编译一次sass” 2. git checkout . “返回到修改之前” 3. git status “查看状态” 4. git diff "如果个别不清楚的文件有修改,可以查看修改内容" 5. git checkout -A “切换到分支A” 6. rm -rf …...
腾达建设哪里的/整站优化方案
rsync 学习 参考 http://www.cnblogs.com/itech/archive/2009/08/10/1542945.html 模式1 本地直接拷贝, 这个其实是调用了 cp 命令, 跟 rsync 服务器, 客户端无关。 /usr/myapp/logs 是本地日志目录 rsync /usr/myapp/logs /usr/myapp/logs2 …...
帮别人做网站哪里可以接单/网站推广软件免费版
闲来无事,看到了拓扑排序就学习了一下。 拓扑排序: 算导上说是使用深搜来对有向无环图进行排序,得到一种线性次序。不过深搜的理解还理解不到。估计是深搜学的不怎么样吧! 说说我理解的这个线性次序吧。我认为算导上的例子就特别…...