PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 24 → WX - Procedure Geo Ip retorna Latitude e Longitude - Versao 01
WX - Procedure Geo Ip retorna Latitude e Longitude - Versao 01
Débuté par adrianoboller, 18 juil. 2015 23:38 - Aucune réponse
Membre enregistré
2 958 messages
Popularité : +89 (91 votes)
Posté le 18 juillet 2015 - 23:38
Procedure WS_GeoIpLatitudeLongitude()

ok, achou is boolean = False

sUrl01 is string = "https://geoiptool.com/"

sUrl02 is string = "http://www.geoipview.com/"

nInicio, nFim is int = 0

//Nome do Host: 4130757575.e.brasiltelecom.net.br
//IP Address: 177.6.166.73
//País: Brazil
//Código do país: BR (BRA)
//Região: Parana
//Cidade: Curitiba
//Hora local: 18 Jul 15:43 (BRT-0300)
//Código postal: None
//Latitude: -25.4167
//Longitude: -49.25

Retorno is Buffer

sHost, IP, sCidade, sEstado, sPais, sCodPais, sHoraLocal, sCodigoPostal, sLatitude, sLongitude is string = ""

HTTPTimeOut(10000)

ok = HTTPRequest(sUrl01)

IF ok = True THEN

Retorno = HTTPGetResult(httpResult)

//ok = fSaveBuffer("c:\temp\geoip.txt",Retorno)

IF PositionOccurrence(Retorno,"<html",firstRank,FromBeginning) = 0 THEN

Retorno = ""

ELSE

//Limpa Texto
Retorno = Lower(Retorno)
Retorno = WS_RemoveAcentos(Retorno)
Retorno = Replace(Retorno,"'","")
Retorno = Replace(Retorno,Charact(34),"")
Retorno = Replace(Retorno,CRLF,"")
Retorno = Replace(Retorno,Charact(9),"")
Retorno = Replace(Retorno,Charact(13),"")
Retorno = Replace(Retorno,Charact(10),"")
Retorno = Replace(Retorno,Charact(13)+Charact(10),"")
Retorno = Replace(Retorno,"</span><span><td>","")
Retorno = Replace(Retorno,"</span><span>","")
Retorno = Replace(Retorno,"</td></span></div>","")
Retorno = Replace(Retorno,"<div class=data-item>","")//
Retorno = Replace(Retorno,"<div Class=data-item><span Class=bold>","")
Retorno = Replace(Retorno,"<div class=data-item><span class=bold>","")
Retorno = Replace(Retorno,"</span></div><div Class=data-item><span Class=bold>","")
Retorno = Replace(Retorno,"</span></div><div class=data-item><span class=bold>","")
Retorno = Replace(Retorno,"<img src=../static/img/flags/br.gif>","")
Retorno = Replace(Retorno,"</span></div>","")
Retorno = Lower(Retorno)


IF PositionOccurrence(Retorno,"<div class=sidebar-data hidden-xs hidden-sm style=margin-top: 5px>",firstRank,FromBeginning) > 0 THEN

nInicio = PositionOccurrence(Retorno,"<div class=sidebar-data hidden-xs hidden-sm style=margin-top: 5px>",firstRank,FromBeginning)

IF PositionOccurrence(Retorno,"<div class=mobile-button-display-hidden data-value=0>",firstRank,FromBeginning) > 0 THEN

nFim = PositionOccurrence(Retorno,"<div class=mobile-button-display-hidden data-value=0>",firstRank,FromBeginning)

Retorno = Middle(Retorno,nInicio,nFim-nInicio)

IF PositionOccurrence(Retorno,"ip address:",firstRank,FromBeginning) > 0 AND...
PositionOccurrence(Retorno,"latitude:",firstRank,FromBeginning) > 0 AND...
PositionOccurrence(Retorno,"longitude:",firstRank,FromBeginning) > 0
achou = True
ELSE
achou = False
END

ELSE

IF PositionOccurrence(Retorno,"<div class=col-md-8 column>",firstRank,FromBeginning) > 0 THEN

nFim = PositionOccurrence(Retorno,"<div class=col-md-8 column>",firstRank,FromBeginning)

Retorno = Middle(Retorno,nInicio,nFim-nInicio)

IF PositionOccurrence(Retorno,"ip address:",firstRank,FromBeginning) > 0 AND...
PositionOccurrence(Retorno,"latitude:",firstRank,FromBeginning) > 0 AND...
PositionOccurrence(Retorno,"longitude:",firstRank,FromBeginning) > 0
achou = True
ELSE
achou = False
END

END

END

IF achou = True

//info(Retorno)

