return (dt + timedelta(seconds=seconds)).isoformat(timespec='minutes')
-def update_sledrun(site: WikiSite, title: str, feed: Feed, service_ids_by_date: Dict[datetime.date, FrozenSet[str]]):
+def update_sledrun(site: WikiSite, title: str, service_date: date, feed: Feed, service_ids_by_date: \
+ Dict[datetime.date, FrozenSet[str]]):
cprint(title, 'green')
sledrun_json_page = site.query_page(f'{title}/Rodelbahn.json')
sledrun: Sledrun = page_json(sledrun_json_page)
sledrun_orig = deepcopy(sledrun)
- service_date = default_query_date(date.today())
-
stops = feed.stops
stop_times = feed.stop_times
trips = feed.trips
schedule = {
'service_date': service_date.isoformat(),
'day_type': 'work_day',
- 'departure': [{'direction': k, 'datetime': v} for k, v in departures_dict.items()],
- 'arrival': [{'origin': k, 'datetime': v} for k, v in arrivals_dict.items()],
+ 'departure': [{'direction': k, 'datetime': sorted(v)} for k, v in departures_dict.items()],
+ 'arrival': [{'origin': k, 'datetime': sorted(v)} for k, v in arrivals_dict.items()],
}
lines.append({
'edit',
pageid=sledrun_json_page['pageid'],
text=sledrun_str,
- summary='Fahrplan zu Haltestellen ergän.',
+ summary='Fahrplan zu Haltestellen ergänzt.',
bot=1,
baserevid=sledrun_json_page['revisions'][0]['revid'],
nocreate=1,
for page in result['categorymembers']:
yield page['title']
-def update_public_transport_times(ini_files: List[str], gtfs_file: str, sledrun_title: Optional[str]):
+def update_public_transport_times(ini_files: List[str], service_date: date, gtfs_file: str, sledrun_title: Optional[str]):
feed = ptg.load_feed(gtfs_file)
service_ids_by_date = read_service_ids_by_date(gtfs_file)
site = WikiSite(ini_files)
if sledrun_title is None:
for sledrun_title in get_all_sledrun_titles(site):
- update_sledrun(site, sledrun_title, feed, service_ids_by_date)
+ update_sledrun(site, sledrun_title, service_date, feed, service_ids_by_date)
else:
- update_sledrun(site, sledrun_title, feed, service_ids_by_date)
+ update_sledrun(site, sledrun_title, service_date, feed, service_ids_by_date)
def main():
+ query_date = default_query_date(date.today())
parser = argparse.ArgumentParser(description='Update public transport bus stop time info in sledrun JSON files.')
parser.add_argument('--sledrun', help='If given, work on a single sled run page, otherwise at the whole category.')
+ parser.add_argument('--date', type=date.fromisoformat, default=query_date,
+ help='Working week date to query the database.')
parser.add_argument('gtfs_file', help='GTFS file.')
parser.add_argument('inifile', nargs='+', help='inifile.ini, see: https://www.winterrodeln.org/trac/wiki/ConfigIni')
args = parser.parse_args()
- update_public_transport_times(args.inifile, args.gtfs_file, args.sledrun)
+ update_public_transport_times(args.inifile, args.date, args.gtfs_file, args.sledrun)
if __name__ == '__main__':