from wrpylib.cli_tools import unified_diff, input_yes_no_quit, Choice
from wrpylib.json_tools import order_json_keys, format_json
+from wrpylib.lib_update_public_transport import default_query_date
from wrpylib.mwapi import WikiSite, page_json
from wrpylib.vao import Vao
from wrpylib.wrvalidators import LonLat
return result
-def update_sledrun(vao: Vao, site: WikiSite, title: str):
+def update_sledrun(vao: Vao, site: WikiSite, title: str, query_date: date):
sledrun_json_page = site.query_page(f'{title}/Rodelbahn.json')
sledrun_json = page_json(sledrun_json_page)
stops_with_dists = sorted(stops_with_dists, key=lambda s: s.dist.dist_m)
stops_with_dists = remove_redundant_stops(stops_with_dists)
- journey_date = datetime(2022, 12, 14)
+ journey_date = datetime(query_date.year, query_date.month, query_date.day)
journey_minutes = 1439
public_transport_stops = []
})
schedules = [{
+ 'service_date': journey_date.date().isoformat(),
"day_type": "work_day",
- "begin": journey_date.isoformat(timespec='minutes'),
- "minutes": journey_minutes,
"departure": departure,
"arrival": arrival,
}]
)
-def update_public_transport(ini_files: List[str]):
+def update_public_transport(ini_files: List[str], query_date: date, sledrun: Optional[str]):
config = configparser.ConfigParser()
config.read(ini_files)
site = WikiSite(ini_files)
vao = Vao(config.get('vao', 'access_id'))
- # update_sledrun(vao, site, 'Rumer Alm')
- # update_sledrun(vao, site, 'Kemater Alm')
- update_sledrun(vao, site, 'Nisslalm')
- return
+ if sledrun is not None:
+ update_sledrun(vao, site, sledrun, query_date)
+ return
for result in site.query(list='categorymembers', cmtitle='Kategorie:Rodelbahn', cmlimit='max'):
for page in result['categorymembers']:
- print(page['title'])
- # if page['title'] in ['Anzère', 'Hochhäderich (Falkenhütte)', 'Hochlitten-Moosalpe']:
- # continue
- update_sledrun(vao, db_cities, site, page['title'])
+ sledrun = page['title']
+ print(sledrun)
+ update_sledrun(vao, site, sledrun, query_date)
def main():
+ query_date = default_query_date(date.today())
parser = argparse.ArgumentParser(description='Update public transport information 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('inifile', nargs='+', help='inifile.ini, see: https://www.winterrodeln.org/trac/wiki/ConfigIni')
args = parser.parse_args()
- update_public_transport(args.inifile)
+ update_public_transport(args.inifile, args.date, args.sledrun)
if __name__ == '__main__':