]> git.sesse.net Git - vlc/blob - share/lua/sd/appletrailers.lua
3675c5d9cbd7cec36d5f81eb84e124d9f53db1a6
[vlc] / share / lua / sd / appletrailers.lua
1 --[[
2  $Id$
3
4  Copyright © 2010 VideoLAN and AUTHORS
5
6  Authors: Ilkka Ollakka <ileoo at videolan dot org >
7
8  This program is free software; you can redistribute it and/or modify
9  it under the terms of the GNU General Public License as published by
10  the Free Software Foundation; either version 2 of the License, or
11  (at your option) any later version.
12
13  This program is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  GNU General Public License for more details.
17
18  You should have received a copy of the GNU General Public License
19  along with this program; if not, write to the Free Software
20  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
21 --]]
22
23 function descriptor()
24     return { title="Apple Trailers" }
25 end
26
27 function find( haystack, needle )
28     local _,_,r = string.find( haystack, needle )
29     return r
30 end
31
32 function main()
33     fd = vlc.stream( "http://trailers.apple.com/trailers/home/feeds/just_hd.json" )
34     if not fd then return nil end
35     options = {":http-user-agent=QuickTime/7.2",":demux=avformat,ffmpeg",":play-and-pause"}
36     line = fd:readline()
37     while line ~= nil
38     do
39          if string.match( line, "title" ) then 
40             title = vlc.strings.resolve_xml_special_chars( find( line, "title\":\"(.-)\""))
41             art = find( line, "poster\":\"(.-)\"")
42             if string.match( art, "http://" ) then
43             else
44                 art = "http://trailers.apple.com"..art
45             end
46
47             url = find( line, "location\":\"(.-)\"")
48             playlist = vlc.stream( "http://trailers.apple.com"..url.."includes/playlists/web.inc" )
49             if not playlist then 
50                 vlc.msg.info("Didn't get playlist...")
51             end
52
53             node = vlc.sd.add_node( {title=title,arturl=art} )
54
55             playlistline = playlist:readline()
56             description =""
57             if not playlistline then vlc.msg.info("Empty playlists-file") end
58             while playlistline ~= nil
59             do
60                 if string.match( playlistline, "class=\".-first" ) then
61                     description = find( playlistline, "h%d.->(.-)</h%d")
62                 end
63                 if string.match( playlistline, "class=\"hd\".-\.mov") then
64                     for urlline,resolution in string.gmatch(playlistline, "class=\"hd\".-href=\"(.-.mov)\".-(%d+.-p)") do
65                         urlline = string.gsub( urlline, "_"..resolution, "_h"..resolution )
66                         node:add_subitem( {path = urlline,
67                                   title=title.." "..description.." ("..resolution..")",
68                                   options=options, arturl=art })
69                     end
70                 end
71                 playlistline = playlist:readline()
72             end
73          end
74          line = fd:readline()
75     end
76 end