added tfl.py.

This commit is contained in:
jesopo 2016-06-28 00:09:33 +01:00
parent 622ffa4825
commit cbec3657f4
No known key found for this signature in database
GPG key ID: 0BBDEB2AEFCFFCB3
2 changed files with 48 additions and 1 deletions

View file

@ -12,5 +12,7 @@
"twitter-access-secret" : "",
"trakt-api-key" : "",
"bitly-api-key" : "",
"soundcloud-api-key" : ""
"soundcloud-api-key" : "",
"tfl-app-id" : "",
"tfl-app-key" : ""
}

45
modules/tfl.py Normal file
View file

@ -0,0 +1,45 @@
import datetime
import Utils
URL_BUS = "https://api.tfl.gov.uk/StopPoint/%s/Arrivals"
URL_BUS_SEARCH = "https://api.tfl.gov.uk/StopPoint/Search/%s"
class Module(object):
def __init__(self, bot):
self.bot = bot
bot.events.on("received").on("command").on("tflbus"
).hook(self.bus, min_args=1)
def bus(self, event):
app_id = self.bot.config["tfl-api-id"]
app_key = self.bot.config["tfl-api-key"]
stop_id = event["args_split"][0]
if stop_id.isdigit():
bus_search = Utils.get_url(URL_BUS_SEARCH % stop_id, get_params={
"app_id": app_id, "app_key": app_key}, json=True)
print(bus_search)
if bus_search["matches"]:
bus_stop = bus_search["matches"][0]
real_stop_id = bus_stop["id"]
bus_stop = Utils.get_url(URL_BUS % real_stop_id, get_params={
"app_id": app_id, "app_key": app_key}, json=True)
busses = []
for bus in bus_stop:
bus_number = bus["lineName"]
bus_due_iso8601 = bus["expectedArrival"]
bus_due = datetime.datetime.strptime(bus_due_iso8601,
"%Y-%m-%dT%H:%M:%SZ")
time_until = bus_due-datetime.datetime.utcnow()
time_until = int(time_until.total_seconds()/60)
busses.append([bus_number, time_until])
if busses:
busses = sorted(busses, key=lambda b: b[-1])
event["stdout"].write("%s: %s" % (stop_id, ", ".join(
["%s (in %d minutes)" % (line, due
) for line, due in busses])))
else:
event["stderr"].write("%s: No busses due" % stop_id)
else:
event["stderr"].write("Bus ID '%s' unknown" % stop_id)
else:
event["stderr"].write("Please provide a numeric bus stop ID")