From b9471e7b0576dfbb1157c639c4a34b243f9dd61e Mon Sep 17 00:00:00 2001 From: makefu Date: Wed, 11 Mar 2020 21:26:37 +0100 Subject: add common.py --- ebknotify/cli.py | 47 ++++++++++++++++++++++++++++++++++++++++++++++- ebknotify/common.py | 8 ++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 ebknotify/common.py (limited to 'ebknotify') diff --git a/ebknotify/cli.py b/ebknotify/cli.py index 67a4e9a..ef6f99a 100644 --- a/ebknotify/cli.py +++ b/ebknotify/cli.py @@ -1,3 +1,48 @@ +""" 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(): - pass + 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}") diff --git a/ebknotify/common.py b/ebknotify/common.py new file mode 100644 index 0000000..0566c40 --- /dev/null +++ b/ebknotify/common.py @@ -0,0 +1,8 @@ +import logging + +def set_lol(lol,log): + numeric_level = getattr(logging,lol.upper(),None) + if not isinstance(numeric_level,int): + raise AttributeError('No such log level {}'.format(lol)) + logging.basicConfig(level=numeric_level) + log.setLevel(numeric_level) -- cgit v1.2.3