Python解密网易云音乐缓存文件获取MP3
前言
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。
作者:GeneralMonkey
Python解密网易云音乐缓存文件获取MP3
1、安装mutagen
2、获取缓存文件目录文件
3、缓存文件解码
4、获取MP3歌曲信息
5、循环进行保存文件到指定目录
全部源码
1、安装mutagen
首先进行安装mutagen,直接命令行安装,前提条件,你需要先安装pip工具,如果你解密或者这个工具不懂,或者你也刚学python不久,建议去小编的Python交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新Python教程项目可拿,多跟里面的人交流,进步更快哦!
pip install mutagen
2、获取缓存文件目录文件
网易云音乐客户端中设置,找到你的音乐缓存目录,里面有一个.uc文件,通过比较,发现uc文件和mp3文件大小基本一致,网上查询得知每字节和0xa3做异或即可, ^0xa3,我们将缓存先进行保存到一个列表中。
#获取uc文件列表
def listfiles(path):
for root, dirs, files in os.walk(path):
for file in files:
if os.path.splitext(file)[1] == '.uc':
fList.append(file)
print(fList)
3、缓存文件解码
拿到缓存文件的列表之后,我们开始进行异或运算,然后保存成mp3文件,期间需要进行获取mp3文件信息,由于文件中有可能获取不到歌曲的信息,我们做了一个操作,凡是获取的不到歌曲名称信息的文件,一律保存"未知歌曲"+序号的方式作为新文件名称,当然你也可以自定义。
#音乐文件解码
def decodefile(filepath, newfilepath,index):
with open(filepath,'rb') as infile:
bytearr = bytearray(infile.read())
with open(newfilepath, 'wb') as outfile:
for i,j in enumerate(bytearr):
bytearr[i] = j ^ 0xa3
outfile.write(bytearr)
outfile.close()
name = wirtefilename(newfilepath)
if name is not None:
try:
os.rename(newfilepath, os.path.join(SavePath, name)+'.mp3')
except FileExistsError as e:
print("file exist")
except OSError as e:
name = "未知曲目" + str(index)
os.rename(newfilepath, os.path.join(SavePath, name) + '.mp3')
finally:
...
else:
name = "未知曲目"+str(index)
try:
os.rename(newfilepath, os.path.join(SavePath, name)+'.mp3')
except FileExistsError as e:
print("file exist")
finally:
4、获取MP3歌曲信息
利用mutagen模块中的MP3进行获取歌曲信息,部分歌曲可能获取不到信息。
# 获取mp3歌曲名称
def wirtefilename(musicpath):
#print(musicpath)
fileinfo = MP3(musicpath, ID3 = EasyID3)
print(fileinfo)
if fileinfo != {}:
print(fileinfo['title'][0])
name = str(fileinfo['title'][0])
5、循环进行保存文件到指定目录
最后我们逐文件进行保存即可。
if __name__ == "__main__":
listfiles(CachePath)
index = 0
print(len(fList))
for i in fList:
decodefile(os.path.join(CachePath, i),os.path.join(SavePath, "Temp.mp3"), index)
index = index+1
全部源码
import os
from mutagen.mp3 import MP3
from mutagen.easyid3 import EasyID3
CachePath = "F:/缓存Temp/Cache"
SavePath = "C:/Users/Administrator/Desktop/Save"
fList = []
#获取uc文件列表
def listfiles(path):
for root, dirs, files in os.walk(path):
for file in files:
if os.path.splitext(file)[1] == '.uc':
fList.append(file)
print(fList)
#音乐文件解码
def decodefile(filepath, newfilepath,index):
with open(filepath,'rb') as infile:
bytearr = bytearray(infile.read())
with open(newfilepath, 'wb') as outfile:
for i,j in enumerate(bytearr):
bytearr[i] = j ^ 0xa3
outfile.write(bytearr)
outfile.close()
name = wirtefilename(newfilepath)
if name is not None:
try:
os.rename(newfilepath, os.path.join(SavePath, name)+'.mp3')
except FileExistsError as e:
print("file exist")
except OSError as e:
name = "未知曲目" + str(index)
os.rename(newfilepath, os.path.join(SavePath, name) + '.mp3')
finally:
...
else:
name = "未知曲目"+str(index)
try:
os.rename(newfilepath, os.path.join(SavePath, name)+'.mp3')
except FileExistsError as e:
print("file exist")
finally:
...
# 获取mp3歌曲名称
def wirtefilename(musicpath):
#print(musicpath)
fileinfo = MP3(musicpath, ID3 = EasyID3)
print(fileinfo)
if fileinfo != {}:
print(fileinfo['title'][0])
name = str(fileinfo['title'][0])
return str(name)
if __name__ == "__main__":
listfiles(CachePath)
index = 0
print(len(fList))
for i in fList:
decodefile(os.path.join(CachePath, i),os.path.join(SavePath, "Temp.mp3"), index)
index = index+1
Python解密网易云音乐缓存文件获取MP3的更多相关文章
- 开源小工具 酷狗、网易音乐缓存文件转mp3工具
发布一个开源小工具,支持将酷狗和网易云音乐的缓存文件转码为MP3文件. 以前写过kgtemp文件转mp3工具,正好当前又有网易云音乐缓存文件需求,因此就在原来小工具的基础上做了一点修改,增加了对网易云 ...
- Python 获取 网易云音乐热门评论
最近在研究文本挖掘相关的内容,所谓巧妇难为无米之炊,要想进行文本分析,首先得到有文本吧.获取文本的方式有很多,比如从网上下载现成的文本文档,或者通过第三方提供的API进行获取数据.但是有的时候我们想要 ...
- 手把手教你用Python网络爬虫获取网易云音乐歌曲
前天给大家分享了用Python网络爬虫爬取了网易云歌词,在文尾说要爬取网易云歌曲,今天小编带大家一起来利用Python爬取网易云音乐,分分钟将网站上的音乐down到本地. 跟着小编运行过代码的筒子们将 ...
- 使用python获取网易云音乐无损音频教程
博客园主页:http://www.cnblogs.com/handoing/ github项目:https://github.com/handoing/get-163-music 环境:Python ...
- NetCloud——一个网易云音乐评论抓取和分析的Python库
在17的四月份,我曾经写了一篇关于网易云音乐爬虫的文章,还写了一篇关于评论数据可视化的文章.在这大半年的时间里,有时会有一些朋友给我发私信询问一些关于代码方面的问题.所以我最近抽空干脆将原来的代码整理 ...
- Python爬取网易云音乐歌手歌曲和歌单
仅供学习参考 Python爬取网易云音乐网易云音乐歌手歌曲和歌单,并下载到本地 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做 ...
- Python爬虫小白入门(六)爬取披头士乐队历年专辑封面-网易云音乐
一.前言 前文说过我的设计师小伙伴的设计需求,他想做一个披头士乐队历年专辑的瀑布图. 通过搜索,发现网易云音乐上有比较全的历年专辑信息加配图,图片质量还可以,虽然有大有小. 我的例子怎么都是爬取图片? ...
- Python爬虫——request实例:爬取网易云音乐华语男歌手top10歌曲
requests是python的一个HTTP客户端库,跟urllib,urllib2类似,但比那两个要简洁的多,至于request库的用法, 推荐一篇不错的博文:https://cuiqingcai. ...
- 如何用Python网络爬虫爬取网易云音乐歌曲
今天小编带大家一起来利用Python爬取网易云音乐,分分钟将网站上的音乐down到本地. 跟着小编运行过代码的筒子们将网易云歌词抓取下来已经不再话下了,在抓取歌词的时候在函数中传入了歌手ID和歌曲名两 ...
随机推荐
- 作业要求20191107-6 beta week 2/2 Scrum立会报告+燃尽图 05
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/9958 一.小组情况 队名:扛把子 组长:孙晓宇 组员:宋晓丽 梁梦瑶 韩 ...
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等)
python3 解释器默认编码为Unicode,由str类型进行表示.二进制数据使用byte类型表示. 字符串通过编码转换成字节串,字节码通过解码成为字符串. encode:str-->byte ...
- 2019-11-28:ssrf基础学习,笔记
ssrf服务端请求伪造ssrf是一种由恶意访问者构造形成由服务端发起请求的一个安全漏洞,一般情况下,ssrf访问的目标是从外网无法访问的内部系统,正式因为它是由服务端发起的,所以它能请求到它相连而外网 ...
- Spring事务笔记
1:在同一个类中,如果A方法有事务,B方法也有事务(propagation = Propagation.REQUIRES_NEW),如下代码所示: @Override@Transactionalpub ...
- [需求设计]从一个小需求感受Redis的独特魅力
分享一个简单的小需求应该怎么设计实现以及有关Redis的使用 Redis在实际应用中使用的非常广泛,本篇文章就从一个简单的需求说起,为你讲述一个需求是如何从头到尾开始做的,又是如何一步步完善的.之前写 ...
- 从Excel到Python:最常用的36个Pandas函数
本文涉及pandas最常用的36个函数,通过这些函数介绍如何完成数据生成和导入.数据清洗.预处理,以及最常见的数据分类,数据筛选,分类汇总,透视等最常见的操作. 生成数据表 常见的生成数据表的方法有两 ...
- hasChildNodes()
hasChildNodes():方法可以用来检查一个给定的元素是否有子节点. booleanValue = element.hasChildNodes 这个方法将返回一个布尔值true或false.如 ...
- salesforce lightning零基础学习(十六) 公用组件之 获取字段label信息
我们做的项目好多都是多语言的项目,针对不同国家需要展示不同的语言的标题.我们在classic中的VF page可谓是得心应手,因为系统中已经封装好了我们可以直接在VF获取label/api name等 ...
- react中将svg做成icon组件在其他模块调用
开发前端页面,经常会有很多共用的图标icon,那么我们把它单独做成组件,以便后期重复调用! 首先在components 的icons文件夹下创建BaseIcon.js文件. 我们需要先在命令行安装gl ...
- js前端数据验证JS工具
var regexEnum = { intege : "^-?[1-9]\\d*$", // 整数 intege1 : "^[1-9]\\d*$", // 正整 ...