diff options
author | Nicholas Piper <nicholas@users.sourceforge.net> | 2006-04-07 14:51:40 +0000 |
---|---|---|
committer | Nicholas Piper <nicholas@users.sourceforge.net> | 2006-04-07 14:51:40 +0000 |
commit | ef482c1739aa191025aba3c3f19b9c7af7105eb2 (patch) | |
tree | a4cb25089ca67a8a77b4c48972c236191df8a500 | |
parent | 73b1f5b12994628721e96076ff7cfdeb7dd64912 (diff) | |
download | libgpod-ef482c1739aa191025aba3c3f19b9c7af7105eb2.tar.gz libgpod-ef482c1739aa191025aba3c3f19b9c7af7105eb2.tar.xz libgpod-ef482c1739aa191025aba3c3f19b9c7af7105eb2.zip |
Clean up this directory a little, and improve coverart fetching.
git-svn-id: https://gtkpod.svn.sf.net/svnroot/gtkpod/libgpod/trunk@1228 f01d2545-417e-4e96-918e-98f8d0dbbcb6
-rw-r--r-- | bindings/python/examples/Makefile.am | 2 | ||||
-rwxr-xr-x | bindings/python/examples/add_song.py | 75 | ||||
-rwxr-xr-x | bindings/python/examples/coverart_fetch.py | 56 | ||||
-rwxr-xr-x | bindings/python/examples/tag_genre_from_audioscrobber.py (renamed from bindings/python/examples/tag-genre-from-audioscrobber.py) | 0 | ||||
-rwxr-xr-x | bindings/python/examples/toy_around.py (renamed from bindings/python/examples/play.py) | 5 |
5 files changed, 121 insertions, 17 deletions
diff --git a/bindings/python/examples/Makefile.am b/bindings/python/examples/Makefile.am new file mode 100644 index 0000000..1c3ba52 --- /dev/null +++ b/bindings/python/examples/Makefile.am @@ -0,0 +1,2 @@ +EXTRA_DIST = coverart_fetch.py toy_around.py tag-genre-from-audioscrobber.py add_song.py + diff --git a/bindings/python/examples/add_song.py b/bindings/python/examples/add_song.py new file mode 100755 index 0000000..4203284 --- /dev/null +++ b/bindings/python/examples/add_song.py @@ -0,0 +1,75 @@ +#!/usr/bin/python + +## Copyright (C) 2006 Nick Piper <nick-gtkpod at nickpiper co uk> +## Part of the gtkpod project. + +## URL: http://www.gtkpod.org/ +## URL: http://gtkpod.sourceforge.net/ + +## The code contained in this file is free software; you can redistribute +## it and/or modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either version +## 2.1 of the License, or (at your option) any later version. + +## This file is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Lesser General Public License for more details. + +## You should have received a copy of the GNU Lesser General Public +## License along with this code; if not, write to the Free Software +## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +# this file is just a little example to see how you could add music + +import os, os.path +import gpod +import sys +from optparse import OptionParser +import eyeD3 + +parser = OptionParser() +parser.add_option("-m", "--mountpoint", dest="mountpoint", + default="/mnt/ipod", + help="use iPod at MOUNTPOINT", metavar="MOUNTPOINT") +parser.add_option("-a", "--add", + dest="filetoadd",metavar="FILE", + help="add mp3 FILE") +(options, args) = parser.parse_args() + +if not options.filetoadd: + parser.error("Require -a argument to specify mp3 to add.") + +if not eyeD3.isMp3File(options.filetoadd): + parser.error("%s it not recognised as an mp3 file." % options.filetoadd) + +itdb = gpod.itdb_parse(options.mountpoint, None) +if not itdb: + print "Failed to read iPod at %s" % options.mountpoint + sys.exit(2) +itdb.mountpoint = options.mountpoint + +track = gpod.itdb_track_new() +audiofile = eyeD3.Mp3AudioFile(options.filetoadd) +tag = audiofile.getTag() + +track.artist= str(tag.getArtist()) +track.album = str(tag.getAlbum()) +track.title = str(tag.getTitle()) +track.filetype = 'mp3' +track.tracklen = audiofile.getPlayTime() * 1000 # important to add!, iPod uses ms. + +print "Adding %s (Title: %s)" % (options.filetoadd, track.title) + +gpod.itdb_track_add(itdb, track, -1) +master = gpod.sw_get_playlists(itdb)[0] +gpod.itdb_playlist_add_track(master, track, -1) +if gpod.itdb_cp_track_to_ipod(track, options.filetoadd, None) == 1: + print "Copied to %s" % gpod.itdb_filename_on_ipod(track) +else: + print "Copy failed" + +gpod.itdb_write(itdb, None) +print "Saved db" + + diff --git a/bindings/python/examples/coverart_fetch.py b/bindings/python/examples/coverart_fetch.py index 0df6451..3db279f 100755 --- a/bindings/python/examples/coverart_fetch.py +++ b/bindings/python/examples/coverart_fetch.py @@ -36,15 +36,33 @@ if not itdb: print "Failed to read %s" % dbname sys.exit(2) -# set your key here... -amazon.setLicense('') +# set your key here, or see amazon.py for a list of other places to +# store it. +amazon.setLicense('THISISNOTREALLYMYKEY') + +images = {} for track in gpod.sw_get_tracks(itdb): - output = ("/tmp/%s %s.jpg" % (track.artist, track.album)).replace(' ','_') - if not os.path.exists(output): - print "Searching for %s %s" % (track.artist, track.album) + print track.artist, track.album, track.title, " :", + + if track.artwork.artwork_size: + print "Already has artwork, skipping." + continue + + if not (track.artist and track.album): + print "Need an artist AND album name, skipping." + continue + + # avoid fetching again if we already had a suitable image + if not images.has_key((track.album,track.artist)): + query = "%s + %s" % (track.artist, track.album) + # nasty hacks to get better hits. Is there a library out there + # for this? + query = query.replace("Disk 2","") + query = query.replace("Disk 1","") + print "Searching for %s: " % query, try: - albums = amazon.searchByKeyword("%s %s" % (track.artist, track.album), + albums = amazon.searchByKeyword(query, type="lite",product_line="music") except amazon.AmazonError, e: print e @@ -54,19 +72,25 @@ for track in gpod.sw_get_tracks(itdb): continue album = albums[0] + hdle, filename = tempfile.mkstemp() i = urllib.urlopen(album.ImageUrlLarge) - o = open(output, "wb") - o.write(i.read()) - o.close() - img = Image.open(output) + open(filename,"w").write(i.read()) + img = Image.open(filename) if not (img.size[0] > 10 or img.size[1] > 10): - os.unlink(output) + os.unlink(filename) else: - print "Fetched image!" - - if os.path.exists(output): - if gpod.itdb_track_set_thumbnail(track,output) != 0: - print "Failed to save image thumbnail" + print "Fetched image for %s, %s" % (track.album,track.artist) + images[(track.album,track.artist)] = filename + + try: + r = gpod.itdb_track_set_thumbnails(track,images[(track.album,track.artist)]) + if r != 1: + print "Failed to save image thumbnail to ipod." + else: + print "Added thumbnails for %s, %s" % (track.album,track.artist) + except KeyError: + print "No image available for %s, %s" % (track.album,track.artist) + gpod.itdb_write(itdb, None) print "Saved db" diff --git a/bindings/python/examples/tag-genre-from-audioscrobber.py b/bindings/python/examples/tag_genre_from_audioscrobber.py index 205779e..205779e 100755 --- a/bindings/python/examples/tag-genre-from-audioscrobber.py +++ b/bindings/python/examples/tag_genre_from_audioscrobber.py diff --git a/bindings/python/examples/play.py b/bindings/python/examples/toy_around.py index 7356de1..202541c 100755 --- a/bindings/python/examples/play.py +++ b/bindings/python/examples/toy_around.py @@ -47,7 +47,7 @@ if not itdb: sys.exit(2) itdb.mountpoint = ipod_mount -if False: +if True: for playlist in gpod.sw_get_playlists(itdb): print playlist.name print type(playlist.name) @@ -61,6 +61,9 @@ for track in gpod.sw_get_tracks(itdb): if gpod.itdb_playlist_contains_track(playlist, track): lists.append(playlist) + print track.artist + print track.tracklen + print track.size if track.artist == "Placebo": print u"%-25s %-20s %-20s %-30s %s" % (track.title, track.album, |