In [216]:
import requests
import json
import random

Python Auckland Transport

This was created during the Hack Auckland: Auckland Transport event in Auckland. The first day was spent visiting the vendors and having a play with bitcoin. 2nd day was more productive with this python code being typed. My plan was to use data from the Auckland Motorcams to detect crashes or events happening on the road. I really should of said this when I got up and talked in front of people about my plan for the event - instead I mentioned the camera feed and how I would like to improve it with more relatient information - including gps of the cameras.


In [217]:
atdat = requests.get('https://api.at.govt.nz/v1/public/display/parkinglocations?api_key=433feddb-d4b9-473b-a0c2-ac982a6d78cd')

In [218]:
atext = atdat.text

In [219]:
atdict = json.loads(atext)

In [220]:
atres = atdict['response']

In [221]:
atlen = len(atres)

In [222]:
ranpark = random.randint(0, atlen)

In [223]:
mything = parks()

In [256]:
for a in mything.getparks():
    print a.keys()


[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']
[u'mobilitySpaces', u'name', u'longitude', u'address', u'latitude', u'type', u'id']

In [226]:
blen = atres[0:atlen]

In [227]:
ranitem = test.ranpark()


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-227-6f3741d7b4ae> in <module>()
----> 1 ranitem = test.ranpark()

NameError: name 'test' is not defined

In [229]:
thekeys = ranitem.keys()


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-229-47ff3b95afa8> in <module>()
----> 1 thekeys = ranitem.keys()

NameError: name 'ranitem' is not defined

In [230]:
thekeys


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-230-e1199d08c6f9> in <module>()
----> 1 thekeys

NameError: name 'thekeys' is not defined

In [231]:
listz = []

In [257]:
for kez in thekeys:
    #print key
    print atres[0][kez]
    listz.append(atres[0][kez])


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-257-d1a82652515b> in <module>()
----> 1 for kez in thekeys:
      2     #print key
      3     print atres[0][kez]
      4     listz.append(atres[0][kez])
      5 

NameError: name 'thekeys' is not defined

In [233]:
#dait = atdict.items()

In [234]:
print listz[3]


---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-234-bfc80ca98828> in <module>()
----> 1 print listz[3]

IndexError: list index out of range

In [235]:
import geopy

In [236]:
geo = geopy.GoogleV3()

In [237]:
geo.geocode(listz[3])


---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-237-4f20533607d8> in <module>()
----> 1 geo.geocode(listz[3])

IndexError: list index out of range

In [238]:
olenz = len(listz)

In [239]:
dachoice = random.randint(0, olenz)

In [240]:
dachoice


Out[240]:
0

In [241]:
class parks(object):
    def getparks(self):
        return atres
    
    def items(self):
        return atres[0]
    
    def ranpark(self):
        return atres[ranpark]
    
    def genpark(self):
        return (geo.geocode(listz[3]))
    
    def parkloc(self):
        return(atres[ranpark]['address'])
    
    def parkid(self):
        return(atres[renpark]['id'])
    
    def parkcheck():
        return(atres[renpark]['type'])
    
    def parknon(self, inpuz ):
        return(atres[renpark][inpuz])

In [241]:


In [242]:
park = parks()

In [243]:
park.genpark()


---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-243-00a81d2434e6> in <module>()
----> 1 park.genpark()

<ipython-input-241-49fab2d5039e> in genpark(self)
     10 
     11     def genpark(self):
---> 12         return (geo.geocode(listz[3]))
     13 
     14     def parkloc(self):

IndexError: list index out of range

In [244]:
park.parkloc()

park.parknon()


---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-244-f8f2cbf9611c> in <module>()
      1 park.parkloc()
      2 
----> 3 park.parknon()

TypeError: parknon() takes exactly 2 arguments (1 given)

In [245]:
park.parkid()


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-245-e63029c430d8> in <module>()
----> 1 park.parkid()

<ipython-input-241-49fab2d5039e> in parkid(self)
     16 
     17     def parkid(self):
---> 18         return(atres[renpark]['id'])
     19 
     20     def parkcheck():

NameError: global name 'renpark' is not defined

In [246]:
test.geopark()


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-246-e35d55737c03> in <module>()
----> 1 test.geopark()

NameError: name 'test' is not defined

In [247]:
geo.geocode(listz[3])


---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-247-4f20533607d8> in <module>()
----> 1 geo.geocode(listz[3])

IndexError: list index out of range

In [248]:
listz.sort()

In [249]:
listz


Out[249]:
[]

In [ ]:
#atdict.viewkeys()

In [ ]:
#atrespon = atdict['response']

In [ ]:


In [ ]:
#savdict = open('/home/wcmckee/pyatakl/tests/presets/carparks.json', 'w')
#savdict.write(str(atdict))

In [ ]:
#dait

In [ ]:


In [ ]:
#atdict.values()

In [ ]:
#for d in blen:
#    print d['address']

In [ ]:
#print atext

In [ ]:


In [ ]:
#atke

In [ ]:
#atkey.name

In [ ]:


In [258]:
getdispl = ('http://api.at.govt.nz/v1/public/realtime/vehiclelocations?api_key=433feddb-d4b9-473b-a0c2-ac982a6d78cd')

In [259]:
getres = requests.get(getdispl)

In [260]:
gettx = getres.text

In [261]:
pajson = json.loads(gettx)

In [262]:
patza = pajson.keys()

In [263]:
pajson.keys()


Out[263]:
[u'status', u'response', u'error']

In [264]:
for i in pajson:
    print i


status
response
error

In [265]:
patze = pajson['response']['entity'][0]

In [266]:
patze


Out[266]:
{u'id': u'7c308d21-5b25-b35e-7e59-e02488961f80',
 u'is_deleted': False,
 u'vehicle': {u'position': {u'latitude': -36.921086, u'longitude': 174.80408},
  u'timestamp': 1401509340,
  u'trip': {u'route_id': u'0096UE5501',
   u'schedule_relationship': 0,
   u'trip_id': u'0096UE550115301537377'},
  u'vehicle': {u'id': u'2aaf041d53ddcf209811f0f8f4302dee7d0fad1671e4eaf6f525766af355fef3'}}}

In [267]:
paveh = patze['vehicle']

In [268]:
pala = paveh['position']

In [269]:
print pala


{u'latitude': -36.921086, u'longitude': 174.80408}

In [270]:
palat = pala['latitude']

In [271]:
palat


Out[271]:
-36.921086

In [272]:
palong = pala['longitude']

In [273]:
palong


Out[273]:
174.80408

In [274]:
class busdata(object):
    
    def latdata(self):
        return palat
    def longdata(self):
        return palong

In [275]:
busdata = busdata()

In [276]:
busdata.longdata()


Out[276]:
174.80408

In [277]:
longdatas = str(busdata.longdata())

In [278]:
longdatas


Out[278]:
'174.80408'

In [279]:
latdatas = str(busdata.latdata())

In [280]:
latdatas


Out[280]:
'-36.921086'

In [281]:
busdata.latdata()


Out[281]:
-36.921086

In [282]:
bothdata


Out[282]:
-73.85227

In [284]:
from geopy.geocoders import GoogleV3
geolocator = GoogleV3()

In [285]:
address, (longdatas, longitude) = geolocator.reverse(longdatas, latdatas)
print(address, latitude, longitude)


---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-285-05aa9ec69da8> in <module>()
----> 1 address, (longdatas, longitude) = geolocator.reverse(longdatas, latdatas)
      2 print(address, latitude, longitude)

TypeError: 'NoneType' object is not iterable

In [287]:
print geolocator.reverse(longdatas, latdatas)


None

In [289]:
print geolocator.geocode(latdatas, longdatas)


None

In [293]:
for d in geolocator.geocode(busdata.latdata(), busdata.longdata()):
    print d


---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-293-38ca564243f7> in <module>()
----> 1 for d in geolocator.geocode(busdata.latdata(), busdata.longdata()):
      2     print d

TypeError: 'NoneType' object is not iterable

In [298]:
testgeo = geolocator.geocode(-36.921086, 174.80408)

In [300]:
print testgeo


None

In [ ]: