diff --git a/eggberg.py b/eggberg.py index fd8a8c0..6a3b492 100755 --- a/eggberg.py +++ b/eggberg.py @@ -1,6 +1,9 @@ #!/usr/bin/env python3 -# Detta skript ska sitta bakom HTTPS och lyssna på anrop från Slack. (Kör "ngrok http 8000" för att få en tillfällig proxy för testning.) Lägg till "/slack/events" till den resulterande HTTPS-URL:en och använd som Request URL på . +# Detta skript ska sitta bakom HTTPS och lyssna på anrop från Slack. (Kör +# "ngrok http 8000" för att få en tillfällig proxy för testning.) Lägg till +# "/slack/events" till den resulterande HTTPS-URL:en och använd som Request URL +# på . from slackeventsapi import SlackEventAdapter from slackclient import SlackClient @@ -12,57 +15,72 @@ import extruct import html import locale + def make_affiliate(url): u = furl(url) - # Lägg in ELABs ID. Egentligen vill vi skriva över endast parametern `p`, men för att komma runt en bugg med &-tecken rensar vi tills vidare bort alla parametrar. - #u.args['p'] = 'ZT07151453182201504Y' + # Lägg in ELABs ID. Egentligen vill vi skriva över endast parametern `p`, + # men för att komma runt en bugg med &-tecken rensar vi tills vidare bort + # alla parametrar. + # + # u.args['p'] = 'ZT07151453182201504Y' u.args = {'p': 'ZT07151453182201504Y'} return str(u) + def unfurl(url): - page = requests.get(url).text.replace('};', '}') # Ett semikolon hos Banggood kraschar extruct och måste plockas bort. + # Ett semikolon hos Banggood kraschar extruct och måste plockas + # bort. + page = requests.get(url).text.replace('};', '}') ld = extruct.extract(page, syntaxes=['json-ld'])['json-ld'][0] - desc = ld['description'] - title = html.unescape(ld['name']) # Banggood verkar ha HTML-kodat den här strängen av slentrian, fast de nog inte borde göra så. Vi avkodar. + # Banggood verkar ha HTML-kodat den här strängen av slentrian, fast de nog + # inte borde göra så. Vi avkodar. + title = html.unescape(ld['name']) image = ld['image'] currency = ld['offers']['priceCurrency'] if currency == 'SEK': currency = 'kr' + # Formateringsinstruktionen "n" ger oss decimaltecken enligt aktuell + # locale. price = f'{float(ld["offers"]["price"]):n}' + ' ' + currency - + return {'fallback': title + ' <' + url + '>', - 'color': '#cf8e00', # ELAB-orange - #'pretext': 'Optional text that appears above the attachment block', + 'color': '#cf8e00', # ELAB-orange + # 'pretext': 'Text that appears above the attachment block', 'author_name': 'Banggood', 'author_link': make_affiliate('https://banggood.com/'), 'author_icon': 'https://www.banggood.com/favicon.ico', 'title': title, 'title_link': url, - #'text': desc, # Utelämnas eftersom denna sträng från Banggood nästan aldrig innehåller något vettigt. - #'text': price, + # Utelämnas eftersom denna sträng från Banggood nästan aldrig + # innehåller något vettigt. + # 'text': ld['description'], 'fields': [{'title': 'Pris', 'value': price, 'short': True}], - #'image_url': image, # Visas som stor bild, vilket tar för mycket plats. + # Visas som stor bild, vilket tar för mycket plats. + # 'image_url': image, 'thumb_url': image, 'footer': 'Använd denna länk för att gynna ELAB.', 'footer_icon': 'https://www.elab.kth.se/static/favicon.png', - #'ts': 123456789 # Endast om informationen är knuten till en viss tidpunkt + # Endast om informationen är knuten till en viss tidpunkt + # 'ts': 123456789 } -# Sätt locale (för att få komma som decimaltecken). -locale.setlocale(locale.LC_ALL, '') # Our app's Slack Event Adapter for receiving actions via the Events API -slack_signing_secret = os.environ['SLACK_SIGNING_SECRET'] # -slack_events_adapter = SlackEventAdapter(slack_signing_secret, '/slack-eggberg/events') +# Signing token: +slack_signing_secret = os.environ['SLACK_SIGNING_SECRET'] +slack_events_adapter = SlackEventAdapter(slack_signing_secret, + '/slack-eggberg/events') # Create a SlackClient for your bot to use for Web API requests -token = os.environ['SLACK_TOKEN'] # Börjar med "xoxp-". +# Slack token börjar med "xoxp-". +token = os.environ['SLACK_TOKEN'] slack_client = SlackClient(token) + # Prenumerera på eventet `link_shared`. @slack_events_adapter.on('link_shared') def link_shared(event_data): @@ -75,5 +93,9 @@ def link_shared(event_data): ts=event_data['event']['message_ts'], unfurls=unfurls) + +# Sätt locale (för att få komma som decimaltecken). +locale.setlocale(locale.LC_ALL, '') + # Starta en server med endpointen `/slack/events`. slack_events_adapter.start(port=8000) diff --git a/lint b/lint new file mode 100755 index 0000000..ccb63db --- /dev/null +++ b/lint @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +DIR="$(readlink -f "${BASH_SOURCE%/*}")" +cd "${DIR}" + +flake8 .