| @@ -1,3 +1,52 @@ | |||||
| function GetCode(const url: AnsiString): Cardinal; | |||||
| var | |||||
| VResponseCode: Cardinal; | |||||
| VResponseHeader, VResponseData: AnsiString; | |||||
| begin | begin | ||||
| ResultURL:=GetURLBase+'z'+inttostr(getz)+'/'+inttostr(getx div 1024)+'/x'+inttostr(getx)+'/'+inttostr(gety div 1024)+'/y'+inttostr(gety)+'.jpg'; | |||||
| Result := 1; | |||||
| if Assigned(Downloader) then begin | |||||
| VResponseHeader := ''; | |||||
| VResponseData := ''; | |||||
| VResponseCode := Downloader.DoHttpRequest(url, '', '', VResponseHeader, VResponseData); | |||||
| Result := VResponseCode; | |||||
| end; | |||||
| end; | |||||
| var | |||||
| BaseUrl: string; | |||||
| code: Cardinal; | |||||
| z_ok, z_no: integer; | |||||
| r: integer; | |||||
| begin | |||||
| ResultURL := ''; | |||||
| z_ok := StrToIntDef(GetBefore(';', ScriptBuffer), 1); // Максимальный масштаб, который точно есть | |||||
| z_no := StrToIntDef(GetAfter(';', ScriptBuffer), 25); // Минимальный масштаб, которого точно нет | |||||
| // Масштаба нет - говорить не о чем | |||||
| if getz >= z_no then exit; | |||||
| // Выбор зеркала | |||||
| r := random(2); | |||||
| case r of | |||||
| 0: BaseUrl := GetURLBase; | |||||
| 1: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088/pub/ggc', 't.caucasia.ru:80'); | |||||
| end; | |||||
| // Проверяем наличие масштаба | |||||
| if getz > z_ok then begin | |||||
| code := GetCode(BaseUrl+'z'+inttostr(getz)+'/'); | |||||
| // Внимание! Если сервер вернёт 403 - code почему-то будет 0. Так что выбор "404 или что-то иное" | |||||
| // Если дело дошло до проверки наличия масштаба - значит какая-то граница (z_ok / z_no) точно подвинется. | |||||
| if code = 404 then z_no := getz else z_ok := getz; | |||||
| // Сохраняем актуализированные границы для последующих вызовов | |||||
| ScriptBuffer := inttostr(z_ok) + ';' + inttostr(z_no); | |||||
| // Масштаба нет (о чём могли только что при проверке узнать) - говорить не о чем | |||||
| if getz >= z_no then exit; | |||||
| end; | |||||
| // Ок, качаем тайлик | |||||
| ResultURL:= BaseUrl+'z'+inttostr(getz)+'/'+inttostr(getx div 1024)+'/x'+inttostr(getx)+'/'+inttostr(gety div 1024)+'/y'+inttostr(gety)+'.jpg'; | |||||
| end. | end. | ||||
| @@ -26,10 +26,11 @@ begin | |||||
| if getz >= z_no then exit; | if getz >= z_no then exit; | ||||
| // Выбор зеркала | // Выбор зеркала | ||||
| r := random(2); | |||||
| r := random(3); | |||||
| case r of | case r of | ||||
| 0: BaseUrl := GetURLBase; | 0: BaseUrl := GetURLBase; | ||||
| 1: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088', 'maps.melda.ru'); | 1: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088', 'maps.melda.ru'); | ||||
| 2: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088/pub/genshtab', 't.caucasia.ru:80'); | |||||
| end; | end; | ||||
| // Проверяем наличие масштаба | // Проверяем наличие масштаба | ||||
| @@ -26,10 +26,11 @@ begin | |||||
| if getz >= z_no then exit; | if getz >= z_no then exit; | ||||
| // Выбор зеркала | // Выбор зеркала | ||||
| r := random(2); | |||||
| r := random(3); | |||||
| case r of | case r of | ||||
| 0: BaseUrl := GetURLBase; | 0: BaseUrl := GetURLBase; | ||||
| 1: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088', 'maps.melda.ru'); | 1: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088', 'maps.melda.ru'); | ||||
| 2: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088/pub/genshtab', 't.caucasia.ru:80'); | |||||
| end; | end; | ||||
| // Проверяем наличие масштаба | // Проверяем наличие масштаба | ||||
| @@ -26,10 +26,11 @@ begin | |||||
| if getz >= z_no then exit; | if getz >= z_no then exit; | ||||
| // Выбор зеркала | // Выбор зеркала | ||||
| r := random(2); | |||||
| r := random(3); | |||||
| case r of | case r of | ||||
| 0: BaseUrl := GetURLBase; | 0: BaseUrl := GetURLBase; | ||||
| 1: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088', 'maps.melda.ru'); | 1: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088', 'maps.melda.ru'); | ||||
| 2: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088', 't.caucasia.ru'); | |||||
| end; | end; | ||||
| // Проверяем наличие масштаба | // Проверяем наличие масштаба | ||||
| @@ -26,10 +26,11 @@ begin | |||||
| if getz >= z_no then exit; | if getz >= z_no then exit; | ||||
| // Выбор зеркала | // Выбор зеркала | ||||
| r := random(2); | |||||
| r := random(3); | |||||
| case r of | case r of | ||||
| 0: BaseUrl := GetURLBase; | 0: BaseUrl := GetURLBase; | ||||
| 1: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088', 'maps.melda.ru'); | 1: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088', 'maps.melda.ru'); | ||||
| 2: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088/pub/genshtab', 't.caucasia.ru:80'); | |||||
| end; | end; | ||||
| // Проверяем наличие масштаба | // Проверяем наличие масштаба | ||||
| @@ -26,10 +26,11 @@ begin | |||||
| if getz >= z_no then exit; | if getz >= z_no then exit; | ||||
| // Выбор зеркала | // Выбор зеркала | ||||
| r := random(2); | |||||
| r := random(3); | |||||
| case r of | case r of | ||||
| 0: BaseUrl := GetURLBase; | 0: BaseUrl := GetURLBase; | ||||
| 1: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088', 'maps.melda.ru'); | 1: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088', 'maps.melda.ru'); | ||||
| 2: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088/pub/genshtab', 't.caucasia.ru:80'); | |||||
| end; | end; | ||||
| // Проверяем наличие масштаба | // Проверяем наличие масштаба | ||||
| @@ -26,10 +26,11 @@ begin | |||||
| if getz >= z_no then exit; | if getz >= z_no then exit; | ||||
| // Выбор зеркала | // Выбор зеркала | ||||
| r := random(2); | |||||
| r := random(3); | |||||
| case r of | case r of | ||||
| 0: BaseUrl := GetURLBase; | 0: BaseUrl := GetURLBase; | ||||
| 1: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088', 'maps.melda.ru'); | 1: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088', 'maps.melda.ru'); | ||||
| 2: BaseUrl := RegExprReplaceMatchSubStr(GetURLBase, '91.237.82.95:8088/pub/genshtab', 't.caucasia.ru:80'); | |||||
| end; | end; | ||||
| // Проверяем наличие масштаба | // Проверяем наличие масштаба | ||||