[有料组每日学习分享计划--00087]32行代码帮你导出IOS酷我音乐下载的无损音乐

需求与研究:
1.IOS的酷我音乐软件,还是不错滴,可以直接下载APE或是320K的MP3音乐,但是我发现PC上的酷我反而没这个功能,而且其他的音乐软件一般只能下载中低品质的音乐。所以能够从IOS中找到一个方法把它下载的东西导出来还是很有必要的。
2.在手机上下载一些无损音乐后将手机联机到PC,用PP助手或是itools等辅助工具能够打开酷我的文件目录。发现里面有一个music目录,里面的文件名都是纯数字地。我想iphone下载来马上转码肯定没那个速度,就算能转,估计现在也没有更好的格式可以保存音乐,尝试把这些文件直接拉倒PC上改名,恩,果然可以使用。但是问题是你不知道那个文件是什么音乐,那个应该是MP3那个应该是ape?这一个听过来肯定不是办法。
3.网上搜索了一下,真有个哥们捣鼓出一个工具,不过每次使用还要访问一下他的博客,他用vb写的,编译成了一个EXE放在网上供大家下载,估计得到了不少的认可,至少访问量已经上去了。但是他没公布是如何做到的。
4.对于IT宅来说,我猜应该不会很难,那个软件提示一定要把cloud.db文件也复制到pc,我用一文本编辑器打开看看是什么东西。哦,有戏,原来是sqlite数据文件啊。如果不是看到他写cloud.db那么我还是要做些分析工作,比如一个个打开每一个文件之类的,肯定能找到,但是他写了我就容易些,也要致敬一下。
5.打开来看看就非常容易了,这个数据库中有一个MusicResource表,其中存放了歌曲的全部信息,类型、封面地址、试听地址、存放的文件名啥的都有,这就非常easy了,读出来,把Music目录里的文件的文件名改名到数据库里的名称就可以了。
技术:
1.sqlite访问方法。
2.python基本的文件操作,主要是目录列表文件和改文件名,都是比较简单的。
 
实现:
1.用PP助手把cloud.db和music目录复制到硬盘的某个目录。
2.在跟cloud.db平级的目录里编写一个小程序,算上空行和注释一共才32行。源代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# encoding: utf-8
__author__ = 'jy@cjlu.edu.cn'
import sqlite3
import os
conn=sqlite3.connect("cloud.db")
def GetNewFilename(filename):
    cu=conn.cursor()
    cu.execute("select artist,title,album,file,format from musicResource where file='%s'"%filename)
    r=cu.fetchone()
    if r is not None:
        artist,title,album,filename,format=r
        newfilename= "[%s-%s]-%s.%s"%(artist,album,title,format)
    return newfilename.replace("&","").replace(":","").replace("/","")
def   ConvertFiles(path):
 
    if not os.path.exists(path):
        exit()
    pl=os.listdir(path)
    for file in pl:
        #如果不是目录就移动
        #计算新文件名
        if os.path.isfile(os.path.join(path,file)):
            newfilename=GetNewFilename(file)
            print os.path.join(path,file),"-->",os.path.join(path,newfilename)
            os.rename(os.path.join(path,file),os.path.join(path,newfilename))
 
if __name__=="__main__":
 
    ConvertFiles("D:\projecting\Kuwo\Music")
    conn.close()

  

运行效果:
1.KAKA,估计有版权风险,我就不放图片了;
2.速度超级快,一下子就好了,技术上成本接近与0,会python的都能写出来,娱乐一下。

posted on   源姜  阅读(1552)  评论(3编辑  收藏  举报

编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示