summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbindings/python/examples/add_song.py31
-rw-r--r--bindings/python/ipod.py13
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)