ferry/ferry/views.py

85 lines
2.3 KiB
Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from ferry.app import app
from flask import render_template
import requests
from datetime import datetime
@app.route('/')
def ferry():
data = ferry_request()
info = False
for value in data:
if 'info' in value:
info = True
break
return render_template('ferry.html', data=data, info=info)
@app.route("/time")
def timeleft():
return render_template("timeleft.html")
def extract_time(json):
try:
return json['DepartureTime']
except:
return -1
# <GT name ="DepartureTime" value='$dateadd(0.10:15:00)' />
def ferry_request():
url = 'http://api.trafikinfo.trafikverket.se/beta/data.json'
headers = {'Content-Type': 'text/xml'}
xml_data = """<?xml version='1.0' encoding='utf-8'?>
<REQUEST>
<LOGIN authenticationkey="ac4b2399b54648d09a30db1a33fc6eda" />
<QUERY objecttype="FerryAnnouncement">
<FILTER>
<AND>
<EQ name="Route.Id" value="14" />
<AND>
<GT name="DepartureTime" value="$now"/>
<LT name ="DepartureTime" value='$dateadd(0.04:15:00)' />
</AND>
</AND>
</FILTER>
<INCLUDE>DepartureTime</INCLUDE>
<INCLUDE>Info</INCLUDE>
<INCLUDE>ToHarbor.Id</INCLUDE>
<INCLUDE>ToHarbor.Name</INCLUDE>
<INCLUDE>FromHarbor.Name</INCLUDE>
<INCLUDE>FromHarbor.Id</INCLUDE>
</QUERY>
</REQUEST>
"""
r = requests.post(url, data=xml_data, headers=headers)
if r.status_code == 200:
data = r.json()
dataFerry = data['RESPONSE']['RESULT'][0]['FerryAnnouncement']
dataFerry.sort(key=extract_time, reverse=False)
result = []
for item in dataFerry:
mydict = {}
timestamp = item['DepartureTime']
timestamp = datetime.strptime(timestamp, "%Y-%m-%dT%H:%M:%S")
timestamp = timestamp.strftime("%H:%M:%S")
mydict['time'] = timestamp
if 'Info' in item:
info = item['Info'][0].encode('utf-8')
mydict['info'] = item['Info']
result.append(mydict)
return result
else:
print r.text
return 0