diff options
| author | Jorg Schuler <jcsjcs@users.sourceforge.net> | 2005-09-27 13:17:46 +0000 |
|---|---|---|
| committer | Jorg Schuler <jcsjcs@users.sourceforge.net> | 2005-09-27 13:17:46 +0000 |
| commit | 9b316df59ef9df9f0c7a979849e70ef58fd2d16d (patch) | |
| tree | dbd7fbdcf5cddc7993c50bf9677551696eb7adad /bindings/python/examples | |
| parent | d6dec038c4b1080024184298558e54df7fd10b70 (diff) | |
| download | libgpod-9b316df59ef9df9f0c7a979849e70ef58fd2d16d.tar.gz libgpod-9b316df59ef9df9f0c7a979849e70ef58fd2d16d.tar.xz libgpod-9b316df59ef9df9f0c7a979849e70ef58fd2d16d.zip | |
* itdb.h, itdb_itunesdb.c, itdb_private.h: moved next_id from
Itdb_iTunesDB to FExport.
* bindings/phython/examples/tag-genrr-from-audioscrobber.py: added
(thanks to Nicholas Piper)
git-svn-id: https://gtkpod.svn.sf.net/svnroot/gtkpod/libgpod/trunk@1104 f01d2545-417e-4e96-918e-98f8d0dbbcb6
Diffstat (limited to 'bindings/python/examples')
| -rwxr-xr-x | bindings/python/examples/play.py | 44 | ||||
| -rwxr-xr-x | bindings/python/examples/tag-genre-from-audioscrobber.py | 56 |
2 files changed, 100 insertions, 0 deletions
diff --git a/bindings/python/examples/play.py b/bindings/python/examples/play.py new file mode 100755 index 0000000..6ad6f60 --- /dev/null +++ b/bindings/python/examples/play.py @@ -0,0 +1,44 @@ +#!/usr/bin/python + +import os, os.path +import gpod +import sys + +ipod_mount = '/mnt/ipod' + +remove_track = "The Dancer" + +#dbname = os.path.join(os.environ['HOME'],".gtkpod/iTunesDB") +dbname = os.path.join(ipod_mount,"iPod_Control/iTunes/iTunesDB") + +itdb = gpod.itdb_parse_file(dbname, None) +if not itdb: + print "Failed to read %s" % dbname + sys.exit(2) +itdb.mountpoint = ipod_mount + + +for track in gpod.sw_get_tracks(itdb): + lists = [] + for playlist in gpod.sw_get_playlists(itdb): + if gpod.itdb_playlist_contains_track(playlist, track): + lists.append(playlist) + + print "%-25s %-20s %-20s %-30s %s" % (track.title, + track.album, + track.artist, + gpod.itdb_filename_on_ipod(track), + repr(",".join([l.name for l in lists]))) + + if track.title == remove_track: + print "Removing track.." + print "..disk" + os.unlink(gpod.itdb_filename_on_ipod(track)) + for l in lists: + print "..playlist %s" % l.name + gpod.itdb_playlist_remove_track(l, track) + print "..db" + gpod.itdb_track_unlink(track) + print "Track removed." + +gpod.itdb_write_file(itdb, dbname, None) diff --git a/bindings/python/examples/tag-genre-from-audioscrobber.py b/bindings/python/examples/tag-genre-from-audioscrobber.py new file mode 100755 index 0000000..4a16fb7 --- /dev/null +++ b/bindings/python/examples/tag-genre-from-audioscrobber.py @@ -0,0 +1,56 @@ +#!/usr/bin/python + +import os, os.path +import gpod +import sys +from xml import xpath +from xml.dom import minidom +from xml.parsers.expat import ExpatError +import urllib2, urllib + +TRUST_LIMIT = 10 +dbname = os.path.join(os.environ['HOME'],".gtkpod/local_0.itdb") + + +itdb = gpod.itdb_parse_file(dbname, None) +if not itdb: + print "Failed to read %s" % dbname + sys.exit(2) + +cache={} +for track in gpod.sw_get_tracks(itdb): + if track.artist is None: + continue + + key = track.artist.upper() + if not cache.has_key(key): + url = "http://ws.audioscrobbler.com/1.0/artist/%s/toptags.xml" % urllib.quote(track.artist) + + try: + reply = urllib2.urlopen(url).read() + xmlreply = minidom.parseString(reply) + attlist = xpath.Evaluate("//toptags/tag[1]/@name",xmlreply) + count = xpath.Evaluate("//toptags/tag[1]/@count",xmlreply) + if attlist and count and int(count[0].value) > TRUST_LIMIT: + cache[key] = str(attlist[0].value.title()) # no unicode please :-) + except urllib2.HTTPError, e: + pass + #print "Urllib failed.", e + except ExpatError, e: + print "Failed to parse,", e + print reply + + if cache.has_key(key): + track.genre = cache[key] + print "%-25s %-20s %-20s --> %s" % (track.title, + track.album, + track.artist, + track.genre) + else: + print "%-25s %-20s %-20s === %s" % (track.title, + track.album, + track.artist, + track.genre) + + +gpod.itdb_write_file(itdb, dbname, None) |