//Campos de retorno
//sHost, IP, sCidade, sEstado, sPais, sCodPais, sHoraLocal, sCodigoPostal, sLatitude, sLongitude

nInicio = PositionOccurrence(Retorno,"hostname:",firstRank,FromBeginning)+Length("hostname:")
nFim = PositionOccurrence(Retorno,"ip address:",firstRank,FromBeginning)
sHost = Middle(Retorno,nInicio,nFim-nInicio)

Retorno = Middle(Retorno,nFim,Length(Retorno))

nInicio = PositionOccurrence(Retorno,"ip address:",firstRank,FromBeginning)+Length("ip address:")
nFim = PositionOccurrence(Retorno,"country:",firstRank,FromBeginning)
IP = Middle(Retorno,nInicio,nFim-nInicio)

Retorno = Middle(Retorno,nFim,Length(Retorno))

nInicio = PositionOccurrence(Retorno,"country:",firstRank,FromBeginning)+Length("country:")
nFim = PositionOccurrence(Retorno,"country code:",firstRank,FromBeginning)
sPais = Middle(Retorno,nInicio,nFim-nInicio)

Retorno = Middle(Retorno,nFim,Length(Retorno))

nInicio = PositionOccurrence(Retorno,"country code:",firstRank,FromBeginning)+Length("country code:")
nFim = PositionOccurrence(Retorno,"region:",firstRank,FromBeginning)
sCodPais = Middle(Retorno,nInicio,nFim-nInicio)

Retorno = Middle(Retorno,nFim,Length(Retorno))

nInicio = PositionOccurrence(Retorno,"region:",firstRank,FromBeginning)+Length("region:")
nFim = PositionOccurrence(Retorno,"city:",firstRank,FromBeginning)
sEstado = Middle(Retorno,nInicio,nFim-nInicio)

Retorno = Middle(Retorno,nFim,Length(Retorno))

nInicio = PositionOccurrence(Retorno,"city:",firstRank,FromBeginning)+Length("city:")
nFim = PositionOccurrence(Retorno,"local time:",firstRank,FromBeginning)
sCidade = Middle(Retorno,nInicio,nFim-nInicio)

Retorno = Middle(Retorno,nFim,Length(Retorno))

nInicio = PositionOccurrence(Retorno,"local time:",firstRank,FromBeginning)+Length("local time:")
nFim = PositionOccurrence(Retorno,"postal code:",firstRank,FromBeginning)
sHoraLocal = Middle(Retorno,nInicio,nFim-nInicio)

Retorno = Middle(Retorno,nFim,Length(Retorno))

nInicio = PositionOccurrence(Retorno,"postal code:",firstRank,FromBeginning)+Length("postal code:")
nFim = PositionOccurrence(Retorno,"latitude:",firstRank,FromBeginning)
sCodigoPostal = Middle(Retorno,nInicio,nFim-nInicio)

Retorno = Middle(Retorno,nFim,Length(Retorno))

nInicio = PositionOccurrence(Retorno,"latitude:",firstRank,FromBeginning)+Length("latitude:")
nFim = PositionOccurrence(Retorno,"longitude:",firstRank,FromBeginning)
sLatitude = Middle(Retorno,nInicio,nFim-nInicio)

Retorno = Middle(Retorno,nFim,Length(Retorno))

nInicio = PositionOccurrence(Retorno,"longitude:",firstRank,FromBeginning)+Length("longitude:")
nFim = 20
sLongitude = Middle(Retorno,nInicio,nFim)
sLongitude = Replace(sLongitude,"</span></div><","")


//Retorno = "Latitude: "+ sLatitude +" Longitude: "+ sLongitude

END

END




END

END

IF Retorno = "" THEN

ok = HTTPRequest(sUrl02)

Retorno = HTTPGetResult(httpResult)

ok = fSaveBuffer("c:\temp\geoip.txt",Retorno)

IF PositionOccurrence(Retorno,"<html",firstRank,FromBeginning) = 0 THEN

Retorno = ""

ELSE

Retorno = Replace(Retorno,Charact(34),"")
Retorno = Replace(Retorno,"'","")
Retorno = "Latitude: "+ sLatitude +" Longitude: "+ sLongitude

END

END

Info(sHost, IP, sCidade, sEstado, sPais, sCodPais, sHoraLocal, sCodigoPostal, sLatitude, sLongitude )

//4130757575.e.brasiltelecom.net.br
//177.6.166.73
//curitiba
//parana
//brazil
//br (bra)
//18 jul 18:22 (brt-0300)
//none
//-25.4167
//-49.25

RESULT(Retorno)