]> git.sesse.net Git - vlc/blob - share/lua/meta/art/03_lastfm.lua
lua: lastfm: fix matching
[vlc] / share / lua / meta / art / 03_lastfm.lua
1 --[[
2  Gets an artwork from last.fm
3
4  $Id$
5  Copyright © 2010 the VideoLAN team
6
7  This program is free software; you can redistribute it and/or modify
8  it under the terms of the GNU General Public License as published by
9  the Free Software Foundation; either version 2 of the License, or
10  (at your option) any later version.
11
12  This program is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  GNU General Public License for more details.
16
17  You should have received a copy of the GNU General Public License
18  along with this program; if not, write to the Free Software
19  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
20 --]]
21
22 function descriptor()
23     return { scope="network" }
24 end
25
26 -- Return the artwork
27 function fetch_art()
28     if vlc.item == nil then return nil end
29     local meta = vlc.item:metas()
30
31     if meta["Listing Type"] == "radio"
32     or meta["Listing Type"] == "tv"
33     then return nil end
34
35     if meta["artist"] and meta["album"] then
36         title = meta["artist"].."/"..meta["album"]
37     else
38         return nil
39     end
40     -- remove -.* from string
41     title = string.gsub( title, " ?%-.*", "" )
42     -- remove (info..) from string
43     title = string.gsub( title, "%(.*%)", "" )
44     -- remove CD2 etc from string
45     title = string.gsub( title, "CD%d+", "" )
46     -- remove Disc \w+ from string
47     title = string.gsub( title, "Disc %w+", "" )
48     fd = vlc.stream( "http://www.last.fm/music/" .. title )
49     if not fd then return nil end
50     page = fd:read( 65653 )
51     fd = nil
52     _, _, arturl = string.find( page, "<meta property=\"og:image\" content=\"([^\"]+)\" />" )
53     -- Don't use default album-art (not found one)
54     if not arturl or string.find( arturl, "default_album_mega.png") then
55        return nil
56     end
57     return arturl
58 end