Skip to content

Commit

Permalink
added lambda + api gateway untappdAPI
Browse files Browse the repository at this point in the history
  • Loading branch information
Deyvid committed Dec 29, 2019
1 parent 0f8020b commit cabc973
Show file tree
Hide file tree
Showing 8 changed files with 127 additions and 113 deletions.
91 changes: 0 additions & 91 deletions backfill_function.py

This file was deleted.

1 change: 0 additions & 1 deletion lambda_function.py → lambda-daily_doug.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ def lambda_handler(event, context):
response = get_page(os.environ['untappd_url'])
checkins = gather_checkins(response)


logger.info("gathereed " + str(len(checkins)) + " checkins" )

latest_checkin_id = main(logger, checkins, event['latest_checkin_id'])
Expand Down
2 changes: 1 addition & 1 deletion deploy_to_lambda.sh → lambda-deploy-daily_doug.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/bin/bash

zip -r package.zip lambda_function.py lib/ src/ && \
zip -r package.zip lambda-daily_doug.py lib/ src/ && \
aws lambda update-function-code \
--function-name dailyDoug \
--zip-file fileb://./package.zip \
Expand Down
8 changes: 8 additions & 0 deletions lambda-deploy-untappd_api.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#!/bin/bash

zip -r package.zip lambda-untappd_api.py lib/ src/ && \
aws lambda update-function-code \
--function-name untappdApi \
--zip-file fileb://./package.zip \
--profile optate \
--region us-east-2
54 changes: 54 additions & 0 deletions lambda-untappd_api.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import datetime
import functools
import json
import logging
import os
import re
import sys

from collections import defaultdict

sys.path.insert(1, './lib')
sys.path.insert(1, './src')

from lib.bs4 import BeautifulSoup, SoupStrainer
from lib import pymysql
from lib import requests
from lib import yaml


from scraper import *
from slack import *
from untappd_api import *



logging.basicConfig(
filename=LOG_PATH, format='%(asctime)s - %(levelname)s - %(message)s', level=logging.INFO)
logging.info("=== Run started ===")
logger = logging.getLogger()
logger.setLevel(logging.INFO)


def lambda_handler(event, context):

if not event['queryStringParameters'] or not event['queryStringParameters']['beercode']:
return {
'statusCode': 400,
'msg': 'Did not get beercode',
'event': event
}

beercode = event['queryStringParameters']['beercode']
beer = fetchBeerInfo(beercode)
beer_info = fetchDougBeerInfo(beer['beer_slug'])
checkin_review = fetchCheckinReview(beer_info['recent_checkin_id'])

return {
'statusCode': 200,
'body': json.dumps({
'beer': beer,
'beer_info': beer_info,
'review': checkin_review
})
}
18 changes: 17 additions & 1 deletion src/scraper.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@
filename=LOG_PATH, format='%(asctime)s - %(levelname)s - %(message)s', level=logging.INFO)
logging.info("=== Run started ===")

class checkin_info:
def __init__(self):
self.review = ''

def prepend_hostname(path: str) -> str:
return "https://untappd.com" + path

Expand All @@ -35,14 +39,26 @@ def find_rating_in_class_list(classes: list) -> str:
raise Exception(
"could not find rating in classlist: [{}]".format(', '.join(classes)))


def scrape_checkin_date(checkin_container) -> dict:
feedback = checkin_container.find(
'div', class_='checkin').find('div', class_='feedback')
date = feedback.find('a').text
return date


def scrape_checkin_review(http_response_obj: requests.Response):
checkin_info = []
soup = BeautifulSoup(http_response_obj.content, 'html.parser')
find_all_result = soup.find_all(id=re.compile(r"^translate_\d+$"))
if (len(find_all_result) != 1):
print("found {} comments on page.".format(len(find_all_result)))
return None
node = find_all_result[0]

return node.text.strip()



def scrape_checkin(checkin_container) -> dict:
checkin_id = checkin_container['data-checkin-id']
logging.info("processing checkin {}".format(checkin_id))
Expand Down
30 changes: 14 additions & 16 deletions src/untapped_api.py → src/untappd_api.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
import requests
import os

import scraper


def fetchBeerInfo(barcode):
url = "https://api.untappd.com/v4/beer/checkbarcodemultiple?&access_token={}&upc={}".format(
os.environ['untappd_access_token'],
barcode
)
resp = requests.get(url)
resp.raise_for_status()

beer = list.pop(resp.json()['response']['items'])['beer']
return beer

Expand All @@ -19,20 +23,14 @@ def fetchDougBeerInfo(beer_slug):
)
resp = requests.get(url)
resp.raise_for_status()

beer = list.pop(resp.json()['response']['beers']['items'])
return beer['rating_score']

'''
fetchDetailedCheckin = async (checkinId) => {
return fetch('https://untappd.com/user/doug1516/checkin/' + checkinId)
.then((response) => {
return response.text()
}).then((html) => {
var doc = this.domParser.parse(html)
doc.getElementsByClassName('caps')
})
}
}
'''
return beer

def fetchCheckinReview(checkinId):
url = "https://untappd.com/user/doug1516/checkin/{}".format(checkinId)
resp = requests.get(url, headers={'User-agent': 'catch me if you can, dirtbags'})
resp.raise_for_status()

return scraper.scrape_checkin_review(resp)

36 changes: 33 additions & 3 deletions test.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,35 @@
from scraper import logtest
import datetime
import functools
import json
import logging
import requests
import os
import pprint
import re
import sys

logtest('l')
from collections import defaultdict

sys.path.insert(1, './lib')
sys.path.insert(1, './src')


from lib import yaml
from lib import requests
from lib import pymysql
from lib.bs4 import BeautifulSoup, SoupStrainer

from scraper import *
from slack import *

from untappd_api import *


pp = pprint.PrettyPrinter(indent=3)

beer = fetchBeerInfo('0062067313356')
# pp.pprint(beer)
# print("===")
beer_info = fetchDougBeerInfo(beer['beer_slug'])
pp.pprint(beer_info)
checkin_review = fetchCheckinReview(beer_info['recent_checkin_id'])
print(checkin_review)

0 comments on commit cabc973

Please sign in to comment.