Commit f568fd43 authored by Jean-Baptiste Kempf's avatar Jean-Baptiste Kempf

Youtube: improve description parsing

Close #13973
parent a8ef884e
...@@ -235,23 +235,21 @@ function parse() ...@@ -235,23 +235,21 @@ function parse()
name = vlc.strings.resolve_xml_special_chars( name ) name = vlc.strings.resolve_xml_special_chars( name )
name = vlc.strings.resolve_xml_special_chars( name ) name = vlc.strings.resolve_xml_special_chars( name )
end end
if string.match( line, "<meta name=\"description\"" ) then
-- Don't ask me why they double encode ... if string.match( line, "<p id=\"eow[-]description\" >" ) then
_,_,description = string.find( line, "content=\"(.-)\"" ) _,_,description = string.find( line, "<p id=\"eow[-]description\" >(.-)<[/]p>" )
description = vlc.strings.resolve_xml_special_chars( description )
description = vlc.strings.resolve_xml_special_chars( description ) description = vlc.strings.resolve_xml_special_chars( description )
end end
if string.match( line, "<meta property=\"og:image\"" ) then if string.match( line, "<meta property=\"og:image\"" ) then
_,_,arturl = string.find( line, "content=\"(.-)\"" ) _,_,arturl = string.find( line, "content=\"(.-)\"" )
end end
-- This is not available in the video parameters (whereas it
-- is given by the get_video_info API as the "author" field) if string.match(line, "\"author\":\"(.-)\",") then
if not artist then _,_,artist = string.find(line, "\"author\":\"(.-)\",")
artist = string.match( line, "yt%-uix%-sessionlink yt%-user%-name[^>]*>([^<]*)</" )
if artist then
artist = vlc.strings.resolve_xml_special_chars( artist )
end
end end
-- JSON parameters, also formerly known as "swfConfig", -- JSON parameters, also formerly known as "swfConfig",
-- "SWF_ARGS", "swfArgs", "PLAYER_CONFIG", "playerConfig" ... -- "SWF_ARGS", "swfArgs", "PLAYER_CONFIG", "playerConfig" ...
if string.match( line, "ytplayer%.config" ) then if string.match( line, "ytplayer%.config" ) then
...@@ -279,7 +277,7 @@ function parse() ...@@ -279,7 +277,7 @@ function parse()
if not path then if not path then
-- If this is a live stream, the URL map will be empty -- If this is a live stream, the URL map will be empty
-- and we get the URL from this field instead -- and we get the URL from this field instead
local hlsvp = string.match( line, "\"hlsvp\": *\"(.-)\"" ) local hlsvp = string.match( line, "\"hlsvp\": *\"(.-)\"" )
if hlsvp then if hlsvp then
hlsvp = string.gsub( hlsvp, "\\/", "/" ) hlsvp = string.gsub( hlsvp, "\\/", "/" )
...@@ -299,7 +297,7 @@ function parse() ...@@ -299,7 +297,7 @@ function parse()
format = "&fmt=" .. fmt format = "&fmt=" .. fmt
else else
format = "" format = ""
end end
-- Without "el=detailpage", /get_video_info fails for many -- Without "el=detailpage", /get_video_info fails for many
-- music videos with errors about copyrighted content being -- music videos with errors about copyrighted content being
-- "restricted from playback on certain sites" -- "restricted from playback on certain sites"
...@@ -339,7 +337,7 @@ function parse() ...@@ -339,7 +337,7 @@ function parse()
if not path then if not path then
-- If this is a live stream, the URL map will be empty -- If this is a live stream, the URL map will be empty
-- and we get the URL from this field instead -- and we get the URL from this field instead
local hlsvp = string.match( line, "&hlsvp=([^&]*)" ) local hlsvp = string.match( line, "&hlsvp=([^&]*)" )
if hlsvp then if hlsvp then
hlsvp = vlc.strings.decode_uri( hlsvp ) hlsvp = vlc.strings.decode_uri( hlsvp )
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment