Last active
July 3, 2018 11:41
-
-
Save Franck1333/c107cd76c43da2bed47c2b90b7c02ffa to your computer and use it in GitHub Desktop.
Get suggestions of places near where your IP adress is located
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# -*- coding: UTF8 -*- | |
#Aides: https://stackoverflow.com/questions/24906833/get-your-location-through-python | |
#Aides: https://github.com/Franck1333/GPS-Display/blob/master/Mon_Travail/Recuperation_Determination.py | |
import requests #<-- Utilisation d'une Adresse URL Normalisée | |
import json #<-- Permet l'expoitation de fichier en format JSON | |
import googlemaps #pip install -U googlemaps <-- API Python de Google MAPS | |
#EXPLICATION --DEBUT-- | |
#Ce Programme est utile pour determine la localisation de l'Adresse IP de l'utilisateur | |
#En revanche , ce programme n'indique pas la localisation exacte de l'utilisateur, dans ce cas elle sera imprécise!!! | |
#EXPLICATION --FIN-- | |
#---------- | |
#API https://ipstack.com | |
def recuperation_coordonees_ip(): | |
send_url = 'http://api.ipstack.com/check?access_key=b0e724b68c170a901019d01552425f1a&format=1' | |
r = requests.get(send_url) #<-- Ouverture de L'URL pour l'utilisation de L'API | |
j = json.loads(r.text) #Chargement des données reçu dans le fichier en format JSON | |
global latitude #Declaration de la variable Globale 'latitude' | |
global longitude #Declaration de la variable Globale 'longitude' | |
#Information Technique --DEBUT-- | |
ip = j['ip'] | |
print("Voici votre adresse I.P:", ip) | |
#Information Technique --FIN-- | |
#Information Géographique --DEBUT-- | |
latitude = j['latitude'] #Enregistrement de la valeur latitude du fichier JSON dans la Variable Global correspondant | |
longitude = j['longitude'] #Enregistrement de la valeur longitude du fichier JSON dans la Variable Global correspondant | |
city = j['city'] | |
region_name = j['region_name'] | |
ZIP = j['zip'] | |
country_name = j['country_name'] | |
continent_name = j['continent_name'] | |
#print(latitude) #Affichage de la Variable 'latitude' | |
#print(longitude) #Affichage de la Variable 'longitude' | |
#print("L'adresse IP a ete localiser ici:",city) | |
#print("Les Coordonees exactes de l'Adresse IP utilise:",continent_name,country_name,region_name,ZIP,city) | |
#Information Géographique --FIN-- | |
return latitude,longitude #Retourne les variables obtenue dans le cadre d'une utilisation ultérieur de ses valeurs | |
#---------- | |
#---------- | |
#INFORMATION : | |
#La localisation de exacte de l'adresse IP peut être obtenue via l'API /api.ipstack.com/ ou alors en donnant les deux valeurs latitude et longitude à une autre | |
#A.P.I tel que Google MAPS, qui lui peut obtenir des résultats différents ou plus précis que la première API ; A vous de choisir. | |
#---------- | |
#API https://console.cloud.google.com/ | |
def determination(): | |
gmaps = googlemaps.Client(key='AIzaSyCbcLmcGDUQlhvZhAkdE0IUFh90rjJ7rrw') #Cle d'acces A.P.I | |
reverse_geocode_result = gmaps.reverse_geocode((latitude, longitude)) #Envoie et Recuperation des Donnees | |
print("L'Adresse IP Localise a :") | |
#print(reverse_geocode_result) Format JSON | |
resultat_Adresse = reverse_geocode_result[0]['formatted_address'] #STRING LOCALISATION DETERMINE de L'Adresse entière | |
resultat_Ville = reverse_geocode_result[0]['address_components'][2]['long_name'] #STRING LOCALISATION DETERMINE de La Ville uniquement | |
print ("A l'Adresse suivante :",resultat_Adresse) #Affichage de l'adresse entière determinée | |
print ("Dans la ville de :",resultat_Ville) #Afficgage de la Ville determinée | |
return resultat_Adresse,resultat_Ville #Retourne les variables obtenue dans le cadre d'une utilisation ultérieur de ses valeurs | |
#---------- | |
if __name__ == "__main__": | |
recuperation_coordonees_ip() #Fonctionnalité permettant d'Obtenir/Determiné les coordonées GPS correspondant à l'Adresse I.P de l'utilisateur | |
#determination() #Fonctionnalité permettant de determiné la localisation de l'utilisateur avec son adresse I.P avec Google MAPS |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# -*- coding: UTF8 -*- | |
#Aides : https://developers.google.com/places/web-service/search | |
#Aides : http://json.parser.online.fr/ | |
import requests #<-- Utilisation d'une Adresse URL Normalisée | |
import json #<-- Permet l'expoitation de fichier en format JSON | |
import googlemaps #pip install -U googlemaps <-- API Python de Google MAPS | |
import sys | |
#Blibliothèque RANDOM pour l'utilisation de l'aléatoire | |
import random | |
#Recuperation de la fonction recuperation_coordonees_ip() provenant du fichier GPSoI_for_suggest.py | |
#from GPSoI_for_suggest import recuperation_coordonees_ip | |
#------------------------------------------------------------ | |
# Add the root GPS dir so Python can find the modules | |
sys.path.append('/home/pi/Desktop/Raspberry_Assistant/GPS/') | |
from GPSoI import recuperation_coordonees_ip | |
#------------------------------------------------------------ | |
def place_to_be(): | |
latitude,longitude = recuperation_coordonees_ip() #Recuperation des variable GPS obtenue dans le fichier GPSoI_for_suggest.py | |
#print("TEST debug de la latitude :", latitude) | |
#print("TEST debug de la longitude :",longitude) | |
send_url = 'https://maps.googleapis.com/maps/api/place/nearbysearch/json?location='+str(latitude)+','+ str(longitude)+'&radius=5000&language=fr&key=AIzaSyDUAcIP2O7fYSAexmtM-y9stMwWSxmMFW8' | |
r = requests.get(send_url) #<-- Ouverture de L'URL pour l'utilisation de L'API | |
j = json.loads(r.text) #Chargement des données reçu dans le fichier en format JSON | |
#print(j) | |
#INDICE = 0 #Indice permettant le Traitement des données provenant du fichier JSON | |
INDICE = random.randrange(1,10,1) #Le systeme choisi au hasard entre les 10 titres présent dans le top 10 un seul morceau | |
Taille_reponse = len(j['results']) #Permet de determiné la taille exacte de la Réponse reçu; Donc permet de determiné le nombre réponse obtenue | |
nom_place = j['results'][INDICE]["name"] | |
adresse_place = j['results'][INDICE]["vicinity"] | |
#for INDICE in range(len(j['results'])): #Traitement à partir de 0 jusqu'a la taille de la Réponse reçu | |
print("\n") #Saut de ligne | |
print("Pour Ajourd'hui , voici une nouvelle suggestion d'un endroit qui se trouve a proximité de votre position:") | |
print("\n") #Saut de ligne | |
print("Nom de l'emplacement Publique :", nom_place) #Affichage du Nom de la Structure publique choisi au hasard | |
print("Adresse de l'emplacement Publique :", adresse_place) #Adresse du Nom de la Structure publique choisi au hasard | |
#print("Resultat Numero:",INDICE +1, "sur" ,Taille_reponse) #Indication où sommes nous dans la recherche tant sur tant. | |
return nom_place,adresse_place | |
if __name__ == "__main__": | |
place_to_be() #Fonctionnalité permettant de suggérer a l'utilisateur un emplacement publique proche de localisation de son adresse I.P. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment