All Projects β†’ leerob β†’ Guesstimator

leerob / Guesstimator

Licence: MIT license
🍻Uses Google, Yelp, and Foursquare APIs to retrieve and rank bars

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Guesstimator

TouristFriend
πŸŒ† TouristFriend API lets you query Google Places, Yelp and Foursquare at the same time, with Bayesian rankings!
Stars: ✭ 30 (-64.29%)
Mutual labels:  yelp, google-places
Geolocator-2
Learn how to find and work with locations in Django, the Yelp API, and Google Maps api.
Stars: ✭ 24 (-71.43%)
Mutual labels:  yelp, yelp-api
Paasta
An open, distributed platform as a service
Stars: ✭ 1,569 (+1767.86%)
Mutual labels:  yelp
food-help
A clone of popular food and business review web app yelp
Stars: ✭ 24 (-71.43%)
Mutual labels:  yelp
flutter google places picker
Google Places Autocomplete for Flutter
Stars: ✭ 20 (-76.19%)
Mutual labels:  google-places
keyring-social-importers
A collection of importers which pull your content back from social networks, and into your own WordPress install.
Stars: ✭ 26 (-69.05%)
Mutual labels:  foursquare
casper
Yelp's internal caching proxy, powered by Nginx and OpenResty at its core
Stars: ✭ 81 (-3.57%)
Mutual labels:  yelp
salsa
A tool for exporting iOS components into Sketch πŸ“±πŸ’Ž
Stars: ✭ 62 (-26.19%)
Mutual labels:  yelp
pre-commit
pre-commit hook terraform; pre-commit hook prometheus
Stars: ✭ 35 (-58.33%)
Mutual labels:  yelp
spoon
Spoon is a simple Foursquare/Swarm check-in app for Pebble.
Stars: ✭ 17 (-79.76%)
Mutual labels:  foursquare
word-embeddings-from-scratch
Creating word embeddings from scratch and visualize them on TensorBoard. Using trained embeddings in Keras.
Stars: ✭ 22 (-73.81%)
Mutual labels:  yelp
earth
🌏 A map of places I've checked in on Earth.
Stars: ✭ 96 (+14.29%)
Mutual labels:  foursquare
Android-Google-Places-API
An easy implementation of Google Places API in Android https://developers.google.com/places/web-service/
Stars: ✭ 53 (-36.9%)
Mutual labels:  google-places
humhub-oauth
Social OAuths built for the Social Platform HumHub
Stars: ✭ 16 (-80.95%)
Mutual labels:  foursquare
PlaceAutocomplete
A Kotlin library that helps developers save weeks of effort in migrating from the default Google Places Autocomplete feature.It uses the latest Places API and is build on top of MVVM Architecture and uses various RxJava operators to optimise location requests.
Stars: ✭ 25 (-70.24%)
Mutual labels:  google-places
Copycat-abstractive-opinion-summarizer
ACL 2020 Unsupervised Opinion Summarization as Copycat-Review Generation
Stars: ✭ 76 (-9.52%)
Mutual labels:  yelp
ubereats-api
πŸ• ubereats api for the ios: Express.js and Yelp api
Stars: ✭ 20 (-76.19%)
Mutual labels:  yelp-api
mvp-sample
Demonstrates how to implement MVP (Model View Presenter) pattern using Kotlin, RXJava, Retrofit, Dagger and DataBinding
Stars: ✭ 35 (-58.33%)
Mutual labels:  google-places
chowist
Great places are chosen by great chowists
Stars: ✭ 13 (-84.52%)
Mutual labels:  yelp
ngx-google-places-autocomplete
Google Places autocomplete for angular web project
Stars: ✭ 85 (+1.19%)
Mutual labels:  google-places

Guesstimator

Guesstimator is a program that searches the Google Places, Yelp, and Foursquare APIs to create a list of bars in the given location. Then, it combines their ratings as a Bayesian estimate to rank them more accurately.

Setup

You'll need to acquire API keys for each of the individual services and add them to api_keys.py.

You'll also need to install rauth for authentication.

pip install rauth

Usage

Search Radius (meters): 40000
Lat: 41.5908
Long: -93.6208
Would you like more points? (y/n) n
Searching foursquare at lat: 41.5908 long: -93.6208 ...
Searching google at lat: 41.5908 long: -93.6208 ...
Searching yelp at lat: 41.5908 long: -93.6208 ...
Found 90 total businesses!

Other Usages

This program could also be used to search restaurants, coffee shops, you name it. You'll need to:

  • Update the Foursquare CATEGORY_ID
  • Change the type parameter in the Google Search URL
  • Modify the term parameter in the Yelp Search URL

Review the API documentation for each service to determine what types are allowed.

Output

  1. El Bait Shop - 8.93 with 3 sources
  2. Hessen Haus - 8.43 with 3 sources
  3. Zombie Burger + Drink Lab - 8.73 with 2 sources
  4. The Royal Mile - 8.28 with 3 sources
  5. Confluence Brewing Company - 9.15 with 1 source
  6. High Life Lounge - 8.53 with 2 sources
  7. Louie’s Wine Dive - 8.45 with 2 sources
  8. Up-Down - 8.42 with 2 sources
  9. Exile Brewing Company - 8.88 with 1 source
  10. Court Avenue Restaurant & Brewing Company - 8.26 with 2 sources

If you look at the raw data.csv, you'll notice I removed results that were primarily restaurants and adjusted the rankings based on the number of data sources. This isn't a perfect rating system, but it's an improvement from using a single source.

Issues

You'll have to create an edge case if two bars somehow happen to have the same address. You should never have more data sources in your .csv file than search engine modules. If you do, then two bars with the same address are getting bucketed together.

More Infomation

The Google Places API returns the most "prominent" businesses first, unless specified. Prominence can be affected by a place's ranking in Google's index, global popularity, and other factors. If I switch that to location first, I do receive more unique places, but of less quality.

The same theory applies to the Yelp Search API. You can choose the sort value, either by best matched, highest rated, or distance. The default gives you the best data, but has the potential to leave out businesses if they don't exceed the threshold.

This is why some places might not be ranked as high as they (potentially) should be. When using the above strategies, I was able to find more businesses. However, there was a decrease in the quality of ratings, and it brought the overall averages down. I'm now left with a completely different set of data. This might be better suited for your needs, or maybe not. Here's how you could accomplish that:

Yelp - Add these parameters to your request

params['sort'] = 1
params['limit'] = 20

Google - Remove the radius parameter and add this to your URL

&rankby=distance
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].