--http://youtube.com/watch?v=IErX9GnXsFk - utf8 --http://www.youtube.com/watch?v=fvAF5v_fJ_g - japanese robot function youtube_com_GDL(origUrl) -- GetDirectLink usd.setstatus('') local logpref = 'youtube_com_GDL_v05' --[[ usdLua_settings.lua: Settings['youtube_com'] = { qualityList = {38, 37, 22, 45, 44, 35, 43, 34, 18, 5} } -- в порядке уменьшения качества или Settings['youtube_com'] = { qualityList = {5, 18, 34, 43, 35, 44, 45, 22, 37, 38} } -- в порядке увеличения качества ]] local conf = Settings and Settings[script.name] or { qualityList = {38, 37, 22, 45, 44, 35, 43, 34, 18, 5} } -- в порядке уменьшения качества -- http://en.wikipedia.org/wiki/Youtube#Quality_and_codecs local qualityList = conf.qualityList local dirUrl local page = usd.get(origUrl) debugSaveInc(logpref..'.html', page) local err = page:match('
') if err then usd.savetolog(utf8ToAnsi(err):gsub('%b<>','')) usd.setretresult('%deleted%') return end page = page:gsub('\u0026','&') --local dirUrl = string.match(page,'&fmt_url_map=%d+%%7C(http.-)%%2C%d+%%7C') -- первая попавшаяся ссылка :-) --local fmt_url_map = '%2C' .. string.match(page,'&url_encoded_fmt_stream_map=(.-)&') local fmt_url_map = string.match(page,'&url_encoded_fmt_stream_map=(.-)&') -- вытаскиваю список урлов if not fmt_url_map then usd.setretresult('%Download link not found!') return end fmt_url_map = ',' .. unescape(fmt_url_map) -- раскодирую и добавляю в начало запятую, т.к. у первого нет запятой. local urls = {} -- в этой таблице будут ссылки на видео разного рачества for v, fb, k in string.gmatch(fmt_url_map, ',url=(http.-)&quality=.-&fallback_host=(.-)&.-&itag=(%d+)') do v = unescape(v):gsub('http://.-/','http://'..fb..'/',1) urls[tonumber(k)] = v end if table.maxn(urls) == 0 then usd.setretresult('%Download link not found!') return end for i,v in ipairs(qualityList) do if urls[v] ~= nil then dirUrl = urls[v] debugLog('GDL youtube: url index: '..v) break end end if dirUrl == nil then dirUrl = urls[table.maxn(urls)] debugLog('GDL youtube: url index not found; selected max number: '..v) end local title = utf8ToAnsi(string.match(page, '