From: Pierre d'Herbemont Date: Wed, 13 Jan 2010 12:16:01 +0000 (+0100) Subject: lua: Add a tvrage.lua meta fetcher. X-Git-Tag: 1.1.0-ff~1211 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=1273d73899198c333528a3546eeecc650e73270c;p=vlc lua: Add a tvrage.lua meta fetcher. --- diff --git a/share/Makefile.am b/share/Makefile.am index 3b8469fac7..0dae816861 100644 --- a/share/Makefile.am +++ b/share/Makefile.am @@ -194,6 +194,8 @@ DIST_lua= \ lua/meta/art/01_musicbrainz.lua \ lua/meta/art/02_frenchtv.lua \ lua/meta/art/10_googleimage.lua \ + lua/meta/fetcher/README.txt \ + lua/meta/fetcher/tvrage.lua \ lua/meta/reader/README.txt \ lua/meta/reader/filename.lua \ lua/playlist/README.txt \ diff --git a/share/lua/meta/fetcher/README.txt b/share/lua/meta/fetcher/README.txt new file mode 100644 index 0000000000..eaad466b1c --- /dev/null +++ b/share/lua/meta/fetcher/README.txt @@ -0,0 +1,12 @@ +Instructions to code your own VLC Lua meta script. +$Id$ + +See lua/README.txt for generic documentation about Lua usage in VLC. + +Examples: See filename.lua . + +VLC Lua "meta fetcher" modules should define one of the following functions: + * fetch_meta(): returns a path to an artwork for the given item + +Available VLC specific Lua modules: msg, stream, strings, variables, item, +objects and misc. See lua/README.txt diff --git a/share/lua/meta/fetcher/tvrage.lua b/share/lua/meta/fetcher/tvrage.lua new file mode 100644 index 0000000000..521067dd0d --- /dev/null +++ b/share/lua/meta/fetcher/tvrage.lua @@ -0,0 +1,79 @@ +--[[ + Gets metas for tv episode using tvrage. + + $Id$ + Copyright © 2007 the VideoLAN team + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. +--]] + +-- Replace non alphanumeric char by + +function get_query( title ) + -- If we have a .EXT remove the extension. + str = string.gsub( title, "(.*)%....$", "%1" ) + return string.gsub( str, "([^%w ])", + function (c) return string.format ("%%%02X", string.byte(c)) end) +end + +function fetch_meta() + local metas = vlc.item.metas(vlc.item) + + local showName = metas["showName"] + if not showName then + return false + end + + local seasonNumber = metas["seasonNumber"]; + if not seasonNumber then + return false + end + + local episodeNumber = metas["episodeNumber"]; + if not episodeNumber then + return false + end + + local fd = vlc.stream("http://services.tvrage.com/feeds/search.php?show=" .. get_query(showName)) + local page = fd:read( 65653 ) + fd = nil + _, _, showid = string.find( page, "(.-)" ) + if not showid then + return false + end + + fd = vlc.stream("http://services.tvrage.com/feeds/full_show_info.php?sid=" .. showid) + page = fd:read( 65653 ) + fd = nil + _, _, season = string.find(page, "(.-)") + if not season then + return false + end + + _, _, episode = string.find(season, "(.-"..episodeNumber..".-)") + if not episode then + return false + end + + _, _, title, artwork = string.find(episode, "(.-)(.-)") + if not title then + return false + end + + vlc.item.set_meta(vlc.item, "title", showName.. " S"..seasonNumber.."E"..episodeNumber.." - ".. title) + vlc.item.set_meta(vlc.item, "artwork_url", artwork) + vlc.item.set_meta(vlc.item, "episodeName", title) + + return true +end