-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathicloud.py
81 lines (63 loc) · 2.21 KB
/
icloud.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#/usr/bin/python
from pyicloud import PyiCloudService
import time
import collections
import MySQLdb
DB_HOST = 'localhost'
DB_USER = 'root'
DB_PASS = 'root'
DB_NAME = 'icloud'
def run_query(query=''):
datos = [DB_HOST, DB_USER, DB_PASS, DB_NAME]
conn = MySQLdb.connect(*datos) # Conectar a la base de datos
cursor = conn.cursor() # Crear un cursor
cursor.execute(query) # Ejecutar una consulta
if query.upper().startswith('SELECT'):
data = cursor.fetchall() # Traer los resultados de un select
else:
conn.commit() # Hacer efectiva la escritura de datos
data = None
cursor.close() # Cerrar el cursor
conn.close() # Cerrar la conexion
return data
def convert(data):
if isinstance(data, basestring):
return str(data)
elif isinstance(data, collections.Mapping):
return dict(map(convert, data.iteritems()))
elif isinstance(data, collections.Iterable):
return type(data)(map(convert, data))
else:
return data
def seldevice(api):
dispositivos=convert(api.devices)
if 1==len(list(dispositivos.values())):
return api.devices[0]
else:
print("Elige un dispositivo")
i=0
for valor in convert(api.devices):
i=i+1
print "[%s] --> %s " % (i,valor)
num=int(raw_input("introduce un numero: "))-1
return api.devices[num]
def main(email,password,delay=3):
api = PyiCloudService(email, password)
timeunix=0
device=seldevice(api)
dispositivo=convert(device.status()).get("name")
while True:
loc=device.location()
loc=convert(loc)
if timeunix!=loc.get("timeStamp"):
timeunix=loc.get("timeStamp")
lat=loc.get("latitude")
longi=loc.get("longitude")
prec=loc.get("horizontalAccuracy")
query = "INSERT INTO loc (time, latitud, longitud, prec, cuenta, dispositivo) VALUES ('%s','%s','%s','%s','%s','%s')"%(str(timeunix),str(lat),str(longi),str(prec),str(email),str(dispositivo))
print(query)
run_query(query)
time.sleep(delay*60)
email=""
password=""
main(email,password,2)