1. 程式人生 > >重新命名從喜馬拉雅下載的音訊檔案

重新命名從喜馬拉雅下載的音訊檔案

  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