aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Dolan <sed9182@rit.edu>2019-07-28 15:17:27 -0400
committerSean Dolan <sed9182@rit.edu>2019-07-28 15:17:27 -0400
commit78e70f3dddf8ecf4f9f4a666cbc836eef481b839 (patch)
tree62e3bb8622cc3ad35d2679d12a41f547f651037d
parent3705adfeeb7ec9bf25275eab214c134ae289b7cc (diff)
shit
-rw-r--r--app.py42
-rw-r--r--templates/beerpage.jinja214
-rw-r--r--utils.py6
3 files changed, 35 insertions, 27 deletions
diff --git a/app.py b/app.py
index aea7cff..d4f49f5 100644
--- a/app.py
+++ b/app.py
@@ -3,6 +3,7 @@ from flask import render_template
from flask import redirect
from flask import request
from flask import url_for
+from utils import get_closest
import json
import random
import re
@@ -41,23 +42,35 @@ def get_beer_details(brewery_id, beer_id):
'Barnyardy', 'Woody', 'Smoky', 'Roasty', 'Yeasty', 'Sweet',
'Juicy', 'Light', 'Thin', 'Spicy', 'Dry', 'Fruity', 'Herbal',
'Salty']
+ similar_beers = get_closest(brewery_id + '-' + beer_id)
+ similar_beer_objects = []
+ for item in similar_beers:
+ item_result, item_brewer = beer_lookup(item)
+ similar_beer_objects.append(BeerInfo(item, item_brewer, item_result))
+
if request.method == 'POST':
- similar_beers = []
attr = request.form['attr']
direction = request.form['direction']
return render_template('beerpage.jinja2', beer_data=beerinfo, attrs=attrs,
- similar_beers=similar_beers, attr=attr, direction=direction)
- return render_template('beerpage.jinja2', beer_data=beerinfo, attrs=attrs)
+ similar_beers=similar_beer_objects, attr=attr, direction=direction)
+ return render_template('beerpage.jinja2', beer_data=beerinfo, attrs=attrs,
+ similar_beers=similar_beer_objects)
-def beer_lookup(brewery_id, beer_id):
- try:
+def beer_lookup(brewery_id, beer_id=None):
+ if beer_id:
item_id = brewery_id + "-" + beer_id
- beer_result = beer[item_id]
- brewer = brewery_names[brewery_id]
- return BeerInfo(beer_id, brewery_id, beer_result, brewer)
- except:
- return None
+ try:
+ beer_result = beer[item_id]
+ return beer_result, brewery_names[brewery_id]
+ except:
+ return None
+ else:
+ try:
+ beer_result = beer[brewery_id]
+ return beer_result, brewery_names[brewery_id.split("-")[0]]
+ except:
+ return None
def find_beers_from_brewery(brewery_id):
@@ -68,17 +81,16 @@ def find_beers_from_brewery(brewery_id):
class BeerInfo(object):
- def __init__(self, beer_id, brewery_id, item_json, brewery_name):
- self.id = beer_id
- self.brewery_id = brewery_id
+ def __init__(self, beer_id, brewery_name, item_json):
+ self._id = beer_id
self.parent_style = item_json[1][1]
self.base_style = item_json[1][0]
self.name = item_json[0]
self.abv = item_json[2]
self.brewer = brewery_name
self.num_reviews = item_json[3]
- self.drinks_like = get_drinks_like(brewery_id + '-' + beer_id)
-
+ self.drinks_like = get_drinks_like(self._id)
+ self.link ="/brewery/" + beer_id.split('-')[0] + '/' + beer_id.split('-')[1]
class Brewery(object):
diff --git a/templates/beerpage.jinja2 b/templates/beerpage.jinja2
index f6e0b2e..f76c209 100644
--- a/templates/beerpage.jinja2
+++ b/templates/beerpage.jinja2
@@ -14,7 +14,7 @@
<tr>
<td>{{ beer_data.parent_style if beer_data != None else 'ASS BEER' }}</td>
<td>{{ beer_data.base_style if beer_data != None else 'TURBO ASS BEER' }}</td>
- <td>{{ beer_data.abv if beer_data != None else 'BETWEEN 0 and 100' }} (drinks like: {{beer_data.drinks_like|round(2)}})</td>
+ <td>{{ beer_data.abv if beer_data != None else 'BETWEEN 0 and 100' }} (drinks like: {{beer_data.drinks_like}})</td>
</tr>
</table>
</div>
@@ -35,17 +35,11 @@
</select>
<input type="submit" value="Go" class="btn btn-outline-primary">
</form>
- {% if direction and attr %}
- <h5>Beers like {{ beer_data.name }} but {{ direction }} {{ attr }}</h5>
+ <h5>Beers like {{ beer_data.name }}</h5>
<ul>
- {% for sb in similar_beers %}
- <li>
- <a href="{{ url_for('get_beer_details', brewery_id=sb.brewery_id, beer_id=sb.id) }}">
- {{ sb.name }} ({{ sb.base_style }} by {{ sb.brewer }})
- </a>
- </li>
+ {% for similar_beer in similar_beers %}
+ <li><a href="{{ similar_beer.link }}" >{{ similar_beer.name }}</a></li>
{% endfor %}
</ul>
- {% endif %}
{% endblock %}
diff --git a/utils.py b/utils.py
index a9a0786..27ef833 100644
--- a/utils.py
+++ b/utils.py
@@ -88,12 +88,14 @@ for e in embeddings:
def get_closest(beer_id):
one_embed = final_data[beer_id]['embed']
-
+ beer_ids = []
for thing in sorted(small_embeddings, key = lambda x: cosine(one_embed, x[1]), reverse=False)[:25]:
if thing[0] in beer_names:
- print(beer_names[thing[0]])
+ beer_ids.append(thing[0])
+ print(thing[0])
print('=' * 50)
+ return beer_ids
def get_closest_to_point(one_embed, style_limit=[]):
# one_embed = final_data[beer_id]['embed']