[vlc-commits] youtube.lua: more robust meta tag metadata parsing
Pierre Ynard
git at videolan.org
Tue Nov 3 01:41:19 CET 2020
vlc/vlc-3.0 | branch: master | Pierre Ynard <linkfanel at yahoo.fr> | Tue Nov 3 00:38:49 2020 +0100| [c92448e7dd4f5a5bf05f723d7df9f190508d2fd8] | committer: Pierre Ynard
youtube.lua: more robust meta tag metadata parsing
Required for a new HTML code layout apparently getting phased in
(cherry picked from commit f3d206499bb45df4aef2f05770c8535e4cd8a4de)
Signed-off-by: Pierre Ynard <linkfanel at yahoo.fr>
> http://git.videolan.org/gitweb.cgi/vlc/vlc-3.0.git/?a=commit;h=c92448e7dd4f5a5bf05f723d7df9f190508d2fd8
---
share/lua/playlist/youtube.lua | 25 +++++++++++++++++--------
1 file changed, 17 insertions(+), 8 deletions(-)
diff --git a/share/lua/playlist/youtube.lua b/share/lua/playlist/youtube.lua
index a34534d81c..965e17142b 100644
--- a/share/lua/playlist/youtube.lua
+++ b/share/lua/playlist/youtube.lua
@@ -335,10 +335,14 @@ function parse()
line = vlc.read( eol or len )
end
- -- Try to find the video's title
- if string.match( line, "<meta property=\"og:title\"" ) then
- _,_,name = string.find( line, "content=\"(.-)\"" )
- name = vlc.strings.resolve_xml_special_chars( name )
+ if not title then
+ local meta = string.match( line, '<meta property="og:title"( .-)>' )
+ if meta then
+ title = string.match( meta, ' content="(.-)"' )
+ if title then
+ title = vlc.strings.resolve_xml_special_chars( title )
+ end
+ end
end
if not description then
@@ -361,9 +365,14 @@ function parse()
end
end
- if string.match( line, "<meta property=\"og:image\"" ) then
- _,_,arturl = string.find( line, "content=\"(.-)\"" )
- arturl = vlc.strings.resolve_xml_special_chars( arturl )
+ if not arturl then
+ local meta = string.match( line, '<meta property="og:image"( .-)>' )
+ if meta then
+ arturl = string.match( meta, ' content="(.-)"' )
+ if arturl then
+ arturl = vlc.strings.resolve_xml_special_chars( arturl )
+ end
+ end
end
if not artist then
@@ -453,7 +462,7 @@ function parse()
arturl = get_arturl()
end
- return { { path = path; name = name; description = description; artist = artist; arturl = arturl } }
+ return { { path = path; name = title; description = description; artist = artist; arturl = arturl } }
elseif string.match( vlc.path, "/get_video_info%?" ) then -- video info API
local line = vlc.read( 1024*1024 ) -- data is on one line only
More information about the vlc-commits
mailing list