diff options
-rwxr-xr-x | bindings/python/examples/add_song.py | 31 | ||||
-rw-r--r-- | bindings/python/ipod.py | 13 |
2 files changed, 33 insertions, 11 deletions
diff --git a/bindings/python/examples/add_song.py b/bindings/python/examples/add_song.py index a913d1d..6a37bb6 100755 --- a/bindings/python/examples/add_song.py +++ b/bindings/python/examples/add_song.py @@ -60,6 +60,8 @@ parser = OptionParser() parser.add_option("-m", "--mountpoint", dest="mountpoint", default="/mnt/ipod", help="use iPod at MOUNTPOINT", metavar="MOUNTPOINT") +parser.add_option("-l", "--playlist", dest="playlist", + help="add tracks to PLAYLIST", metavar="PLAYLIST") parser.add_option("-p", "--podcast", dest="ispodcast", action="store_true", @@ -72,6 +74,15 @@ if len(args) == 0: db = gpod.Database(options.mountpoint) +playlist = None +if options.playlist: + for pl in db.Playlists: + if pl.name == options.playlist: + playlist = pl + if not playlist: + print "Creating new playlist" + playlist = gpod.Playlist(db,title=options.playlist) + for path in args: deleteWhenDone = [] transport = urlparse.urlsplit(path)[0] @@ -86,22 +97,24 @@ for path in args: deleteWhenDone.pop() continue - track = gpod.Track(from_file=path, podcast=options.ispodcast) + try: + track = gpod.Track(from_file=path, podcast=options.ispodcast) + except gpod.TrackException, e: + print "Exception handling %s: %s" % (path, e) + continue db.add(track) if options.ispodcast: - playlists = [db.Podcasts] + playlists = [db.Podcasts, playlist] print "Adding Podcast %s (%s)" % (path,track) else: - playlists = [db.Master] + playlists = [db.Master, playlist] print "Adding Song %s (%s)" % (path,track) - for playlist in playlists: - print " adding to playlist %s" % playlist - playlist.add(track) - print " added to playlist %s" % playlist - - print " added Song %s (%s)" % (path,track) + for pl in playlists: + if pl: + print " adding to playlist %s" % pl + pl.add(track) track.copy_to_ipod() diff --git a/bindings/python/ipod.py b/bindings/python/ipod.py index 020ed20..9a2a357 100644 --- a/bindings/python/ipod.py +++ b/bindings/python/ipod.py @@ -113,7 +113,10 @@ class Track: self._track = gpod.itdb_track_new() self['userdata'] = {'filename_locale': from_file, 'transferred': 0} - audiofile = eyeD3.Mp3AudioFile(self['userdata']['filename_locale']) + try: + audiofile = eyeD3.Mp3AudioFile(self['userdata']['filename_locale']) + except eyeD3.tag.InvalidAudioFormatException, e: + raise TrackException(str(e)) tag = audiofile.getTag() for func, attrib in (('getArtist','artist'), ('getTitle','title'), @@ -123,7 +126,10 @@ class Track: value = getattr(tag,func)() if value: self[attrib] = value - self['genre'] = tag.getGenre().name + try: + self['genre'] = tag.getGenre().name + except AttributeError: + pass disc, of = tag.getDiscNum() if disc is not None: self['cd_nr'] = disc @@ -322,5 +328,8 @@ class Playlist: #return self._pl.num # Always 0 ? return gpod.sw_get_list_len(self._pl.members) + def __nonzero__(self): + return True + def add(self, track, pos=-1): gpod.itdb_playlist_add_track(self._pl, track._track, pos) |