# HG changeset patch # User paulo@twcdns.fastsearch.net # Date 1297322952 28800 # Node ID 206b58198b48043d180bec4fe388b2b5e2b92c5b add gpodutil.py diff -r 000000000000 -r 206b58198b48 gpodutil.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gpodutil.py Wed Feb 09 23:29:12 2011 -0800 @@ -0,0 +1,74 @@ +import os +import sys +import shutil +import gpod + + +def exportTracks(tracks): + for t in tracks: + artist = t["artist"] + title = t["title"] + src_fn = t.ipod_filename() + (root, ext) = os.path.splitext(src_fn) + dst_fn = artist + " - " + title + ext + + # check if dst exists + i = 0 + while os.path.exists(dst_fn): + dst_fn = artist + " - " + title + '.' + str(i) + ext + i += 1 + + shutil.copy(src_fn, dst_fn) + + +def _trackName(track): + return str(track["artist"]) + " - " + str(track["title"]) + + +def importTracks(db, pl, filenames): + # set of tracks already in database + dbTracks = set() + for i in db: + dbTracks.add(_trackName(i)) + + for fn in filenames: + (root, ext) = os.path.splitext(os.path.basename(fn)) + name = root.split('-', 1) + if len(name) < 2: + artist = None + title = name[0].strip() + else: + artist = name[0].strip() + title = name[1].strip() + t = gpod.Track(fn) + t["artist"] = artist + t["title"] = title + + print "artist: %s, title: %s" % (artist, title) + + # only add if track is not already in database + trackName = _trackName(t) + if trackName not in dbTracks: + dbTracks.add(trackName) + db.add(t) + pl.add(t) + + +def safeClose(db): + db.copy_delayed_files() + db.close() + + +if __name__ == "__main__": + + ipodMountPoint = "/mnt/sda1" + + db = gpod.Database(ipodMountPoint) + pl0 = db.get_playlists()[0] + + fnargs = sys.argv[1:] + + #pl_shoutcast = db.get_playlists()[-1] + + #importTracks(db, pl_shoutcast, fnargs) + #safeClose(db)