Skip to content

Instantly share code, notes, and snippets.

@exogen
Last active February 18, 2016 02:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save exogen/5e951c2e3d71cb2be8b4 to your computer and use it in GitHub Desktop.
Save exogen/5e951c2e3d71cb2be8b4 to your computer and use it in GitHub Desktop.
Big rruleset
from datetime import datetime
from dateutil.parser import parse
from dateutil.rrule import MO, TU, WE, TH, FR, SA, SU
from dateutil.rrule import rrule, rruleset, WEEKLY
rs = rruleset()
WEEKDAY_TIMES = [
{ "byhour": 5, "byminute": 0 },
{ "byhour": 5, "byminute": 15 },
{ "byhour": 5, "byminute": 30 },
{ "byhour": 5, "byminute": 45 },
{ "byhour": 6, "byminute": 0 },
{ "byhour": 6, "byminute": 15 },
{ "byhour": 6, "byminute": 30 },
{ "byhour": 6, "byminute": 45 },
{ "byhour": 7, "byminute": 0 },
{ "byhour": 7, "byminute": 15 },
{ "byhour": 7, "byminute": 30 },
{ "byhour": 7, "byminute": 45 },
{ "byhour": 8, "byminute": 0 },
{ "byhour": 8, "byminute": 15 },
{ "byhour": 8, "byminute": 30 },
{ "byhour": 8, "byminute": 45 },
{ "byhour": 9, "byminute": 0 },
{ "byhour": 9, "byminute": 15 },
{ "byhour": 9, "byminute": 30 },
{ "byhour": 9, "byminute": 45 },
{ "byhour": 13, "byminute": 0 },
{ "byhour": 13, "byminute": 15 },
{ "byhour": 13, "byminute": 30 },
{ "byhour": 13, "byminute": 45 },
{ "byhour": 14, "byminute": 0 },
{ "byhour": 14, "byminute": 15 },
{ "byhour": 14, "byminute": 30 },
{ "byhour": 14, "byminute": 45 },
{ "byhour": 15, "byminute": 0 },
{ "byhour": 15, "byminute": 15 },
{ "byhour": 15, "byminute": 30 },
{ "byhour": 15, "byminute": 45 },
{ "byhour": 16, "byminute": 0 },
{ "byhour": 16, "byminute": 15 },
{ "byhour": 16, "byminute": 30 },
{ "byhour": 16, "byminute": 45 }
]
SUNDAY_TIMES = [
{ "byhour": 11, "byminute": 0 },
{ "byhour": 11, "byminute": 15 },
{ "byhour": 11, "byminute": 30 },
{ "byhour": 11, "byminute": 45 },
{ "byhour": 12, "byminute": 0 },
{ "byhour": 12, "byminute": 15 },
{ "byhour": 12, "byminute": 30 },
{ "byhour": 12, "byminute": 45 },
{ "byhour": 14, "byminute": 0 },
{ "byhour": 14, "byminute": 15 },
{ "byhour": 14, "byminute": 30 },
{ "byhour": 14, "byminute": 45 },
{ "byhour": 15, "byminute": 0 },
{ "byhour": 15, "byminute": 15 },
{ "byhour": 15, "byminute": 30 },
{ "byhour": 15, "byminute": 45 }
]
START_DATE = parse("20110201")
WEEKDAYS = (MO, TU, WE, TH, FR, SA)
SUNDAYS = (SU,)
for spec in WEEKDAY_TIMES:
rs.rrule(rrule(WEEKLY, byweekday=WEEKDAYS, dtstart=START_DATE, **spec))
for spec in SUNDAY_TIMES:
rs.rrule(rrule(WEEKLY, byweekday=SUNDAYS, dtstart=START_DATE, **spec))
print("When is the next bus?")
print(rs.after(datetime.now()))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment