Skip to content

Instantly share code, notes, and snippets.

@Franck1333
Last active July 3, 2018 11:41
Show Gist options
  • Save Franck1333/c107cd76c43da2bed47c2b90b7c02ffa to your computer and use it in GitHub Desktop.
Save Franck1333/c107cd76c43da2bed47c2b90b7c02ffa to your computer and use it in GitHub Desktop.
Get suggestions of places near where your IP adress is located
#!/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
#!/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