summaryrefslogtreecommitdiffstats
path: root/ebknotify
diff options
context:
space:
mode:
authormakefu <github@syntax-fehler.de>2020-03-11 21:26:37 +0100
committermakefu <github@syntax-fehler.de>2020-03-11 21:26:37 +0100
commitb9471e7b0576dfbb1157c639c4a34b243f9dd61e (patch)
tree3988b0c2ecaaea554c2ecd91c93ed6f4e5ec3728 /ebknotify
parentf63c4d3b4bbcae173f8ef27f0f62b7d48dace6b1 (diff)
add common.py
Diffstat (limited to 'ebknotify')
-rw-r--r--ebknotify/cli.py47
-rw-r--r--ebknotify/common.py8
2 files changed, 54 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}")
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)