7
7
public class PodTool {
9
9
private static void Usage () {
10
Console.WriteLine ("ipod-tool [--dump-songs, --dump-playlists, --clear] <mount_point> ");
10
Console.WriteLine ("ipod-tool [--dump-tracks, --dump-playlists, --clear] <mount_point> ");
13
private static string GetSongPath (string dest, Song song) {
14
string artist = song.Artist;
13
private static string GetTrackPath (string dest, Track track) {
14
string artist = track.Artist;
16
16
if (artist == null || artist == String.Empty)
17
17
artist = "Unknown";
19
string album = song.Album;
19
string album = track.Album;
21
21
if (album == null || album == String.Empty)
24
string title = song.Title;
24
string title = track.Title;
25
25
if (title == null || title == String.Empty)
28
string ext = Path.GetExtension (song.FileName);
28
string ext = Path.GetExtension (track.FileName);
31
31
string path = null;
65
65
string dest = args[2];
67
int total = db.Songs.Length;
67
int total = db.Tracks.Count;
69
foreach (Song song in db.Songs) {
70
string path = GetSongPath (dest, song);
71
Console.WriteLine ("Copying ({0} of {1}): {2}", count++, total, song);
69
foreach (Track track in db.Tracks) {
70
string path = GetTrackPath (dest, track);
71
Console.WriteLine ("Copying ({0} of {1}): {2}", count++, total, track);
73
73
string dir = Path.GetDirectoryName (path);
74
74
if (!Directory.Exists (dir))
75
75
Directory.CreateDirectory (dir);
77
File.Copy (song.FileName, path);
77
File.Copy (track.FileName, path);
81
foreach (Song song in db.Songs) {
82
Console.WriteLine (song);
81
foreach (Track track in db.Tracks) {
82
Console.WriteLine (track);
85
85
case "--dump-playlists":
86
86
foreach (Playlist playlist in db.Playlists) {
87
87
Console.WriteLine ("Playlist: " + playlist.Name);
88
foreach (Song song in playlist.Songs) {
89
Console.WriteLine ("\t" + song);
88
foreach (Track track in playlist.Tracks) {
89
Console.WriteLine ("\t" + track);
95
Song song = db.CreateSong ();
96
song.Artist = "WOO WOO";
97
song.Album = "WOO WOO";
98
song.Title = "WOO WOO";
99
song.Duration = new TimeSpan(333 * TimeSpan.TicksPerMillisecond);
100
song.FileName = "/tmp/foobar.mp3";
95
Track track = db.CreateTrack ();
96
track.Artist = "WOO WOO";
97
track.Album = "WOO WOO";
98
track.Title = "WOO WOO";
99
track.Duration = new TimeSpan(333 * TimeSpan.TicksPerMillisecond);
100
track.FileName = "/tmp/foobar.mp3";
103
case "--remove-song":
103
case "--remove-track":
104
104
int id = Int32.Parse (args[2]);
105
foreach (Song song in db.Songs) {
107
db.RemoveSong (song);
105
foreach (Track track in db.Tracks) {
107
db.RemoveTrack (track);
111
foreach (Song song in db.Songs) {
112
db.RemoveSong (song);
111
foreach (Track track in db.Tracks) {
112
db.RemoveTrack (track);
116
foreach (Track track in db.Tracks) {
117
Console.WriteLine ("{0}: total {1}, latest {2}", track.Title,
118
track.PlayCount, track.LatestPlayCount);