# 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)