当前位置: 首页 > news >正文

网易云音乐歌曲导出缓存为原始音乐文件。低调,低调。。。

最近买了个榭兰图耳机头,拿到手第一件事当然是煲机了。弄个旧手机做24小时煲机但是不想再装多一个网易云音乐,省得一号多登录会问题。对于软工男最先想到的肯定是在本地直接播放音乐了,正好自己 有淘宝88VIP联合会员,于是琢磨着怎么把网易云的试音碟下载下来,想着看看有没有人弄过类似的。搜一下,还真有。

所以首先要感谢这个哥们:

网易云音乐加密缓存破解(python代码)_网易云音乐 python下载mp3代码-CSDN博客

方案是基于缓存进行导出,这样只要把缓存清空后,播放一遍歌曲列表后音乐文件数据就都有了。

试了下脚本。3个问题:
1)导出的位置放到了我的文档
2)没有自动识别后缀,全部都保存为.mp3了
3)没有根据歌曲自动命名

前俩问题拉着AI敲打几轮很快就好了,唯独第3个由于cache里没有存相关信息,貌似不行。代码里有尝试读ID3 TAG,但是下载的文件里没有,所以下面代码只能解决前两项。如果谁解决了第三项方案麻烦给个留言,我来给你点赞:)

改进的python脚本(export.py):

# pip install mutagen
# 网易云cache导出为音频
import os
from mutagen import File# 缓存文件存放目录
cache_folder = '.\\cache\\Cache'
export_folder = '.\\export'def getAllCache():cache_list = []for root, _, fs in os.walk(cache_folder):for f in fs:if f.endswith('.uc'):fullname = os.path.join(root, f)cache_list.append(fullname)return cache_list# 音频格式检测(基于 mutagen)
def detect_audio_format(filepath):audio = File(filepath)if audio and audio.mime:mime = audio.mime[0]ext_map = {"audio/mpeg": ".mp3","audio/mp4": ".m4a","audio/x-aac": ".aac","audio/flac": ".flac","audio/ogg": ".ogg","audio/wav": ".wav",}return ext_map.get(mime, ".audio")return ".audio"# 提取音频标签(标题、作者)
def get_audio_tags(filepath):audio = File(filepath)if not audio:return None, Nonetitle, artist = None, Noneif audio.tags:for key in audio.tags.keys():k = key.lower()if "title" in k and not title:val = audio.tags[key]title = str(val[0] if isinstance(val, list) else val)if ("artist" in k or "author" in k) and not artist:val = audio.tags[key]artist = str(val[0] if isinstance(val, list) else val)return title, artist# 将uc文件转换成音频文件并保存
def transToAudio(cache_list, save_folder):nameid = 0for cache_file in cache_list:tmp_name = str(nameid) + '.tmp'tmp_path = os.path.join(save_folder, tmp_name)# 解密写入临时文件with open(cache_file, 'rb') as f:with open(tmp_path, 'wb') as s:byte = f.read(1)while byte:b = int.from_bytes(byte, byteorder='little', signed=False)b = b ^ 163  # 异或解密s.write(bytes([b]))byte = f.read(1)# 检测格式ext = detect_audio_format(tmp_path)# 提取标签title, artist = get_audio_tags(tmp_path)# 生成最终文件名if title or artist:safe_title = title if title else f"untitled{nameid}"safe_artist = artist if artist else "unknown"final_name = f"{safe_title}-{safe_artist}{ext}"else:final_name = f"{nameid}{ext}"# 清理非法字符final_name = "".join(c if c.isalnum() or c in " -_." else "_" for c in final_name)final_path = os.path.join(save_folder, final_name)os.rename(tmp_path, final_path)print(f"{cache_file} -> {final_path}")nameid += 1if __name__ == '__main__':os.makedirs(export_folder, exist_ok=True)cache_list = getAllCache()transToAudio(cache_list, export_folder)

把该脚本放到你的网易云音乐缓存目录,例如:
D:\CloudMusic
然后python export.py运行后,缓存的文件都自动转换到脚本同级的export目录了。

http://www.dtcms.com/a/343936.html

相关文章:

  • 爬虫逆向之易盾文字点选分析
  • Kafka消息丢失的场景有哪些
  • 漏洞分析 | Kafka Connect 任意文件读取漏洞(CVE-2025-27817)
  • selenium爬虫
  • 开源 vs 商业 DevOps 平台:如何选择最适合你的方案?
  • Elasticsearch高能指南
  • 学习:uniapp全栈微信小程序vue3后台(3)
  • 嵌入式Linux学习 -- 网络1
  • StarRocks启动失败——修复全流程
  • 姓名重名查询抖音快手微信小程序看广告流量主开源
  • 恢复性测试:定义、重要性及实施方法
  • Linux设备模型交互机制详细分析
  • 分段渲染加载页面
  • 第9课:本地功能集成
  • 宋红康 JVM 笔记 Day06|虚拟机栈
  • Seaborn数据可视化实战:Seaborn数据可视化基础-从内置数据集到外部数据集的应用
  • 学习游戏制作记录(合成表UI和技能树的UI)8.22
  • Python打卡Day49 CBAM注意力
  • 小迪安全v2023学习笔记(六十九讲)—— Java安全JWT攻防监控组件泄露接口
  • 北斗导航 | 基于MCMC粒子滤波的接收机自主完好性监测(RAIM)算法(附matlab代码)
  • 【C++组件】Elasticsearch 安装及使用
  • ODYSSEY:开放世界四足机器人的探索与操控,助力长范围任务
  • ref 简单讲解
  • 【前端教程】从基础到进阶:淘宝 HTML 界面“回到顶部”功能的交互升级实战
  • 刷题日记0822
  • Git 版本管理各模块知识点梳理
  • Logstash_Input插件
  • Chrome和Edge如何开启暗黑模式
  • 浏览器插件优化工具:bypass paywalls chrome
  • 【TrOCR】根据任务特性设计词表vocab.json