local page = s:read( 65653 )
-- FIXME: multiple results may be available
- asin = string.gsub( page, "^.*<asin>([^<]*)</asin>.*$", "%1" )
+ _,_,asin = string.find( page, "<asin>(.-)</asin>" )
if asin ~= page then
return "http://images.amazon.com/images/P/"..asin..".01._SCLZZZZZZZ_.jpg"
else
-- Probe function.
function probe()
return vlc.access == "http"
- and string.match( vlc.path, "trailers.apple.com" )
+ and string.match( vlc.path, "www.apple.com/trailers" )
+end
+
+function find( haystack, needle )
+ local _,_,r = string.find( haystack, needle )
+ return r
end
-- Parse function.
do
line = vlc.readline()
if not line then break end
- if string.match( line, "http://movies.apple.com/movies/.*%.mov" )
- or string.match( line, "http://images.apple.com/movies/.*%.mov" )
- then
- if string.match( line, "http://movies.apple.com/movies/.*%.mov" ) then
- path = vlc.strings.decode_uri( string.gsub( line, "^.*(http://movies.apple.com/movies/.*%.mov).*$", "%1" ) )
- elseif string.match( line, "http://images.apple.com/movies/.*%.mov" ) then
- path = vlc.strings.decode_uri( string.gsub( line, "^.*(http://images.apple.com/movies/.*%.mov).*$", "%1" ) )
- end
- if string.match( path, "480p" ) then
+ for path in string.gmatch( line, "http://movies.apple.com/movies/.-%.mov" ) do
+ path = vlc.strings.decode_uri( path )
+ if string.match( path, "320" ) then
+ extraname = " (320p)"
+ elseif string.match( path, "480" ) then
extraname = " (480p)"
- elseif string.match( path, "720p" ) then
+ elseif string.match( path, "640" ) then
+ extraname = " (640p)"
+ elseif string.match( path, "720" ) then
extraname = " (720p)"
- elseif string.match( path, "1080p" ) then
+ elseif string.match( path, "1080" ) then
extraname = " (1080p)"
else
extraname = ""
end
if string.match( line, "<title>" )
then
- title = vlc.strings.decode_uri( string.gsub( line, "^.*<title>([^<]*).*$", "%1" ) )
+ title = vlc.strings.decode_uri( find( line, "<title>(.-)<" ) )
end
if string.match( line, "<meta name=\"Description\"" )
then
- description = vlc.strings.resolve_xml_special_chars( string.gsub( line, "^.*name=\"Description\" content=\"([^\"]*)\".*$", "%1" ) )
+ description = vlc.strings.resolve_xml_special_chars( find( line, "name=\"Description\" content=\"(.-)\"" ) )
end
end
return p
-- Probe function.
function probe()
return vlc.access == "http"
- and string.match( vlc.path, "www.break.com" )
+ and string.match( vlc.path, "break.com" )
end
-- Parse function.
line = vlc.readline()
if not line then break end
if string.match( line, "sGlobalContentFilePath=" ) then
- filepath= string.gsub( line, ".*sGlobalContentFilePath='([^']*).*", "%1" )
+ _,_,filepath= string.find( line, "sGlobalContentFilePath='(.-)'" )
end
if string.match( line, "sGlobalFileName=" ) then
- filename = string.gsub( line, ".*sGlobalFileName='([^']*).*", "%1")
+ _,_,filename = string.find( line, ".*sGlobalFileName='(.-)'")
end
if string.match( line, "sGlobalContentTitle=" ) then
- filetitle = string.gsub( line, ".*sGlobalContentTitle='([^']*).*", "%1")
+ _,_,filetitle = string.find( line, "sGlobalContentTitle='(.-)'")
end
if string.match( line, "el=\"videothumbnail\" href=\"" ) then
- arturl = string.gsub( line, ".*el=\"videothumbnail\" href=\"([^\"]*).*", "%1" )
+ _,_,arturl = string.find( line, "el=\"videothumbnail\" href=\"(.-)\"" )
end
if string.match( line, "videoPath" ) then
- return { { path = ( string.gsub( line, ".*videoPath', '([^']*).*", "%1" ) )..filepath.."/"..filename..".flv"; title = filetitle; arturl = arturl } }
+ _,_,videopath = string.find( line, ".*videoPath', '(.-)'" )
+ return { { path = videopath..filepath.."/"..filename..".flv"; title = filetitle; arturl = arturl } }
end
end
end
function parse()
p = {}
--vlc.msg.dbg( vlc.path )
- if string.match( vlc.path, "www.canalplus.fr/index.php%?pid=" )
+ if string.match( vlc.path, "www.canalplus.fr/.*%?pid=.*" )
then -- This is the HTML page's URL
+ local _,_,pid = string.find( vlc.path, "pid(%d-)%-" )
local id, name, description, arturl
while true do
-- Try to find the video's title
-- vlc.msg.dbg( line )
if string.match( line, "aVideos" ) then
if string.match( line, "CONTENT_ID.*=" ) then
- id = string.gsub( line, "^.*\"(.*)\".*$", "%1" )
+ _,_,id = string.find( line, "\"(.-)\"" )
elseif string.match( line, "CONTENT_VNC_TITRE" ) then
- arturl = string.gsub( line, "^.*src=\"(.*)\".*$", "%1" )
- name = string.gsub( line, "^.*title=\"(.*)\".*$", "%1" )
+ _,_,arturl = string.find( line, "src=\"(.-)\"" )
+ _,_,name = string.find( line, "title=\"(.-)\"" )
elseif string.match( line, "CONTENT_VNC_DESCRIPTION" ) then
- description = string.gsub( line, "^.*\"(.*)\".*$", "%1" )
+ _,_,description = string.find( line, "\"(.-)\"" )
end
if id and string.match( line, "new Array" ) then
add_item( p, id, name, description, arturl )
if not line then break end
--vlc.msg.dbg( line )
if string.match( line, "<hi" ) then
- local path = string.gsub( line, "^.*%[(.-)%].*$", "%1" )
+ local _,_,path = string.find( line, "%[(http.-)%]" )
return { { path = path } }
end
end
- vlc.msg.err( "canalplus: can't find video in page" )
end
end
function get_url_param( url, name )
- return string.gsub( url, "^.*[&?]"..name.."=([^&]*).*$", "%1" )
+ local _,_,ret = string.find( url, "[&?]"..name.."=([^&]*)" )
+ return ret
end
function add_item( p, id, name, description, arturl )
function probe()
return vlc.access == "http"
and string.match( vlc.path, "dailymotion.com" )
- and string.match( vlc.peek( 256 ), "<!DOCTYPE.*<title>Video " )
+ and string.match( vlc.peek( 2048 ), "<!DOCTYPE.*video_type" )
+end
+
+function find( haystack, needle )
+ local _,_,ret = string.find( haystack, needle )
+ return ret
end
-- Parse function.
if not line then break end
if string.match( line, "param name=\"flashvars\" value=\".*video=" )
then
- arturl = vlc.strings.decode_uri( string.gsub( line, "^.*param name=\"flashvars\" value=\".*preview=([^&]*).*$", "%1" ) )
- videos = vlc.strings.decode_uri( string.gsub( line, "^.*param name=\"flashvars\" value=\".*video=([^&]*).*$", "%1" ) )
+ arturl = vlc.strings.decode_uri( find( line, "param name=\"flashvars\" value=\".*preview=([^&]*)" ) )
+ videos = vlc.strings.decode_uri( find( line, "param name=\"flashvars\" value=\".*video=([^&]*)" ) )
--[[ we get a list of different streams available, at various codecs
and resolutions:
/A@@spark||/B@@spark-mini||/C@@vp6-hd||/D@@vp6||/E@@h264
path = "http://dailymotion.com" .. available[bestcodec]
end
end
+ if string.match( line, "<meta name=\"title\"" )
+ then
+ name = vlc.strings.resolve_xml_special_chars( find( line, "name=\"title\" content=\"(.-)\"" ) )
+ end
if string.match( line, "<meta name=\"description\"" )
then
- name = vlc.strings.resolve_xml_special_chars( string.gsub( line, "^.*name=\"description\" content=\"%w+ (.*) %w+ %w+ %w+ %w+ Videos\..*$", "%1" ) )
- description = vlc.strings.resolve_xml_special_chars( string.gsub( line, "^.*name=\"description\" content=\"%w+ .* %w+ %w+ %w+ %w+ Videos\. ([^\"]*)\".*$", "%1" ) )
+ description = vlc.strings.resolve_xml_special_chars( find( line, "name=\"description\" content=\"(.-)\"" ) )
end
if path and name and description and arturl then break end
end
line = vlc.readline()
if not line then break end
if string.match( line, "class=\"editiondate\"" ) then
- editiondate = string.gsub( line, "^.*<h1>(.*)</h1>.*$", "%1" )
+ _,_,editiondate = string.find( line, "<h1>(.-)</h1>" )
end
if string.match( line, "mms.*%.wmv" ) then
- video = string.gsub( line, "^.*mms(.*%.wmv).*$", "mmsh%1" )
+ _,_,video = string.find( line, "mms(.-%.wmv)" )
+ video = "mmsh"..video
table.insert( p, { path = video; name = editiondate } )
end
if string.match( line, "class=\"subjecttimer\"" ) then
oldtime = time
- time = string.gsub( line, "^.*href=\"([^\"]*)\".*$", "%1" )
+ _,_,time = string.find( line, "href=\"(.-)\"" )
if oldtime then
table.insert( p, { path = video; name = name; duration = time - oldtime; options = { ':start-time='..tostring(oldtime); ':stop-time='..tostring(time) } } )
end
--]]
function get_url_param( url, name )
- return string.gsub( url, "^.*[&?]"..name.."=([^&]*).*$", "%1" )
+ local _,_,ret = string.find( url, "[&?]"..name.."=([^&]*)" )
+ return ret
end
-- Probe function.
if not line then break end
if string.match( line, "media:content.*flv" )
then
- local s = string.gsub( line, "^.*<media:content(.-)/>.*$", "%1" )
+ local _,_,s = string.find( line, "<media:content(.-)/>" )
path = vlc.strings.resolve_xml_special_chars(get_arg( s, "url" ))
duration = get_arg( s, "duration" )
end
if string.match( line, "media:thumbnail" )
then
- local s = string.gsub( line, "^.*<media:thumbnail(.-)/>.*$", "%1" )
+ local _,_,s = string.find( line, "<media:thumbnail(.-)/>" )
arturl = vlc.strings.resolve_xml_special_chars(get_arg( s, "url" ))
end
if string.match( line, "media:title" )
then
- name = string.gsub( line, "^.*<media:title>(.-)</media:title>.*$", "%1" )
+ _,_,name = string.find( line, "<media:title>(.-)</media:title>" )
end
if string.match( line, "media:description" )
then
- description = string.gsub( line, "^.*<media:description>(.-)</media:description>.*$", "%1" )
+ _,_,description = string.find( line, "<media:description>(.-)</media:description>" )
end
end
return { { path = path; name = name; arturl = arturl; duration = duration; description = description } }
-- we have to get the xml
if string.match( vlc.path, "www.megavideo.com.*&v=.*&u=.*" ) then
- id = string.gsub( vlc.path, "www.megavideo.com.*v=([^&]*).*$", "%1" )
+ _,_,id = string.find( vlc.path, "www.megavideo.com.*v=([^&]*)" )
path = "http://www.megavideo.com/xml/videolink.php?v=" .. id
return { { path = path } }
end
line = vlc.readline()
end
-- now gets the encoded url
- s = string.gsub( xml, ".*ROW url=\"([^\"]*).*", "%1" )
+ _,_,s = string.find( xml, ".*ROW url=\"(.-)\"" )
path = ""
i = 1
while s:byte(i) do
-- Parse function.
function parse()
+ vlc.msg.warn("FIXME")
if string.match( vlc.path, "watch/" )
then -- This is the HTML page's URL
while true do
line = vlc.readline()
if not line then break end
if string.match( line, "<meta name=\"title\"" ) then
- name = string.gsub( line, "^.*content=\"Metacafe %- ([^\"]*).*$", "%1" )
+ _,_,name = string.find( line, "content=\"Metacafe %- (.-)\"" )
end
if string.match( line, "<meta name=\"description\"" ) then
- description = string.gsub( line, "^.*content=\"([^\"]*).*$", "%1" )
+ _,_,description = string.find( line, "content=\"(.-)\"" )
end
if string.match( line, "<link rel=\"image_src\"" ) then
- arturl = string.gsub( line, "^.*href=\"([^\"]*)\".*$", "%1" )
+ _,_,arturl = string.find( line, "href=\"(.-)\"" )
end
if name and description and arturl then break end
end
return { { path = string.gsub( vlc.path, "^.*watch/(.*[^/])/?$", "http://www.metacafe.com/fplayer/%1.swf" ); name = name; description = description; arturl = arturl; } }
else -- This is the flash player's URL
- return { { path = string.gsub( vlc.path, "^.*mediaURL=([^&]*).*$", "%1" ) } }
+ local _,_,path = string.find( vlc.path, "mediaURL=([^&]*)" )
+ return { { path = path } }
end
end
-- Helper function to get a parameter's value in a URL
function get_url_param( url, name )
- return string.gsub( url, "^.*[&?]"..name.."=([^&]*).*$", "%1" )
+ local _, _, res = string.find( url, "[&?]"..name.."=([^&]*)" )
+ return res
end
function get_arturl( path, video_id )
line = vlc.readline()
if not line then break end
if string.match( line, "<meta name=\"title\"" ) then
- name = string.gsub( line, "^.*content=\"([^\"]*).*$", "%1" )
+ _,_,name = string.find( line, "content=\"(.-)\"" )
end
if string.match( line, "<meta name=\"description\"" ) then
- description = string.gsub( line, "^.*content=\"([^\"]*).*$", "%1" )
+ -- Don't ask me why they double encode ...
+ _,_,description = vlc.strings.resolve_xml_special_chars(vlc.strings.resolve_xml_special_chars(string.find( line, "content=\"(.-)\"" )))
end
if string.match( line, "subscribe_to_user=" ) then
- artist = string.gsub( line, ".*subscribe_to_user=([^&]*).*", "%1" )
+ _,_,artist = string.find( line, "subscribe_to_user=([^&]*)" )
end
-- OLD: var swfArgs = {hl:'en',BASE_YT_URL:'http://youtube.com/',video_id:'XPJ7d8dq0t8',l:'292',t:'OEgsToPDskLFdOYrrlDm3FQPoQBYaCP1',sk:'0gnr-AE6QZJEZmCMd3lq_AC'};
-- NEW: var swfArgs = { "BASE_YT_URL": "http://youtube.com", "video_id": "OHVvVmUNBFc", "l": 88, "sk": "WswKuJzDBsdD6oG3IakCXgC", "t": "OEgsToPDskK3zO44y0QN8Fr5ZSAZwCQp", "plid": "AARGnwWMrmGkbpOxAAAA4AT4IAA", "tk": "mEL4E7PqHeaZp5OG19NQThHt9mXJU4PbRTOw6lz9osHi4Hixp7RE1w=="};
if string.match( line, "swfArgs" ) and string.match( line, "video_id" ) then
if string.match( line, "BASE_YT_URL" ) then
- base_yt_url = string.gsub( line, ".*\"BASE_YT_URL\": \"([^\"]*).*", "%1" )
+ _,_,base_yt_url = string.find( line, "\"BASE_YT_URL\": \"(.-)\"" )
end
- t = string.gsub( line, ".*\"t\": \"([^\"]*).*", "%1" )
- -- vlc.msg_err( t )
+ _,_,t = string.find( line, "\"t\": \"(.-)\"" )
+ -- vlc.msg.err( t )
-- video_id = string.gsub( line, ".*&video_id:'([^']*)'.*", "%1" )
end
if name and description and artist --[[and video_id]] then break end