重命名从喜马拉雅下载的音频文件
程序员文章站
2022-06-25 08:22:00
Win10的应用商店中,可以安装喜马拉雅,并下载感兴趣的音频文件。下载的音频如下图所示, 有两个json文件(图1),其中一个json文件(2677885list.json)包含了所下载音频的详细信息,包括id和title(文件真实名称);音频文件是一串纯数字的id作为名称,没有显示音频的真实名称( ......
win10的应用商店中,可以安装喜马拉雅,并下载感兴趣的音频文件。下载的音频如下图所示, 有两个json文件(图1),其中一个json文件(2677885list.json)包含了所下载音频的详细信息,包括id和title(文件真实名称);音频文件是一串纯数字的id作为名称,没有显示音频的真实名称(图2)。可以利用这个id找到音频文件的真实名称,并给音频文件重命名。对音频文件重命名后的效果(图3)。
本人用winform开发了一个应用,界面主要三个部分:1. 选择音频目录;2. 选择json文件;3. 开始。
1. 选择音频目录:
1 private void bt_select_file_click(object sender, eventargs e) 2 { 3 folderbrowserdialog path = new folderbrowserdialog(); 4 path.showdialog(); 5 tb_file.text = path.selectedpath; 6 }
2. 选择json文件:
1 private void bt_select_json_click(object sender, eventargs e) 2 { 3 openfiledialog file = new openfiledialog(); 4 file.showdialog(); 5 tb_json.text = file.filename; 6 }
3. 开始:
(1)定义fileinfo实体类
1 public class fileinfo 2 { 3 public string id { get; set;} 4 public string title { get; set; } 5 }
(2)定义fileinfo的泛型类对象,读取json文件,转换成string类型,再反序列化为类对象
1 // 定义fileinfo的泛型类对象 2 list<fileinfo> fileinfo = new list<fileinfo>(); 3 4 // 读取json文件,转换成string类型,再反序列化为类对象 5 using (streamreader file = file.opentext(tb_json.text)) 6 { 7 using (jsontextreader reader = new jsontextreader(file)) 8 { 9 jtoken token = jtoken.readfrom(reader); 10 string json = token.tostring(); 11 fileinfo = jsonconvert.deserializeobject<list<fileinfo>>(json); 12 } 13 }
(3)获取目录中的音频文件
1 // 获取目录中的音频文件 2 directoryinfo dircetoryinfo = new directoryinfo(tb_file.text); 3 system.io.fileinfo[] files = dircetoryinfo.getfiles();
(4)根据json中的id信息找到对应的文件,然后用title和.mp3组成新的文件名,最后用moveto方法进行重命名
1 // 根据json中的id信息找到对应的文件,然后用title和.mp3组成新的文件名,最后用moveto方法进行重命名 2 foreach (var file in files) 3 { 4 string[] sarray = file.name.split('.'); //获取文件不带扩展名的文件名 5 foreach (var item in fileinfo) 6 { 7 if (sarray[0] == item.id) 8 { 9 string destpath = path.combine(tb_file.text, item.title + ".mp3"); //组合成新的文件名称和原始路径 10 file.moveto(destpath); // 文件重命名 11 } 12 } 13 }