如何从ios酷我音乐盒中导出已下载的音乐文件(使用Java编程实现)
本工具已经编写了第二版,为不了解编程的读者提供了可以直接使用的软件,请移步这里阅读和使用 http://blog.csdn.net/jzj1993/article/details/44459983
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;public class Test {/*** 存储播放列表的数据结构* * @author jzj*/static class PlayList {int id;String name;public PlayList(String name, int id) {this.name = name;this.id = id;}}// 数据库完整路径static final String db_path = "G:\\IOS\\cloud.db";// 源文件夹static final String src_dir = "G:\\IOS\\Music\\";// 目标文件夹static final String dst_dir = "G:\\IOS\\Music1\\";public static void main(String[] args) throws Exception {Class.forName("org.sqlite.JDBC");Connection conn = DriverManager.getConnection("jdbc:sqlite:" + db_path);Statement stat1 = conn.createStatement();Statement stat2 = conn.createStatement();// 读取播放列表List<PlayList> lists = new ArrayList<Test.PlayList>();ResultSet rs_list = stat1.executeQuery("select * from playlistsInfo;");while (rs_list.next()) {final int id = rs_list.getInt("id");final String name = rs_list.getString("title");switch (name) {// 忽略这几个列表case "本地歌曲":case "默认列表":case "最近播放":case "我的电台":break;case "我喜欢听":default:lists.add(new PlayList(name, id));}}// 读取音乐信息ResultSet rs_res = stat1.executeQuery("select * from musicResource;");while (rs_res.next()) {// 源文件路径String fname = rs_res.getString("file");if (fname == null || fname.length() == 0) // 如果file字段为空则跳过continue;String src_path = src_dir + fname;File src = new File(src_path);if (!src.exists()) // 如果源文件不存在则跳过continue;// 获取音乐ridint rid = rs_res.getInt("rid");// 查找该音乐所在播放列表id, 如果没有找到则为-1ResultSet rs_pl = stat2.executeQuery(new StringBuilder("select playlist_id from playlistMusics where rid=").append(rid).append(';').toString());int playlist_id = -1;while (rs_pl.next()) { // 默认将一首歌放在编号最大的播放列表中(也就是最新创建的列表)int p_id = rs_pl.getInt("playlist_id");if (p_id > playlist_id)playlist_id = p_id;}rs_pl.close();// 目标文件夹路径StringBuilder b2 = new StringBuilder(dst_dir);if (playlist_id >= 0) {String playlist_name = getPlaylist(lists, playlist_id);if (playlist_name != null) {b2.append(playlist_name).append('\\');}}String dir = b2.toString();new File(dir).mkdirs();// 目标文件名: "艺术家 - 歌曲名.扩展名"StringBuilder b3 = new StringBuilder();b3.append(rs_res.getString("artist")).append(" - ").append(rs_res.getString("title")).append('.').append(rs_res.getString("format"));String dst_path = dir + b3.toString();// 移动和重命名File dst = new File(dst_path);src.renameTo(dst);// 输出信息System.out.println(new StringBuilder(src_path).append(" ---> ").append(dst_path));}rs_res.close();conn.close();}static String getPlaylist(List<PlayList> lists, int playlist_id) {for (PlayList pl : lists) {if (pl.id == playlist_id)return pl.name;}return null;}
}
如何从ios酷我音乐盒中导出已下载的音乐文件(使用Java编程实现)相关推荐
- 如何从ipad(iphone)的酷我音乐盒中导出已下载的音乐文件
如何从ios酷我音乐盒中导出已下载的音乐文件 本文所涉及内容用于技术学习,请勿用于不正当用途,否则后果自负. 酷我音乐ios版下载的音乐文件,通过同步助手等软件查看时,发现音乐文件都是一串数字命名.通 ...
- 如何为ios酷我音乐盒下载导出的音乐文件(使用Java程序设计)
这个工具已经准备第二版,读者了解编程软件,可以直接使用,请阅读和使用这个场地 http://blog.csdn.net/jzj1993/article/details/44459983 本文所涉及内容 ...
- 怎么从Chrome浏览器中导出扩展程序为crx文件?
在chrome浏览器中安装好一些我们需要的chrome扩展程序后,有一天如果浏览器需求卸载后重新安装,但是我们这些插件又不好备份,当然用户可以始终在我们chrome插件网( http://www.cn ...
- java病毒扫描代码,J2EE中集成赛门铁克防病毒扫描引擎[Java编程]
赞助商链接 本文"J2EE中集成赛门铁克防病毒扫描引擎[Java编程]"是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行 ...
- Vue中实现图片下载到本地功能和导出(下载)excel文件功能:
一.实现图片下载到本地功能 需求: 将勾选的列表项的id传给后台,让后台处理并下载对应的图片 1. 后台接口: 下载图片zip: GET /download 请求数据类型 application/x- ...
- vue移动端h5中a标签下载/预览文件
需求:项目分PC端和移动端,PC端(react)以实现列表页附件下载,现需同步移动端(vue)h5页面在原有的列表页中增加一行查看(下载)附件. 只写结构,暂不考虑其他,增加附件行的代码如下: < ...
- Asp.NET中如何一次性下载多个文件
在ASP.NET中,我们可以很方便的下载单个文件,当需要一次性下载多个文件的时候,如果提示用户一次一次保存的话,会导致用户体验特别的不好.我这里找到一种比较合理的解决方案,就是先把要下载的所有文件打包 ...
- iPhone用户干货:袋鼠下载,如何导出已下载的视频到其他播放器?
今天要给大家带来相关教程,袋鼠下载一键导出转存,视频永久保留. 要达到袋鼠下载器里面的视频一键导出转存,使视频永久保留的目的,我们需要使用一款叫袋鼠播放器的软件,这也是袋鼠的又一大神器,这款软件能在A ...
- 华为手机微信分身已下载文件如何拷贝,导出已下载文件
很多人使用了分身应用,但是苦于找不到分身的文件存储位置,拷贝不了文件. 安卓其实基于Linux系统,文件存储也是基于Linux系统进行操作.所以普通的文件浏览器不能访问到隐藏的文件目录.需要使用特别的 ...
最新文章
- 公司新来的同事一顿操作把大家整懵了,问了他的经历细思极恐。。。
- python获取url参数 类继承_python之类的继承
- DuiC 统一配置管理 2
- jedis操作redis(一)
- 设计模式C++实现(3)——装饰模式
- 新闻发布项目——接口类(newsTbDao)
- 前端学习(2158):webpack配置文件的分离
- 【今日CV 视觉论文速览】Tue 21 Mar 2019
- Android 之 ProgressDialog用法介绍
- 安卓一个页面设置另一个页面的文本样式_H1标签对于SEO有多重要?页面要不要用H1标签呢?...
- 一段简单的python代码_一个简单的python写的C/S程序
- Scala: 简介和安装
- 用计算机和电视机组成家庭影院,请问家庭影院的音响能接在电脑上用么?我的电脑没有配置音响能用家庭 爱问知识人...
- 计算机基础知识教程函数,EXCEL函数教程_电脑基础知识_IT计算机_专业资料.ppt
- 免费搭建无限容量个人网盘
- oracle的mins,分钟缩写是min还是mins 即min是minutes的缩
- ChemDraw怎么画3D图?
- 软件系统三员管理_3个可怕的系统管理员故事
- 2542 咖啡和作业 (简单二分)
- Ringly智能戒指:能在手机收到消息时发光
热门文章
- 《篡权的ss》-linux命令五分钟系列之三十一
- grub引导iso光盘[可用于ntfs]
- apache rewrite 二级域名
- 语言中2000u等于多少_PLC文本语言
- 使用PHP时出现乱码,php出现乱码该怎么解决?
- python操作hbase,Python操作Hbase
- lombok插件_lombok插件,让代码更简洁
- Java中xmp标签的作用_如何在Java中从JPEG读取XMP面部数据
- P3258 [JLOI2014]松鼠的新家(树上点查分)
- TCP文件上传Java_java 基于TCP协议的文件上传