blob: ef6f99a220e3fe87b045b3df0a5680f67992c799 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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():
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}")
|