""" usage: ebk-notify [options] CONFIG options: --lol=LOL Log Level [Default: INFO] """ from docopt import docopt from .client import EbkClient from .common import set_lol import yaml import json import dateutil import dateutil.parser from datetime import datetime from dateutil.tz import tzlocal import logging log = logging.getLogger('ebk-notify') def main(): args = docopt(__doc__) set_lol(args['--lol'],log) config = yaml.safe_load(open(args['CONFIG'])) api = EbkClient(config['main']['appid'], config['main']['apppw'], config['main']['userid'], config['main']['userpw'] ) for item in config['items']: log.info(f"For Search \"{item['name']}\"") del item['name'] if 'distance' in item and 'distanceUnit' not in item: item['distanceUnit'] = 'KM' ads = api.get_ads(**item) now = datetime.now(tzlocal()) for ad in ads: id = ad.get('id', 0) log.debug(json.dumps(ad,indent=4)) creation = ad.get('start-date-time', {}).get('value', '').encode('utf-8') price = ad.get('price',{ 'amount': {}})['amount'].get('value',0) url = ad['link'][1]['href'] d = dateutil.parser.parse(creation) age_in_h = round((now - d).total_seconds() / 3600,2) title = ad.get('title', {}).get('value', '').encode('utf-8') title_unescaped = api.html_unescape(title) log.info( f"{age_in_h}h ago: \"{title_unescaped}\" for {price}€ -> {url}")