Advertisement
phjoe

OpenWeather

Oct 31st, 2015
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. class CuacaError(Exception):pass
  2.  
  3. class Cuaca:
  4.  def load(self,kota):
  5.   import e32socket,e32
  6.  
  7.   # sign up di openweathermap.org untuk mendapatkan API key (kalo kamu pake opera, setelah signup akan masuk ke halaman yg menampilkan key api tapi dalam inputbox yg read-only (utk lihat kode yg lengkap, lihat source hal nya)
  8.  
  9.   key = 'f094936f8d89xxxxxx'
  10.  
  11.   url='api.openweathermap.org/data/2.5/weather?q=%s&units=metric&appid=%s' %(kota,key)
  12.   host,url=url.split('/',1)
  13.  
  14.   try:
  15.    soc=e32socket.socket(e32socket.AF_INET, e32socket.SOCK_STREAM,0,None)
  16.    soc.connect((e32socket.gethostbyname(host), 80))
  17.  
  18.    print 'Updating data...'
  19.    soc.send('GET /%s HTTP/1.0\r\nHost: %s\r\nUser-agent: UNTRUSTED 1.0\r\n\r\n'%(url, host))
  20.    
  21.    st=soc.recv(1024).split('\r\n')
  22.    for x in xrange(len(st)):
  23.     if not st[x] or st[x].isspace():break
  24.    st=['\r\n'.join(st[x+1:])]
  25.    while 1:
  26.     e32.ao_sleep(0)
  27.     x=soc.recv(1024)
  28.     if not x:break
  29.     st.append(x)
  30.  
  31.    data=eval(''.join(st))
  32.    if isinstance(data, dict):
  33.     print 'City:', data['name']
  34.     print 'Cond:', data['weather'][0]['main']
  35.     print 'Temp:', data['main']['temp']
  36.    else:
  37.     print 'Tidak ada data'
  38.  
  39.   except (soc.error,soc.gaiaerror), (se,sg):
  40.    raise CuacaError('Kesalahan koneksi')
  41.  
  42.  
  43. if __name__=='__main__':
  44.  w=Cuaca()
  45.  try:
  46.   w.load('jakarta')
  47.  except Exception,err:
  48.   print err
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement