iOS酷我音乐导出工具使用说明和原理介绍(提供下载链接及工程源码)

软件下载链接

酷我音乐ios版下载的音乐文件,通过同步助手等软件查看时,发现音乐文件都是一串数字命名。通过网上查找和自己尝试,发现那些文件都是音频文件改了文件名而已。只要修改回文件名,就能和正常的音乐一样播放了。

之前写了一个简单的Java程序实现了功能,但是没有提供打包好的程序供大家使用。最近特地写了一个简单的图形界面供下载使用。如有问题或改进建议可联系本人(在原文中评论即可)。

可直接点此链接下载打包好的exe程序使用。
https://github.com/jzj1993/iOS-KwMusic-Export-Tools/raw/master/iOS-KwMusic-Export-Tools.exe

如果不是Windows系统,可下载打包好的jar程序使用(电脑上需要安装jre)。
https://github.com/jzj1993/iOS-KwMusic-Export-Tools/raw/master/iOS-KwMusic-Export-Tools.jar

使用方法说明

1、复制文件

首先利用同步助手等软件,从iOS设备(iPhone或iPad)中导出下载的音乐文件,放到电脑上的一个文件夹中。一般在图中的DownloadingSave和Music文件夹中。

技术分享

然后找到数据库文件cloud.db并复制出来,如图。

技术分享

复制到电脑中的文件如图。

技术分享

技术分享

2、使用音乐导出工具

下载并双击打开音乐导出工具如图。如果不能运行,请在电脑上安装jre,具体方法可以百度搜索。

技术分享

分别选择数据库文件cloud.db和音乐文件保存的文件夹(注意将所有音乐文件都放到所选文件夹下,不能放到它的子文件夹中)。点击开始处理,即开始进行处理,处理完成后如图。

技术分享

处理完成后的音乐。

技术分享

使用本程序整理导出的音频文件,实测700多首音乐,只需不到两分钟即可完成。

软件实现

有兴趣了解本软件实现、有一定Java编程能力、有意改进本软件的读者可以继续往下看。

前台图形界面的实现

图形界面使用的是Java自带的Swing和AWT框架,GUI与交互部分的源码如下:
https://github.com/jzj1993/iOS-KwMusic-Export-Tools/blob/master/src/ClsMain.java

数据库操作支持库

数据处理方面,其本质就是从数据库文件读取信息,并据此修改文件名和移动。数据库的操作使用的是sqlitejdbc-v037-nested.jar支持包。

后台数据部分的实现

从手机复制出cloud.db数据库文件,为SQLite数据库文件。用SQLite Database Browser打开,看到里面和音乐关系比较密切的主要有三个数据表:

  1. playlistsInfo中保存着播放列表信息,字段title为列表名称,字段id为列表id

    技术分享

  2. playlistMusics保存了音乐和播放列表的对应关系,字段titleartist等为音乐信息,rid为音乐资源id,字段playlist_id对应了所属播放列表id

    技术分享

  3. musicResource中是音乐信息和文件对应关系,字段file为对应的文件名,format为文件格式,rid为音乐资源id

    技术分享

    技术分享

于是程序的工作流程是这样的:

  1. 首先从musicResource逐一读取每首音乐的rid
  2. 通过ridplaylistMusics中查找playlist_id,可能找不到,也可能不止一个,因为同一首音乐可能在多个列表中,这里简单的取最大的playlist_id,通常应该是相对比较新的播放列表;
  3. 然后在playlistsInfo中找到playlist_id对应的播放列表名,作为目标音乐的子文件夹;
  4. 最后把源文件重命名为“歌手名 – 歌曲名.扩展名”,并移动到目标文件夹即可。

数据处理部分的源码如下:
https://github.com/jzj1993/iOS-KwMusic-Export-Tools/blob/master/src/Data.java

完整工程下载 / Fork me on GitHub
https://github.com/jzj1993/iOS-KwMusic-Export-Tools

注:因为我现在没有iOS设备,本文中有两张Itools的截图来自
http://blog.sina.com.cn/s/blog_4d5428240101bs5x.html

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。