From 7b4e90a54dd2d66ca0a979a2fbb028f7313a0faa Mon Sep 17 00:00:00 2001 From: Pierre Ynard Date: Sun, 22 Sep 2013 04:29:47 +0200 Subject: [PATCH] youtube.lua: handle inlined function in descrambling javascript --- share/lua/playlist/youtube.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/share/lua/playlist/youtube.lua b/share/lua/playlist/youtube.lua index 5778adb8d4..30da2f81f9 100644 --- a/share/lua/playlist/youtube.lua +++ b/share/lua/playlist/youtube.lua @@ -128,6 +128,12 @@ function js_descramble( sig, js_url ) -- characters: -- function jj(a,b){var c=a[0];a[0]=a[b%a.length];a[b]=c;return a} local idx = string.match( rule, "=..%([^,]+,(%d+)%)" ) + -- This swapping function may also appear inlined: + -- var b=a[0];a[0]=a[59%a.length];a[59]=b; + -- In that case we only catch one of the three rules. + if not idx then + idx = string.match( rule, ".%[(%d+)%]=." ) + end if idx then idx = tonumber( idx ) if not idx then idx = 0 end