vlc/vlc-1.2 | branch: master | Konstantin Pavlov <[email protected]> | Fri Jan 20 17:23:26 2012 +0400| [229f75eae24c9d2cf4977018fd9eac276ae76417] | committer: Jean-Baptiste Kempf
Musicbrainz art: try to find image if album name is lacking. (cherry picked from commit cbfb9425df939d90ace2ae136b4c08485d71f981) Signed-off-by: Jean-Baptiste Kempf <[email protected]> > http://git.videolan.org/gitweb.cgi/vlc/vlc-1.2.git/?a=commit;h=229f75eae24c9d2cf4977018fd9eac276ae76417 --- share/lua/meta/art/04_musicbrainz.lua | 39 +++++++++++++++++++++++++++------ 1 files changed, 32 insertions(+), 7 deletions(-) diff --git a/share/lua/meta/art/04_musicbrainz.lua b/share/lua/meta/art/04_musicbrainz.lua index dbeda9f..32f98c2 100644 --- a/share/lua/meta/art/04_musicbrainz.lua +++ b/share/lua/meta/art/04_musicbrainz.lua @@ -28,18 +28,43 @@ function try_query(query) _, _, asin = string.find( page, "<asin>(%w+)</asin>" ) if asin then return "http://images.amazon.com/images/P/"..asin..".01._SCLZZZZZZZ_.jpg" - else - return nil end + vlc.msg.dbg("ASIN not found") + return nil +end + +-- Return the mbid for first release +function try_release(query) + local s = vlc.stream( query ) + if not s then return nil end + local page = s:read( 65653 ) + + -- FIXME: multiple results may be available and the first one is not + -- guaranteed to have asin, so if it doesnt, we wouldnt get any art + _, _, releaseid = string.find( page, "<release id=\"([%x%-]-)\">" ) + if releaseid then + return releaseid + end + return nil end -- Return the artwork function fetch_art() local meta = vlc.item:metas() - if not (meta["artist"] and meta["album"]) then - return nil - end - local query1 = "http://mb.videolan.org/ws/2/release/?query=artist:"..vlc.strings.encode_uri_component(meta["artist"]).."%20AND%20release:\""..vlc.strings.encode_uri_component(meta["album"].."\"") - return try_query(query1) + if meta["artist"] and meta["album"] then + query = "artist:\"" .. meta["artist"] .. "\" AND release:\"" .. meta["album"] .. "\"" + relquery = "http://mb.videolan.org/ws/2/release/?query=" .. vlc.strings.encode_uri_component( query ) + return try_query( relquery ) + elseif meta["artist"] and meta["title"] then + query = "artist:\"" .. meta["artist"] .. "\" AND recording:\"" .. meta["title"] .. "\"" + recquery = "http://mb.videolan.org/ws/2/recording/?query=" .. vlc.strings.encode_uri_component( query ) + releaseid = try_release( recquery ) + if releaseid then + relquery = "http://mb.videolan.org/ws/2/release/" .. releaseid + return try_query( relquery ) + else + return nil + end + end end _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
