Skip to content

Commit

Permalink
Add loop mode
Browse files Browse the repository at this point in the history
  • Loading branch information
hbruch committed Aug 14, 2023
1 parent 530250b commit c7a1c99
Showing 1 changed file with 24 additions and 7 deletions.
31 changes: 24 additions & 7 deletions x2gbfs/x2gbfs.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import logging
import os
from argparse import ArgumentParser
from time import sleep

from decouple import config

Expand All @@ -26,19 +27,27 @@ def build_extractor(provider):

return extractor

def main(providers, output_dir, base_url, interval=0):
while True:
for provider in providers:
generate_feed_for(provider, output_dir, base_url)
if interval == 0:
return
else:
sleep(interval)

def main(args) -> None:
provider = args.provider
def generate_feed_for(provider, output_dir, base_url) -> None:
with open(f'config/{provider}.json') as config_file:
# TODO error handling
feed_config = json.load(config_file)

transformer = GbfsTransformer()
extractor = build_extractor(provider)
destFolder = args.outputDir

(info, status, vehicle_types, vehicles) = transformer.load_stations_and_vehicles(extractor)
GbfsWriter().write_gbfs_feed(feed_config, destFolder, info, status, vehicle_types, vehicles, args.baseUrl)
GbfsWriter().write_gbfs_feed(
feed_config, f'{output_dir}/{provider}', info, status, vehicle_types, vehicles, f'{base_url}/{provider}'
)
logger.info(f'Updated feeds for {provider}')


Expand All @@ -47,9 +56,17 @@ def main(args) -> None:
parser.add_argument(
'-o', '--outputDir', help='output directory the transformed files are written to', default='out'
)
parser.add_argument('-p', '--provider', required=True, help='service provider')
parser.add_argument('-b', '--baseUrl', required=False, help='baseUrl this feed will be published under')
parser.add_argument('-p', '--providers', required=True, help='service provider(s), comma-separated')
parser.add_argument('-b', '--baseUrl', required=True, help='baseUrl this/these feed(s) will be published under')
parser.add_argument(
'-i',
'--interval',
required=False,
help='if provided, feeds will be updated every interval seconds. 0 means feeds are only genereated once',
default=0,
type=int,
)

args = parser.parse_args()

main(args)
main(args.providers.split(','), args.outputDir, args.baseUrl, args.interval)

0 comments on commit c7a1c99

Please sign in to comment.