Java2Python : Google Maps API / CellID

Le
kael
Bonsoir,

Depuis quelques semaines, Google Maps Mobile utilise un système de
géolocalisation appelé "My Location", basé sur le CellID du mobile.

Apparemment, il existe une API cachée qui permet d'utiliser le CellID
(sans installer le logiciel) comme paramètre de requête HTTP POST avec
"http://www.google.com/glm/mmap" comme URL de base.

J'ai trouvé deux morceaux de code [1][2] qui permettent d'utiliser
l'API, mais ils sont écrits en Java. L'équivalent en Python utiliserait
urllib, mais il y a une partie du script que je ne saisis pas. J'ai
essayé d'utiliser le programme Java2Python, mais sans succès.

Est-ce que quelqu'un saurait svp convertir le morceau de script en Python ?

Merci.

[1]
<http://davanum.wordpress.com/2007/12/01/android-much-better-geo-location-from-just-cellidlac/>
[2] <http://www.anddev.org/viewtopic.php?pw7>

--
kael
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
TestMan
Le #232463
Bonsoir,

Depuis quelques semaines, Google Maps Mobile utilise un système de
géolocalisation appelé "My Location", basé sur le CellID du mobile.

Apparemment, il existe une API cachée qui permet d'utiliser le CellID
(sans installer le logiciel) comme paramètre de requête HTTP POST avec
"http://www.google.com/glm/mmap" comme URL de base.

J'ai trouvé deux morceaux de code [1][2] qui permettent d'utiliser
l'API, mais ils sont écrits en Java. L'équivalent en Python utiliserait
urllib, mais il y a une partie du script que je ne saisis pas. J'ai
essayé d'utiliser le programme Java2Python, mais sans succès.

Est-ce que quelqu'un saurait svp convertir le morceau de script en Python ?

Merci.


Bonjour,

Avez-vous testé JPE pour appeler directement votre code Java depuis Python ?

A+
TM
(Envoi croisé supprimé, parce que "c'est pas bien" :P )

kael
Le #684269
TestMan wrote:

Depuis quelques semaines, Google Maps Mobile utilise un système de
géolocalisation appelé "My Location", basé sur le CellID du mobile.

Apparemment, il existe une API cachée qui permet d'utiliser le CellID
(sans installer le logiciel) comme paramètre de requête HTTP POST avec
"http://www.google.com/glm/mmap" comme URL de base.

J'ai trouvé deux morceaux de code [1][2] qui permettent d'utiliser
l'API, mais ils sont écrits en Java. L'équivalent en Python utiliserait
urllib, mais il y a une partie du script que je ne saisis pas. J'ai
essayé d'utiliser le programme Java2Python, mais sans succès.

Est-ce que quelqu'un saurait svp convertir le morceau de script en Python ?


Avez-vous testé JPE pour appeler directement votre code Java depuis Python ?


Quelqu'un a publié la version Python du script :


#Begin
#!/usr/local/bin/python

import httplib
from struct import *

pd = chr(0)+chr(0x15) # Function Code?
pd += chr(0)+chr(0)+chr(0)+chr(0)+chr(0)+chr(0)+chr(0)+chr(0) #Session ID?
pd += chr(0)+chr(0x02)+chr(0x62)+chr(0x72) # Contry Code
pd += chr(0)+chr(0x12)+chr(0x53)+chr(0x6f)+chr(0x6e) # User Agent
pd += chr(0x79)+chr(0x5f)+chr(0x45)+chr(0x72)+chr(0x69) # User Agent
pd += chr(0x63)+chr(0x73)+chr(0x73)+chr(0x6f)+chr(0x6e) # User Agent
pd += chr(0x2d)+chr(0x4b)+chr(0x37)+chr(0x35)+chr(0x30) # User Agent
pd += chr(0)+chr(0x05)+chr(0x31)+chr(0x2e)+chr(0x33)+chr(0x2e)+chr(0x31)
# version
pd += chr(0)+chr(0x03)+chr(0x57)+chr(0x65)+chr(0x62) # "Web"
pd += chr(0x1b) # Op Code?
pd += chr(0)+chr(0)+chr(0x00)+chr(0x00) # MNC
pd += chr(0)+chr(0)+chr(0x00)+chr(0x00) # MCC
pd += chr(0)+chr(0)+chr(0)+chr(0x03) # ??
pd += chr(0)+chr(0) # ??
pd += chr(0)+chr(0)+chr(0x00)+chr(0x00) # CID - replace 0x00 with the
hex value from CID
pd += chr(0)+chr(0)+chr(0x00)+chr(0x00) # LAC - replace 0x00 with the
hex value from LAC
pd += chr(0)+chr(0)+chr(0)+chr(0) # ??
pd += chr(0)+chr(0)+chr(0)+chr(0) # ??
pd += chr(0)+chr(0)+chr(0)+chr(0) # ??
pd += chr(0)+chr(0)+chr(0)+chr(0) # ??

headers = {"Content-type": "application/binary"}
conn = httplib.HTTPConnection("www.google.com")
conn.request("POST", "/glm/mmap", pd, headers)
response = conn.getresponse()
print response.status, response.reason
data = response.read()
print data
print "Lat / Lon"
print unpack('>l',data[7:11])[0]/1000000.0
print unpack('>l',data[11:15])[0]/1000000.0
conn.close()
# End Python 2.5

qui certes me retourne (avec CID : 20442 / LAC : 6015) :

----
Traceback (most recent call last):
File "cellid.py", line 21, in <module>
pd += chr(0)+chr(0)+chr(0x4e4a)+chr(0x4e4a)
ValueError: chr() arg not in range(256)
----

Mais j'avance.

(Envoi croisé supprimé, parce que "c'est pas bien" :P )


Etant donné que je cherchais l'aide d'un programmeur polyglotte, c'était
plutôt pertinent. M'enfin. :P

--
kael


Publicité
Poster une réponse
Anonyme