local media = {} local hex={} for i=0,255 do hex[string.format("%0x",i)]=string.char(i) hex[string.format("%0X",i)]=string.char(i) end local function decodeURI(s) return (s:gsub('%%(%x%x)',hex)) end function media.getAddonMedia(url,extraUrl) local video_url = nil local json = require "json" local videoTab = nil if extraUrl then local data = getdata(extraUrl) if data then local jnTab = json:decode(data) if jnTab == nil then return end videoTab = jnTab.video jnTab = nil end end if url and videoTab == nil then local data = getdata(url) if data then local jsonurl = nil local playerdata= data:match('
') if playerdata == nil then jsonurl = data:match("arte_vp_url='(.-)'") or data:match('json_url=(.-)"') else jsonurl = playerdata:match('json_url=(.-)"') end if jsonurl == nil then return end jsonurl=jsonurl:gsub('&','&') jsonurl = decodeURI(jsonurl) data = getdata(jsonurl) if data == nil then return end local jnTab = json:decode(data) if jnTab == nil then return end videoTab = jnTab.videoJsonPlayer -- if videoTab.V7T then -- media.newText = videoTab.V7T -- end if videoTab.VDE then media.newText = videoTab.VDE end jnTab = nil end end if videoTab then local tmp_bitrate = 0 if videoTab.VTU and videoTab.VTU.IUR then media.PicUrl = videoTab.VTU.IUR end for i,v in pairs(videoTab.VSR) do if v.bitrate and v.url then v.bitrate = tonumber(v.bitrate) local vUrl = nil if v.url and v.versionShortLibelle == "DE" then --"DE" "FR" "DE-ANG" "DE-ESP" vUrl = v.url elseif v.url and v.versionShortLibelle == "OmU" then --"DE" "FR" "DE-ANG" "DE-ESP" vUrl = v.url elseif v.VUR then vUrl = v.VUR elseif v.url and v.versionShortLibelle then vUrl = v.url v.bitrate=v.bitrate-4 end if vUrl then if vUrl:find("m3u8") then v.bitrate=v.bitrate-1 --prio for mp4 elseif v.mediaType and v.mediaType == "hls" then v.bitrate=v.bitrate-2 --prio for mp4 elseif v.mediaType and v.mediaType == "f4m" then v.bitrate=v.bitrate-3 --prio for mp4 end if v.bitrate > tmp_bitrate then video_url = vUrl tmp_bitrate = v.bitrate end end end end end if video_url and #video_url > 8 then if video_url:find("m3u8") then local videodata = getdata(video_url) local res = 0 for band, res1, res2, url in videodata:gmatch('#EXT.X.STREAM.INF.-BANDWIDTH=(%d+).-RESOLUTION=(%d+)x(%d+).-(http.-)\n') do if url and res1 then local nr = tonumber(res1) if nr < 2000 and nr > res then res=nr video_url = url end end end end media.VideoUrl=video_url end end return media