paulo@0: import os paulo@0: import sys paulo@0: import shutil paulo@0: import gpod paulo@0: paulo@0: paulo@0: def exportTracks(tracks): paulo@0: for t in tracks: paulo@0: artist = t["artist"] paulo@0: title = t["title"] paulo@0: src_fn = t.ipod_filename() paulo@0: (root, ext) = os.path.splitext(src_fn) paulo@0: dst_fn = artist + " - " + title + ext paulo@0: paulo@0: # check if dst exists paulo@0: i = 0 paulo@0: while os.path.exists(dst_fn): paulo@0: dst_fn = artist + " - " + title + '.' + str(i) + ext paulo@0: i += 1 paulo@0: paulo@0: shutil.copy(src_fn, dst_fn) paulo@0: paulo@0: paulo@0: def _trackName(track): paulo@0: return str(track["artist"]) + " - " + str(track["title"]) paulo@0: paulo@0: paulo@0: def importTracks(db, pl, filenames): paulo@0: # set of tracks already in database paulo@0: dbTracks = set() paulo@0: for i in db: paulo@0: dbTracks.add(_trackName(i)) paulo@0: paulo@0: for fn in filenames: paulo@0: (root, ext) = os.path.splitext(os.path.basename(fn)) paulo@0: name = root.split('-', 1) paulo@0: if len(name) < 2: paulo@0: artist = None paulo@0: title = name[0].strip() paulo@0: else: paulo@0: artist = name[0].strip() paulo@0: title = name[1].strip() paulo@0: t = gpod.Track(fn) paulo@0: t["artist"] = artist paulo@0: t["title"] = title paulo@0: paulo@0: print "artist: %s, title: %s" % (artist, title) paulo@0: paulo@0: # only add if track is not already in database paulo@0: trackName = _trackName(t) paulo@0: if trackName not in dbTracks: paulo@0: dbTracks.add(trackName) paulo@0: db.add(t) paulo@0: pl.add(t) paulo@0: paulo@0: paulo@0: def safeClose(db): paulo@0: db.copy_delayed_files() paulo@0: db.close() paulo@0: paulo@0: paulo@0: if __name__ == "__main__": paulo@0: paulo@0: ipodMountPoint = "/mnt/sda1" paulo@0: paulo@0: db = gpod.Database(ipodMountPoint) paulo@0: pl0 = db.get_playlists()[0] paulo@0: paulo@0: fnargs = sys.argv[1:] paulo@0: paulo@0: #pl_shoutcast = db.get_playlists()[-1] paulo@0: paulo@0: #importTracks(db, pl_shoutcast, fnargs) paulo@0: #safeClose(db)