重新命名從喜馬拉雅下載的音訊檔案
阿新 • • 發佈:2018-12-24
Win10的應用商店中,可以安裝喜馬拉雅,並下載感興趣的音訊檔案。下載的音訊如下圖所示, 有兩個json檔案(圖1),其中一個json檔案(2677885list.json)包含了所下載音訊的詳細資訊,包括id和title(檔案真實名稱);音訊檔案是一串純數字的id作為名稱,沒有顯示音訊的真實名稱(圖2)。可以利用這個id找到音訊檔案的真實名稱,並給音訊檔案重新命名。對音訊檔案重新命名後的效果(圖3)。
本人用WinForm開發了一個應用,介面主要三個部分:1. 選擇音訊目錄;2. 選擇json檔案;3. 開始。
1. 選擇音訊目錄:
1View Codeprivate 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 privateView Codevoid 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 {View Code3 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 }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