summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicholas Piper <nicholas@users.sourceforge.net>2006-04-07 14:51:40 +0000
committerNicholas Piper <nicholas@users.sourceforge.net>2006-04-07 14:51:40 +0000
commitef482c1739aa191025aba3c3f19b9c7af7105eb2 (patch)
treea4cb25089ca67a8a77b4c48972c236191df8a500
parent73b1f5b12994628721e96076ff7cfdeb7dd64912 (diff)
downloadlibgpod-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.am2
-rwxr-xr-xbindings/python/examples/add_song.py75
-rwxr-xr-xbindings/python/examples/coverart_fetch.py56
-rwxr-xr-xbindings/python/examples/tag_genre_from_audioscrobber.py (renamed from bindings/python/examples/tag-genre-from-audioscrobber.py)0
-rwxr-xr-xbindings/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,