欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

重命名从喜马拉雅下载的音频文件

程序员文章站 2022-03-24 11:15:47
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         }
view code

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         }
view code

3. 开始:

(1)定义fileinfo实体类

重命名从喜马拉雅下载的音频文件
1     public class fileinfo
2     {
3         public string id { get; set;}
4         public string title { get; set; }
5     }
view code

(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                 }
view code

(3)获取目录中的音频文件

重命名从喜马拉雅下载的音频文件
1                 // 获取目录中的音频文件
2                 directoryinfo dircetoryinfo = new directoryinfo(tb_file.text);
3                 system.io.fileinfo[] files = dircetoryinfo.getfiles();
view code

(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                 }
view code