]> ToastFreeware Gitweb - philipp/winterrodeln/wrpylib.git/commitdiff
Add date as command line parameter.
authorPhilipp Spitzer <philipp@spitzer.priv.at>
Tue, 12 Dec 2023 20:24:35 +0000 (21:24 +0100)
committerPhilipp Spitzer <philipp@spitzer.priv.at>
Tue, 12 Dec 2023 20:24:35 +0000 (21:24 +0100)
scripts/update_public_transport_times.py

index 9880d75c682eec6b939badb38de617b8ee078652..8b43cbca339e5b3a6abac39b18d36674abad2cad 100644 (file)
@@ -41,14 +41,13 @@ def format_time(day: date, seconds: float) -> str:
     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
@@ -140,25 +139,28 @@ def get_all_sledrun_titles(site: WikiSite) -> Iterable[str]:
         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__':