1: private static class ITunesExporter{
2: public static void Export(string playlistName, string path) {
3: iTunesAppClass iTunes = new iTunesAppClass();
4:
5: foreach (IITPlaylist playlist in iTunes.LibrarySource.Playlists) {
6: if (playlist.Name == playlistName) {
7: foreach (IITTrack track in playlist.Tracks) {
8: if (track.Kind == ITTrackKind.ITTrackKindFile) {
9: IITFileOrCDTrack file = (IITFileOrCDTrack)track;
10: string extension = Path.GetExtension(file.Location);
11: string newPath = ITunesExporter.createValidFileName(path, file.Artist, file.Album, file.Name, extension);
12: string newDirectoryName = Path.GetDirectoryName(newPath);
13: Directory.CreateDirectory(newDirectoryName);
14:
15: if (File.Exists(newPath) == false) {
16: File.Copy(file.Location, newPath);
17: }
18: }
19: }
20: }
21: }
22: }
23: private static string createValidFileName(string exportPath, string artist, string album, string track, string extension) {
24: artist = ITunesExporter.removeInvalidFileNameCharacters(artist);
25: album = ITunesExporter.removeInvalidFileNameCharacters(album);
26: track = ITunesExporter.removeInvalidFileNameCharacters(track);
27:
28: string filePath = exportPath;
29: filePath = Path.Combine(filePath, artist);
30: filePath = Path.Combine(filePath, album);
31: filePath = Path.Combine(filePath, track);
32: filePath = Path.ChangeExtension(filePath, extension);
33: return filePath;
34: }
35: private static string removeInvalidFileNameCharacters(string str) {
36: char[] chars = Path.GetInvalidFileNameChars();
37: foreach (char c in chars) {
38: str = str.Replace(c.ToString(), null);
39: }
40: return str;
41: }
42: }