summaryrefslogtreecommitdiffstats
path: root/ebknotify/cli.py
diff options
context:
space:
mode:
Diffstat (limited to 'ebknotify/cli.py')
-rw-r--r--ebknotify/cli.py47
1 files changed, 46 insertions, 1 deletions
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}")