[maemo-commits] [maemo-commits] r16256 - projects/haf/branches/hildon-thumbnail/daemonize/tests
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Mon Sep 29 13:22:27 EEST 2008
- Previous message: [maemo-commits] r16255 - projects/haf/branches/hildon-thumbnail/daemonize/tests
- Next message: [maemo-commits] r16257 - in projects/haf/trunk/sapwood: . demos engine protocol server
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: pvanhoof Date: 2008-09-29 13:22:23 +0300 (Mon, 29 Sep 2008) New Revision: 16256 Modified: projects/haf/branches/hildon-thumbnail/daemonize/tests/google-images-art-downloader.vala Log: Some various fixes Modified: projects/haf/branches/hildon-thumbnail/daemonize/tests/google-images-art-downloader.vala =================================================================== --- projects/haf/branches/hildon-thumbnail/daemonize/tests/google-images-art-downloader.vala 2008-09-29 10:10:54 UTC (rev 16255) +++ projects/haf/branches/hildon-thumbnail/daemonize/tests/google-images-art-downloader.vala 2008-09-29 10:22:23 UTC (rev 16256) @@ -1,17 +1,25 @@ using GLib; +// This is the interface on DBus that you must implement + [DBus (name = "com.nokia.albumart.Provider")] public interface Provider { public abstract void Fetch (string artistalbum, string uri); } +// Sample implementation of com.nokia.albumart.Provider that uses Google +// images's first result as album-art cover. There is of course no certainty +// that the first result on Google images is indeed the album's cover. But it's +// a good estimate nonetheless. + public class GoogleImages : Object, Provider { + public void Fetch (string artistalbum, string uri) { uint u = 0, hread = 0; string [] pieces = artistalbum.split (" ", -1); string stitched = ""; - print ("Fetch " + artistalbum + " " + uri + "\n"); + // Convert the album-artist into something that will work for Google images while (pieces[u] != null) { if (u != 0) @@ -20,19 +28,28 @@ u++; } + // Start the query on Google images + File google_search = File.new_for_uri ("http://images.google.com/images?q=" + stitched); + try { char [] buffer = new char [40000]; string asstring; + + // Fetch the first page + InputStream stream = google_search.read (null); - if (stream != null) - stream.read_all (buffer, 40000, out hread, null); + stream.read_all (buffer, 40000, out hread, null); buffer[hread] = 0; asstring = (string) buffer; + + // Find the first result + string found = asstring.str ("http://tbn0.google.com/images?q=tbn"); if (found != null) { + StringBuilder url = new StringBuilder (); long y = found.len(); int i = 0; @@ -45,19 +62,28 @@ string cache_path; string cache_dir = Path.build_filename (Environment.get_home_dir(), - ".album_art", - null); + ".album_art", + null); + // Define cache path = ~/.album_art/MD5 (down (albumartist)).jpeg + cache_path = Path.build_filename (Environment.get_home_dir(), - ".album_art", - Checksum.compute_for_string (ChecksumType.MD5, artistalbum.down () + ".jpeg", -1), - null); + ".album_art", + Checksum.compute_for_string ( + ChecksumType.MD5, + artistalbum.down () + ".jpeg", + -1), + null); + // Make sure the directory .album_arts is available + DirUtils.create_with_parents (cache_dir, 0770); File online_image = File.new_for_uri (url.str); File cache_image = File.new_for_path (cache_path); + // Copy from Google images to local cache + online_image.copy (cache_image, FileCopyFlags.NONE, null, @@ -80,9 +106,11 @@ "org.freedesktop.DBus", "/org/freedesktop/DBus", "org.freedesktop.DBus"); // try to register service in session bus + uint request_name_result = bus.request_name ("com.nokia.albumart.GoogleImages", (uint) 0); if (request_name_result == DBus.RequestNameReply.PRIMARY_OWNER) { + // start server var server = new GoogleImages ();
- Previous message: [maemo-commits] r16255 - projects/haf/branches/hildon-thumbnail/daemonize/tests
- Next message: [maemo-commits] r16257 - in projects/haf/trunk/sapwood: . demos engine protocol server
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]