[vlc-commits] Youtube: improve description parsing

Jean-Baptiste Kempf git at videolan.org
Thu Jan 14 01:42:41 CET 2016


vlc/vlc-2.2 | branch: master | Jean-Baptiste Kempf <jb at videolan.org> | Wed Feb 18 19:17:47 2015 +0100| [9b1e1db4c1a6c89ef9fc90f6ce9a78e128e10615] | committer: Felix Paul Kühne

Youtube: improve description parsing

Close #13973

(cherry picked from commit f568fd431f42e1fd21bc6f55af93d119861c54bf)
Signed-off-by: Felix Paul Kühne <fkuehne at videolan.org>

> http://git.videolan.org/gitweb.cgi/vlc/vlc-2.2.git/?a=commit;h=9b1e1db4c1a6c89ef9fc90f6ce9a78e128e10615
---

 share/lua/playlist/youtube.lua |   26 ++++++++++++--------------
 1 file changed, 12 insertions(+), 14 deletions(-)

diff --git a/share/lua/playlist/youtube.lua b/share/lua/playlist/youtube.lua
index 611543c..d1d9e07 100644
--- a/share/lua/playlist/youtube.lua
+++ b/share/lua/playlist/youtube.lua
@@ -256,24 +256,22 @@ function parse()
                 name = vlc.strings.resolve_xml_special_chars( name )
                 name = vlc.strings.resolve_xml_special_chars( name )
             end
-            if string.match( line, "<meta name=\"description\"" ) then
-               -- Don't ask me why they double encode ...
-                _,_,description = string.find( line, "content=\"(.-)\"" )
-                description = vlc.strings.resolve_xml_special_chars( description )
+
+            if string.match( line, "<p id=\"eow[-]description\" >" ) then
+                _,_,description = string.find( line, "<p id=\"eow[-]description\" >(.-)<[/]p>" )
                 description = vlc.strings.resolve_xml_special_chars( description )
             end
+
+
             if string.match( line, "<meta property=\"og:image\"" ) then
                 _,_,arturl = string.find( line, "content=\"(.-)\"" )
                 arturl = vlc.strings.resolve_xml_special_chars( arturl )
             end
-            -- This is not available in the video parameters (whereas it
-            -- is given by the get_video_info API as the "author" field)
-            if not artist then
-                artist = string.match( line, "yt%-uix%-sessionlink yt%-user%-name[^>]*>([^<]*)</" )
-                if artist then
-                    artist = vlc.strings.resolve_xml_special_chars( artist )
-                end
+
+            if string.match(line, "\"author\":\"(.-)\",")    then
+                _,_,artist = string.find(line, "\"author\":\"(.-)\",")
             end
+
             -- JSON parameters, also formerly known as "swfConfig",
             -- "SWF_ARGS", "swfArgs", "PLAYER_CONFIG", "playerConfig" ...
             if string.match( line, "ytplayer%.config" ) then
@@ -301,7 +299,7 @@ function parse()
 
                 if not path then
                     -- 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\": *\"(.-)\"" )
                     if hlsvp then
                         hlsvp = string.gsub( hlsvp, "\\/", "/" )
@@ -321,7 +319,7 @@ function parse()
                     format = "&fmt=" .. fmt
                 else
                     format = ""
-                end 
+                end
                 -- Without "el=detailpage", /get_video_info fails for many
                 -- music videos with errors about copyrighted content being
                 -- "restricted from playback on certain sites"
@@ -361,7 +359,7 @@ function parse()
 
         if not path then
             -- 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=([^&]*)" )
             if hlsvp then
                 hlsvp = vlc.strings.decode_uri( hlsvp )



More information about the vlc-commits mailing list