diff --git a/Genshtab/ggc/karta_ggc_250m.zmp/GetUrlScript.txt b/Genshtab/ggc/karta_ggc_250m.zmp/GetUrlScript.txt index 1acc47c60..f350c3f47 100644 --- a/Genshtab/ggc/karta_ggc_250m.zmp/GetUrlScript.txt +++ b/Genshtab/ggc/karta_ggc_250m.zmp/GetUrlScript.txt @@ -1,3 +1,52 @@ +function GetCode(const url: AnsiString): Cardinal; +var + VResponseCode: Cardinal; + VResponseHeader, VResponseData: AnsiString; 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. diff --git a/Genshtab/karta_gsh_10km.zmp/GetUrlScript.txt b/Genshtab/karta_gsh_10km.zmp/GetUrlScript.txt index 4f9711807..3589bd7c4 100644 --- a/Genshtab/karta_gsh_10km.zmp/GetUrlScript.txt +++ b/Genshtab/karta_gsh_10km.zmp/GetUrlScript.txt @@ -26,10 +26,11 @@ begin if getz >= z_no then exit; // Выбор зеркала - r := random(2); + r := random(3); case r of 0: BaseUrl := GetURLBase; 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; // Проверяем наличие масштаба diff --git a/Genshtab/karta_gsh_1km.zmp/GetUrlScript.txt b/Genshtab/karta_gsh_1km.zmp/GetUrlScript.txt index 4f9711807..3589bd7c4 100644 --- a/Genshtab/karta_gsh_1km.zmp/GetUrlScript.txt +++ b/Genshtab/karta_gsh_1km.zmp/GetUrlScript.txt @@ -26,10 +26,11 @@ begin if getz >= z_no then exit; // Выбор зеркала - r := random(2); + r := random(3); case r of 0: BaseUrl := GetURLBase; 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; // Проверяем наличие масштаба diff --git a/Genshtab/karta_gsh_250m.zmp/GetUrlScript.txt b/Genshtab/karta_gsh_250m.zmp/GetUrlScript.txt index 4f9711807..dba2ec481 100644 --- a/Genshtab/karta_gsh_250m.zmp/GetUrlScript.txt +++ b/Genshtab/karta_gsh_250m.zmp/GetUrlScript.txt @@ -26,10 +26,11 @@ begin if getz >= z_no then exit; // Выбор зеркала - r := random(2); + r := random(3); case r of 0: BaseUrl := GetURLBase; 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; // Проверяем наличие масштаба diff --git a/Genshtab/karta_gsh_2km.zmp/GetUrlScript.txt b/Genshtab/karta_gsh_2km.zmp/GetUrlScript.txt index 4f9711807..3589bd7c4 100644 --- a/Genshtab/karta_gsh_2km.zmp/GetUrlScript.txt +++ b/Genshtab/karta_gsh_2km.zmp/GetUrlScript.txt @@ -26,10 +26,11 @@ begin if getz >= z_no then exit; // Выбор зеркала - r := random(2); + r := random(3); case r of 0: BaseUrl := GetURLBase; 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; // Проверяем наличие масштаба diff --git a/Genshtab/karta_gsh_500m.zmp/GetUrlScript.txt b/Genshtab/karta_gsh_500m.zmp/GetUrlScript.txt index 4f9711807..3589bd7c4 100644 --- a/Genshtab/karta_gsh_500m.zmp/GetUrlScript.txt +++ b/Genshtab/karta_gsh_500m.zmp/GetUrlScript.txt @@ -26,10 +26,11 @@ begin if getz >= z_no then exit; // Выбор зеркала - r := random(2); + r := random(3); case r of 0: BaseUrl := GetURLBase; 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; // Проверяем наличие масштаба diff --git a/Genshtab/karta_gsh_5km.zmp/GetUrlScript.txt b/Genshtab/karta_gsh_5km.zmp/GetUrlScript.txt index 4f9711807..3589bd7c4 100644 --- a/Genshtab/karta_gsh_5km.zmp/GetUrlScript.txt +++ b/Genshtab/karta_gsh_5km.zmp/GetUrlScript.txt @@ -26,10 +26,11 @@ begin if getz >= z_no then exit; // Выбор зеркала - r := random(2); + r := random(3); case r of 0: BaseUrl := GetURLBase; 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; // Проверяем наличие масштаба