function conv() local s= hc.prepare_url(hc.url) local server= re.find(s, [[([^\\]+)\\?.*$]], 1) local domen= re.find(server, [[([^\.]*)\.[^\.]*$]], 1) local prefix='' if domen then prefix= domen:sub(1,1)..'\\' end hc.cache_file_name= prefix..s hc.monitor_string = hc.monitor_string.."Cache "end
function conv() if hc.url:find('+', 1, true) then return end local url = re.replace(hc.url, [[http://kh(mdb)?\.google\.com/(flatfile|dbRoot\.v\d+)\?]], '_GE_/') url = re.replace(url, [[_/\K(?!db=)]], 'Earth/') url = re.replace(url, [[_/\Kdb=tm&]], 'History/') url = re.replace(url, [[_/\Kdb=sky&]], 'Sky/') url = re.replace(url, [[_/\Kdb=mars&]], 'Mars/') url = re.replace(url, [[_/\lf-0-icons]], 'Icons/') url = re.replace(url, [[_/\hl=(..|..-..)\&gl=..]], 'dbRoot.v5/dbRoot') url = re.replace(url, [[/(?=f1-\d+-i\.(\d+))]], '/Images/\\1\\0') url = re.replace(url, [[/(?=f1-\d+-d\.(\d+)\.(\d+))]], '/Textures/\\1/\\2/') url = re.replace(url, [[/(?=f1c-\d+-t\.(\d+))]], '/Terrains/\\1\\0') url = re.replace(url, [[/(?=f1c-\d+-d\.(\d+)\.(\d+))]], '/Layers/\\1/\\2/') url = re.replace(url, [[/(?=q2-\d+-q\.(\d+))]], '/Queries/\\1\\0') local digits = re.find(url, [[/\w+-(\d+)-]], 1) if digits then NameToXY(digits) local Xi=math.floor(X/1024) local Yi=math.floor(Y/1024) hc.monitor_string = 'GE: Z=' .. #digits .. ', X=' .. X .. ', Y=' .. Y .. ' (Xi=' .. Xi .. ',Yi=' .. Yi ..')' url = re.replace(nil, nil, '/z' .. #digits .. '/' .. Xi .. '/x' .. X .. '/' .. Yi .. '\\0') end hc.cache_file_name = hc.prepare_url(url)endfunction NameToXY(digits) -- переменная digits - строка с цифро-именем: digits='01230123' local level = #digits -- переменная level - число знаков в digits X = 0 -- инициализация X,Y и если Level=1 то и Y = 0 -- ответ функции for i=2,level do -- цикл от 2 до Level X = X*2 -- ответ увеличиваем в 2 раза Y = Y*2 local ch = digits:sub(i,i) if ch == '0' then Y = Y+1 -- к Y прибавляем 1 если символ '0' elseif ch == '1' then X = X+1 -- если символ '1' и к X и к Y прибавляем 1 Y = Y+1 elseif ch == '2' then X = X+1 end end return X, Yend
...Ваш код... url = re.replace(url, [[_/\Kdb=sky&]], 'Sky/') url = re.replace(url, [[_/\Kdb=mars&]], 'Mars/') if url:find('hl=', 1, true) then -- Обработка dbRoot url = re.replace(url, [[/hl=]], '/dbRoot.v5/hl=')-- local source = hc.prepare_url(url) <-- относительный путь '_GE_\dbroots.v5\hl=ru-RU&gl=ru'. Не работает!local source='C:\\cache\\_GE_\\dbroots.v5\\hl=ru-RU&gl=ru' <-- прописанный ручками абсолютный путь. Работает. local file = io.open(source, 'rb') file:seek('set', 5) local value1 = string.byte(file:read(1)) file:seek('set', 6) local value2 = string.byte(file:read(1)) file:close() local version = 256*value1 + value2 -- версия дбрута local destination = source .. "." .. version local file = io.open(destination, 'rb') if file then file:close() -- проверяем на наличие в кэше, если есть - закругляемся hc.monitor_string = 'GE: dbRoot версии ' .. version .. ', есть в архиве' else local file1 = io.open(source, 'rb') -- копируем файл в архив local data = file1:read("*all") file1:close() local file2 = io.open(destination, 'wb') file2:write(data) file2:close() hc.monitor_string = 'GE: dbRoot версии ' .. version .. ', помещено в архив' end end url = re.replace(url, [[/lf-0-icons]], '/Icons') url = re.replace(url, [[/(?=f1-\d+-i\.(\d+))]], '/Images/\\1\\0') ... итд далее Ваш код
url = re.replace(url, [[_/\Kdb=moon&]], 'Moon/')