From d4c49410d21c8f2dba1736ec4020e385eba66bff Mon Sep 17 00:00:00 2001 From: Sara Date: Sat, 4 Nov 2023 01:23:40 +0100 Subject: [PATCH] not finished --- .gitignore | 1 + challenge-1.ipynb | 34 +- challenge-2.ipynb | 802 ++++++++++++++++++++++++++++++++++++++++-- data/coffe_shops.json | 52 +++ 4 files changed, 837 insertions(+), 52 deletions(-) create mode 100644 data/coffe_shops.json diff --git a/.gitignore b/.gitignore index 736006e..65fa99a 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ .vscode **/*mt.ipynb **/*mt +.env diff --git a/challenge-1.ipynb b/challenge-1.ipynb index d5dbad5..31cbad7 100644 --- a/challenge-1.ipynb +++ b/challenge-1.ipynb @@ -32,16 +32,6 @@ "# 2. Create a project" ] }, - { - "cell_type": "code", - "execution_count": null, - "id": "c86677ec", - "metadata": {}, - "outputs": [], - "source": [ - "# no code needed" - ] - }, { "cell_type": "markdown", "id": "bdf43ce0", @@ -50,16 +40,6 @@ "# 3. Get the token from the project" ] }, - { - "cell_type": "code", - "execution_count": null, - "id": "f578f4fa", - "metadata": {}, - "outputs": [], - "source": [ - "# no code needed" - ] - }, { "cell_type": "markdown", "id": "df341f75", @@ -68,16 +48,6 @@ "# 4. Hide the token using getpass library " ] }, - { - "cell_type": "code", - "execution_count": null, - "id": "7d086427", - "metadata": {}, - "outputs": [], - "source": [ - "# no code needed" - ] - }, { "cell_type": "markdown", "id": "df041b10", @@ -99,7 +69,7 @@ "kernelspec": { "display_name": "ironhack", "language": "python", - "name": "ironhack" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -111,7 +81,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.13" + "version": "3.11.5" }, "toc": { "base_numbering": 1, diff --git a/challenge-2.ipynb b/challenge-2.ipynb index df5e7f0..6fab161 100644 --- a/challenge-2.ipynb +++ b/challenge-2.ipynb @@ -5,12 +5,12 @@ "id": "0809e785", "metadata": {}, "source": [ - "# 1. Import the necessary libraries for you to be able to query 4square API" + "## 1. Import the necessary libraries for you to be able to query 4square API" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "id": "9b373771", "metadata": {}, "outputs": [], @@ -18,7 +18,44 @@ "import requests\n", "import json\n", "import pandas as pd\n", - "from getpass import getpass" + "from getpass import getpass\n", + "import os" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import folium\n", + "from folium import Choropleth, Circle, Marker, Icon, Map\n", + "from folium.plugins import HeatMap, MarkerCluster\n", + "import pandas as pd\n", + "import geopandas as gpd\n", + "from cartoframes.viz import Map, Layer, popup_element\n", + "from dotenv import load_dotenv\n", + "load_dotenv()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "token = os.getenv(\"token\")" ] }, { @@ -26,17 +63,355 @@ "id": "e94dce92", "metadata": {}, "source": [ - "# 2. Get names and location of the 10 coffee places by passing Ironhack as your location" + "## 2. Get names and location of the 10 coffee places by passing Ironhack as your location" ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 4, "id": "1d72f571", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "{'results': [{'fsq_id': '6188dad44d2e82263ebc56b1',\n", + " 'categories': [{'id': 13034,\n", + " 'name': 'Café',\n", + " 'short_name': 'Café',\n", + " 'plural_name': 'Cafés',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/cafe_',\n", + " 'suffix': '.png'}},\n", + " {'id': 13039,\n", + " 'name': 'Deli',\n", + " 'short_name': 'Deli',\n", + " 'plural_name': 'Delis',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/deli_',\n", + " 'suffix': '.png'}}],\n", + " 'chains': [],\n", + " 'closed_bucket': 'VeryLikelyOpen',\n", + " 'distance': 908,\n", + " 'geocodes': {'drop_off': {'latitude': 41.394919, 'longitude': 2.172901},\n", + " 'main': {'latitude': 41.394916, 'longitude': 2.172866},\n", + " 'roof': {'latitude': 41.394916, 'longitude': 2.172866}},\n", + " 'link': '/v3/places/6188dad44d2e82263ebc56b1',\n", + " 'location': {'address': 'Carrer de la Diputació, 347',\n", + " 'admin_region': 'Cataluña',\n", + " 'country': 'ES',\n", + " 'cross_street': '',\n", + " 'formatted_address': 'Carrer de la Diputació, 347, 08009 Barcelona Catalunya',\n", + " 'locality': 'Barcelona',\n", + " 'postcode': '08009',\n", + " 'region': 'Catalunya'},\n", + " 'name': 'Funky Bakers',\n", + " 'related_places': {},\n", + " 'timezone': 'Europe/Madrid'},\n", + " {'fsq_id': '5b8521d489e490002cefef18',\n", + " 'categories': [{'id': 13035,\n", + " 'name': 'Coffee Shop',\n", + " 'short_name': 'Coffee Shop',\n", + " 'plural_name': 'Coffee Shops',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/coffeeshop_',\n", + " 'suffix': '.png'}},\n", + " {'id': 13065,\n", + " 'name': 'Restaurant',\n", + " 'short_name': 'Restaurant',\n", + " 'plural_name': 'Restaurants',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/default_',\n", + " 'suffix': '.png'}}],\n", + " 'chains': [],\n", + " 'closed_bucket': 'VeryLikelyOpen',\n", + " 'distance': 1122,\n", + " 'geocodes': {'main': {'latitude': 41.397168, 'longitude': 2.183123},\n", + " 'roof': {'latitude': 41.397168, 'longitude': 2.183123}},\n", + " 'link': '/v3/places/5b8521d489e490002cefef18',\n", + " 'location': {'address': 'Ausiàs Marc, 151',\n", + " 'admin_region': 'Cataluña',\n", + " 'country': 'ES',\n", + " 'formatted_address': 'Ausiàs Marc, 151, 08013 Barcelona Catalunya',\n", + " 'locality': 'Barcelona',\n", + " 'postcode': '08013',\n", + " 'region': 'Catalunya'},\n", + " 'name': 'Three Marks Coffee',\n", + " 'related_places': {},\n", + " 'timezone': 'Europe/Madrid'},\n", + " {'fsq_id': '562ddf43498ee3bd9ed1c999',\n", + " 'categories': [{'id': 13034,\n", + " 'name': 'Café',\n", + " 'short_name': 'Café',\n", + " 'plural_name': 'Cafés',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/cafe_',\n", + " 'suffix': '.png'}},\n", + " {'id': 13035,\n", + " 'name': 'Coffee Shop',\n", + " 'short_name': 'Coffee Shop',\n", + " 'plural_name': 'Coffee Shops',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/coffeeshop_',\n", + " 'suffix': '.png'}},\n", + " {'id': 13065,\n", + " 'name': 'Restaurant',\n", + " 'short_name': 'Restaurant',\n", + " 'plural_name': 'Restaurants',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/default_',\n", + " 'suffix': '.png'}}],\n", + " 'chains': [],\n", + " 'closed_bucket': 'VeryLikelyOpen',\n", + " 'distance': 1094,\n", + " 'geocodes': {'main': {'latitude': 41.400981, 'longitude': 2.159596},\n", + " 'roof': {'latitude': 41.400981, 'longitude': 2.159596}},\n", + " 'link': '/v3/places/562ddf43498ee3bd9ed1c999',\n", + " 'location': {'address': 'Siracusa, 13',\n", + " 'admin_region': 'Cataluña',\n", + " 'country': 'ES',\n", + " 'formatted_address': 'Siracusa, 13, 08012 Barcelona Catalunya',\n", + " 'locality': 'Barcelona',\n", + " 'postcode': '08012',\n", + " 'region': 'Catalunya'},\n", + " 'name': 'Syra Coffee',\n", + " 'related_places': {},\n", + " 'timezone': 'Europe/Madrid'},\n", + " {'fsq_id': '4ffd87dde4b07010c000f79b',\n", + " 'categories': [{'id': 13002,\n", + " 'name': 'Bakery',\n", + " 'short_name': 'Bakery',\n", + " 'plural_name': 'Bakeries',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/bakery_',\n", + " 'suffix': '.png'}},\n", + " {'id': 13034,\n", + " 'name': 'Café',\n", + " 'short_name': 'Café',\n", + " 'plural_name': 'Cafés',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/cafe_',\n", + " 'suffix': '.png'}},\n", + " {'id': 13065,\n", + " 'name': 'Restaurant',\n", + " 'short_name': 'Restaurant',\n", + " 'plural_name': 'Restaurants',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/default_',\n", + " 'suffix': '.png'}}],\n", + " 'chains': [],\n", + " 'closed_bucket': 'VeryLikelyOpen',\n", + " 'distance': 838,\n", + " 'geocodes': {'drop_off': {'latitude': 41.396334, 'longitude': 2.177097},\n", + " 'main': {'latitude': 41.396371, 'longitude': 2.177069},\n", + " 'roof': {'latitude': 41.396371, 'longitude': 2.177069}},\n", + " 'link': '/v3/places/4ffd87dde4b07010c000f79b',\n", + " 'location': {'address': 'Gran Vía de Les Corts Catalanes, 677',\n", + " 'admin_region': 'Cataluña',\n", + " 'country': 'ES',\n", + " 'cross_street': 'btwn c/ Nàpols & c/ Roger de Flor',\n", + " 'formatted_address': 'Gran Vía de Les Corts Catalanes, 677 (btwn c/ Nàpols & c/ Roger de Flor), 08013 Barcelona Catalunya',\n", + " 'locality': 'Barcelona',\n", + " 'postcode': '08013',\n", + " 'region': 'Catalunya'},\n", + " 'name': 'El Petit Príncep',\n", + " 'related_places': {},\n", + " 'timezone': 'Europe/Madrid'},\n", + " {'fsq_id': '593aea20829b0c53a13957b0',\n", + " 'categories': [{'id': 13043,\n", + " 'name': 'Donut Shop',\n", + " 'short_name': 'Donuts',\n", + " 'plural_name': 'Donut Shops',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/donuts_',\n", + " 'suffix': '.png'}}],\n", + " 'chains': [],\n", + " 'closed_bucket': 'VeryLikelyOpen',\n", + " 'distance': 1293,\n", + " 'geocodes': {'drop_off': {'latitude': 41.405189, 'longitude': 2.157286},\n", + " 'main': {'latitude': 41.405256, 'longitude': 2.157245},\n", + " 'roof': {'latitude': 41.405256, 'longitude': 2.157245}},\n", + " 'link': '/v3/places/593aea20829b0c53a13957b0',\n", + " 'location': {'address': \"Carrer D'Asturies, 93\",\n", + " 'admin_region': 'Cataluña',\n", + " 'country': 'ES',\n", + " 'cross_street': '',\n", + " 'formatted_address': \"Carrer D'Asturies, 93, 08024 Barcelona Catalunya\",\n", + " 'locality': 'Barcelona',\n", + " 'postcode': '08024',\n", + " 'region': 'Catalunya'},\n", + " 'name': 'Chök',\n", + " 'related_places': {},\n", + " 'timezone': 'Europe/Madrid'},\n", + " {'fsq_id': '5cb5ca8fb1538e002c03442c',\n", + " 'categories': [{'id': 13035,\n", + " 'name': 'Coffee Shop',\n", + " 'short_name': 'Coffee Shop',\n", + " 'plural_name': 'Coffee Shops',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/coffeeshop_',\n", + " 'suffix': '.png'}}],\n", + " 'chains': [],\n", + " 'closed_bucket': 'VeryLikelyOpen',\n", + " 'distance': 1070,\n", + " 'geocodes': {'main': {'latitude': 41.394562, 'longitude': 2.178425}},\n", + " 'link': '/v3/places/5cb5ca8fb1538e002c03442c',\n", + " 'location': {'address': 'Calle de Roger de Flor, 102',\n", + " 'admin_region': 'Cataluña',\n", + " 'country': 'ES',\n", + " 'cross_street': '',\n", + " 'formatted_address': 'Calle de Roger de Flor, 102, 08013 Barcelona Catalunya',\n", + " 'locality': 'Barcelona',\n", + " 'postcode': '08013',\n", + " 'region': 'Catalunya'},\n", + " 'name': 'Brew Coffee',\n", + " 'related_places': {},\n", + " 'timezone': 'Europe/Madrid'},\n", + " {'fsq_id': '553a8e6c498e67e9192da0db',\n", + " 'categories': [{'id': 13035,\n", + " 'name': 'Coffee Shop',\n", + " 'short_name': 'Coffee Shop',\n", + " 'plural_name': 'Coffee Shops',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/coffeeshop_',\n", + " 'suffix': '.png'}},\n", + " {'id': 13065,\n", + " 'name': 'Restaurant',\n", + " 'short_name': 'Restaurant',\n", + " 'plural_name': 'Restaurants',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/default_',\n", + " 'suffix': '.png'}}],\n", + " 'chains': [],\n", + " 'closed_bucket': 'VeryLikelyOpen',\n", + " 'distance': 1566,\n", + " 'geocodes': {'drop_off': {'latitude': 41.398094, 'longitude': 2.154789},\n", + " 'main': {'latitude': 41.398136, 'longitude': 2.154765},\n", + " 'roof': {'latitude': 41.398136, 'longitude': 2.154765}},\n", + " 'link': '/v3/places/553a8e6c498e67e9192da0db',\n", + " 'location': {'address': 'Calle de Luis Antúnez, 18',\n", + " 'admin_region': 'Cataluña',\n", + " 'country': 'ES',\n", + " 'cross_street': 'C. de Neptú',\n", + " 'formatted_address': 'Calle de Luis Antúnez, 18 (C. de Neptú), 08006 Barcelona Catalunya',\n", + " 'locality': 'Barcelona',\n", + " 'postcode': '08006',\n", + " 'region': 'Catalunya'},\n", + " 'name': 'SlowMov',\n", + " 'related_places': {},\n", + " 'timezone': 'Europe/Madrid'},\n", + " {'fsq_id': '52fafeb4498e411285ad33be',\n", + " 'categories': [{'id': 13003,\n", + " 'name': 'Bar',\n", + " 'short_name': 'Bar',\n", + " 'plural_name': 'Bars',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/nightlife/pub_',\n", + " 'suffix': '.png'}},\n", + " {'id': 13034,\n", + " 'name': 'Café',\n", + " 'short_name': 'Café',\n", + " 'plural_name': 'Cafés',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/cafe_',\n", + " 'suffix': '.png'}},\n", + " {'id': 13035,\n", + " 'name': 'Coffee Shop',\n", + " 'short_name': 'Coffee Shop',\n", + " 'plural_name': 'Coffee Shops',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/coffeeshop_',\n", + " 'suffix': '.png'}}],\n", + " 'chains': [],\n", + " 'closed_bucket': 'VeryLikelyOpen',\n", + " 'distance': 1620,\n", + " 'geocodes': {'drop_off': {'latitude': 41.388916, 'longitude': 2.177114},\n", + " 'main': {'latitude': 41.388989, 'longitude': 2.177167},\n", + " 'roof': {'latitude': 41.388989, 'longitude': 2.177167}},\n", + " 'link': '/v3/places/52fafeb4498e411285ad33be',\n", + " 'location': {'address': 'Pasatge Sert, 12',\n", + " 'admin_region': 'Cataluña',\n", + " 'country': 'ES',\n", + " 'cross_street': 'C. de Trafalgar',\n", + " 'formatted_address': 'Pasatge Sert, 12 (C. de Trafalgar), 08003 Barcelona Catalunya',\n", + " 'locality': 'Barcelona',\n", + " 'postcode': '08003',\n", + " 'region': 'Catalunya'},\n", + " 'name': 'Nømad Coffee Lab & Shop',\n", + " 'related_places': {'children': []},\n", + " 'timezone': 'Europe/Madrid'},\n", + " {'fsq_id': '57ff4bde38fa1e8f0810a46d',\n", + " 'categories': [{'id': 13035,\n", + " 'name': 'Coffee Shop',\n", + " 'short_name': 'Coffee Shop',\n", + " 'plural_name': 'Coffee Shops',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/coffeeshop_',\n", + " 'suffix': '.png'}},\n", + " {'id': 13065,\n", + " 'name': 'Restaurant',\n", + " 'short_name': 'Restaurant',\n", + " 'plural_name': 'Restaurants',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/default_',\n", + " 'suffix': '.png'}}],\n", + " 'chains': [],\n", + " 'closed_bucket': 'VeryLikelyOpen',\n", + " 'distance': 2130,\n", + " 'geocodes': {'main': {'latitude': 41.387825, 'longitude': 2.157221},\n", + " 'roof': {'latitude': 41.387825, 'longitude': 2.157221}},\n", + " 'link': '/v3/places/57ff4bde38fa1e8f0810a46d',\n", + " 'location': {'address': 'Carrer de València, 190',\n", + " 'admin_region': 'Cataluña',\n", + " 'country': 'ES',\n", + " 'cross_street': 'C. de València',\n", + " 'formatted_address': 'Carrer de València, 190 (C. de València), 08011 Barcelona Catalunya',\n", + " 'locality': 'Barcelona',\n", + " 'postcode': '08011',\n", + " 'region': 'Catalunya'},\n", + " 'name': 'Roast Club',\n", + " 'related_places': {},\n", + " 'timezone': 'Europe/Madrid'},\n", + " {'fsq_id': '556d6217498ef50c5d323048',\n", + " 'categories': [{'id': 13003,\n", + " 'name': 'Bar',\n", + " 'short_name': 'Bar',\n", + " 'plural_name': 'Bars',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/nightlife/pub_',\n", + " 'suffix': '.png'}},\n", + " {'id': 13035,\n", + " 'name': 'Coffee Shop',\n", + " 'short_name': 'Coffee Shop',\n", + " 'plural_name': 'Coffee Shops',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/coffeeshop_',\n", + " 'suffix': '.png'}}],\n", + " 'chains': [],\n", + " 'closed_bucket': 'VeryLikelyOpen',\n", + " 'distance': 2022,\n", + " 'geocodes': {'main': {'latitude': 41.397977, 'longitude': 2.195589},\n", + " 'roof': {'latitude': 41.397977, 'longitude': 2.195589}},\n", + " 'link': '/v3/places/556d6217498ef50c5d323048',\n", + " 'location': {'address': 'Calle de Pujades, 95',\n", + " 'admin_region': 'Cataluña',\n", + " 'country': 'ES',\n", + " 'cross_street': 'C. de Badajoz',\n", + " 'formatted_address': 'Calle de Pujades, 95 (C. de Badajoz), 08005 Barcelona',\n", + " 'locality': 'Barcelona',\n", + " 'postcode': '08005'},\n", + " 'name': \"Nømad Roaster's Home\",\n", + " 'related_places': {},\n", + " 'timezone': 'Europe/Madrid'}],\n", + " 'context': {'geo_bounds': {'circle': {'center': {'latitude': 41.4031073,\n", + " 'longitude': 2.1724934},\n", + " 'radius': 50000}}}}" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# your code here" + "lat = 41.4031073\n", + "lon = 2.1724934 \n", + "\n", + "def requests_for_foursquare(query, lat, lon, radius=500, limit=1):\n", + "\n", + " url = f\"https://api.foursquare.com/v3/places/search?query={query}&ll={lat}%2C{lon}&radius={radius}&limit={limit}\"\n", + "\n", + " headers = {\n", + " \"accept\": \"application/json\",\n", + " \"Authorization\": token\n", + " }\n", + " \n", + " try:\n", + " return requests.get(url, headers=headers).json()\n", + " except:\n", + " print(\"no :(\")\n", + "\n", + "res = requests_for_foursquare (\"coffee\", lat, lon, radius=50000, limit=10)\n", + "res" ] }, { @@ -49,12 +424,350 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 5, "id": "fda8ddff", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "{'results': [{'fsq_id': '6188dad44d2e82263ebc56b1',\n", + " 'categories': [{'id': 13034,\n", + " 'name': 'Café',\n", + " 'short_name': 'Café',\n", + " 'plural_name': 'Cafés',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/cafe_',\n", + " 'suffix': '.png'}},\n", + " {'id': 13039,\n", + " 'name': 'Deli',\n", + " 'short_name': 'Deli',\n", + " 'plural_name': 'Delis',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/deli_',\n", + " 'suffix': '.png'}}],\n", + " 'chains': [],\n", + " 'closed_bucket': 'VeryLikelyOpen',\n", + " 'distance': 908,\n", + " 'geocodes': {'drop_off': {'latitude': 41.394919, 'longitude': 2.172901},\n", + " 'main': {'latitude': 41.394916, 'longitude': 2.172866},\n", + " 'roof': {'latitude': 41.394916, 'longitude': 2.172866}},\n", + " 'link': '/v3/places/6188dad44d2e82263ebc56b1',\n", + " 'location': {'address': 'Carrer de la Diputació, 347',\n", + " 'admin_region': 'Cataluña',\n", + " 'country': 'ES',\n", + " 'cross_street': '',\n", + " 'formatted_address': 'Carrer de la Diputació, 347, 08009 Barcelona Catalunya',\n", + " 'locality': 'Barcelona',\n", + " 'postcode': '08009',\n", + " 'region': 'Catalunya'},\n", + " 'name': 'Funky Bakers',\n", + " 'related_places': {},\n", + " 'timezone': 'Europe/Madrid'},\n", + " {'fsq_id': '5b8521d489e490002cefef18',\n", + " 'categories': [{'id': 13035,\n", + " 'name': 'Coffee Shop',\n", + " 'short_name': 'Coffee Shop',\n", + " 'plural_name': 'Coffee Shops',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/coffeeshop_',\n", + " 'suffix': '.png'}},\n", + " {'id': 13065,\n", + " 'name': 'Restaurant',\n", + " 'short_name': 'Restaurant',\n", + " 'plural_name': 'Restaurants',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/default_',\n", + " 'suffix': '.png'}}],\n", + " 'chains': [],\n", + " 'closed_bucket': 'VeryLikelyOpen',\n", + " 'distance': 1122,\n", + " 'geocodes': {'main': {'latitude': 41.397168, 'longitude': 2.183123},\n", + " 'roof': {'latitude': 41.397168, 'longitude': 2.183123}},\n", + " 'link': '/v3/places/5b8521d489e490002cefef18',\n", + " 'location': {'address': 'Ausiàs Marc, 151',\n", + " 'admin_region': 'Cataluña',\n", + " 'country': 'ES',\n", + " 'formatted_address': 'Ausiàs Marc, 151, 08013 Barcelona Catalunya',\n", + " 'locality': 'Barcelona',\n", + " 'postcode': '08013',\n", + " 'region': 'Catalunya'},\n", + " 'name': 'Three Marks Coffee',\n", + " 'related_places': {},\n", + " 'timezone': 'Europe/Madrid'},\n", + " {'fsq_id': '562ddf43498ee3bd9ed1c999',\n", + " 'categories': [{'id': 13034,\n", + " 'name': 'Café',\n", + " 'short_name': 'Café',\n", + " 'plural_name': 'Cafés',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/cafe_',\n", + " 'suffix': '.png'}},\n", + " {'id': 13035,\n", + " 'name': 'Coffee Shop',\n", + " 'short_name': 'Coffee Shop',\n", + " 'plural_name': 'Coffee Shops',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/coffeeshop_',\n", + " 'suffix': '.png'}},\n", + " {'id': 13065,\n", + " 'name': 'Restaurant',\n", + " 'short_name': 'Restaurant',\n", + " 'plural_name': 'Restaurants',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/default_',\n", + " 'suffix': '.png'}}],\n", + " 'chains': [],\n", + " 'closed_bucket': 'VeryLikelyOpen',\n", + " 'distance': 1094,\n", + " 'geocodes': {'main': {'latitude': 41.400981, 'longitude': 2.159596},\n", + " 'roof': {'latitude': 41.400981, 'longitude': 2.159596}},\n", + " 'link': '/v3/places/562ddf43498ee3bd9ed1c999',\n", + " 'location': {'address': 'Siracusa, 13',\n", + " 'admin_region': 'Cataluña',\n", + " 'country': 'ES',\n", + " 'formatted_address': 'Siracusa, 13, 08012 Barcelona Catalunya',\n", + " 'locality': 'Barcelona',\n", + " 'postcode': '08012',\n", + " 'region': 'Catalunya'},\n", + " 'name': 'Syra Coffee',\n", + " 'related_places': {},\n", + " 'timezone': 'Europe/Madrid'},\n", + " {'fsq_id': '4ffd87dde4b07010c000f79b',\n", + " 'categories': [{'id': 13002,\n", + " 'name': 'Bakery',\n", + " 'short_name': 'Bakery',\n", + " 'plural_name': 'Bakeries',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/bakery_',\n", + " 'suffix': '.png'}},\n", + " {'id': 13034,\n", + " 'name': 'Café',\n", + " 'short_name': 'Café',\n", + " 'plural_name': 'Cafés',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/cafe_',\n", + " 'suffix': '.png'}},\n", + " {'id': 13065,\n", + " 'name': 'Restaurant',\n", + " 'short_name': 'Restaurant',\n", + " 'plural_name': 'Restaurants',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/default_',\n", + " 'suffix': '.png'}}],\n", + " 'chains': [],\n", + " 'closed_bucket': 'VeryLikelyOpen',\n", + " 'distance': 838,\n", + " 'geocodes': {'drop_off': {'latitude': 41.396334, 'longitude': 2.177097},\n", + " 'main': {'latitude': 41.396371, 'longitude': 2.177069},\n", + " 'roof': {'latitude': 41.396371, 'longitude': 2.177069}},\n", + " 'link': '/v3/places/4ffd87dde4b07010c000f79b',\n", + " 'location': {'address': 'Gran Vía de Les Corts Catalanes, 677',\n", + " 'admin_region': 'Cataluña',\n", + " 'country': 'ES',\n", + " 'cross_street': 'btwn c/ Nàpols & c/ Roger de Flor',\n", + " 'formatted_address': 'Gran Vía de Les Corts Catalanes, 677 (btwn c/ Nàpols & c/ Roger de Flor), 08013 Barcelona Catalunya',\n", + " 'locality': 'Barcelona',\n", + " 'postcode': '08013',\n", + " 'region': 'Catalunya'},\n", + " 'name': 'El Petit Príncep',\n", + " 'related_places': {},\n", + " 'timezone': 'Europe/Madrid'},\n", + " {'fsq_id': '593aea20829b0c53a13957b0',\n", + " 'categories': [{'id': 13043,\n", + " 'name': 'Donut Shop',\n", + " 'short_name': 'Donuts',\n", + " 'plural_name': 'Donut Shops',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/donuts_',\n", + " 'suffix': '.png'}}],\n", + " 'chains': [],\n", + " 'closed_bucket': 'VeryLikelyOpen',\n", + " 'distance': 1293,\n", + " 'geocodes': {'drop_off': {'latitude': 41.405189, 'longitude': 2.157286},\n", + " 'main': {'latitude': 41.405256, 'longitude': 2.157245},\n", + " 'roof': {'latitude': 41.405256, 'longitude': 2.157245}},\n", + " 'link': '/v3/places/593aea20829b0c53a13957b0',\n", + " 'location': {'address': \"Carrer D'Asturies, 93\",\n", + " 'admin_region': 'Cataluña',\n", + " 'country': 'ES',\n", + " 'cross_street': '',\n", + " 'formatted_address': \"Carrer D'Asturies, 93, 08024 Barcelona Catalunya\",\n", + " 'locality': 'Barcelona',\n", + " 'postcode': '08024',\n", + " 'region': 'Catalunya'},\n", + " 'name': 'Chök',\n", + " 'related_places': {},\n", + " 'timezone': 'Europe/Madrid'},\n", + " {'fsq_id': '5cb5ca8fb1538e002c03442c',\n", + " 'categories': [{'id': 13035,\n", + " 'name': 'Coffee Shop',\n", + " 'short_name': 'Coffee Shop',\n", + " 'plural_name': 'Coffee Shops',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/coffeeshop_',\n", + " 'suffix': '.png'}}],\n", + " 'chains': [],\n", + " 'closed_bucket': 'VeryLikelyOpen',\n", + " 'distance': 1070,\n", + " 'geocodes': {'main': {'latitude': 41.394562, 'longitude': 2.178425}},\n", + " 'link': '/v3/places/5cb5ca8fb1538e002c03442c',\n", + " 'location': {'address': 'Calle de Roger de Flor, 102',\n", + " 'admin_region': 'Cataluña',\n", + " 'country': 'ES',\n", + " 'cross_street': '',\n", + " 'formatted_address': 'Calle de Roger de Flor, 102, 08013 Barcelona Catalunya',\n", + " 'locality': 'Barcelona',\n", + " 'postcode': '08013',\n", + " 'region': 'Catalunya'},\n", + " 'name': 'Brew Coffee',\n", + " 'related_places': {},\n", + " 'timezone': 'Europe/Madrid'},\n", + " {'fsq_id': '553a8e6c498e67e9192da0db',\n", + " 'categories': [{'id': 13035,\n", + " 'name': 'Coffee Shop',\n", + " 'short_name': 'Coffee Shop',\n", + " 'plural_name': 'Coffee Shops',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/coffeeshop_',\n", + " 'suffix': '.png'}},\n", + " {'id': 13065,\n", + " 'name': 'Restaurant',\n", + " 'short_name': 'Restaurant',\n", + " 'plural_name': 'Restaurants',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/default_',\n", + " 'suffix': '.png'}}],\n", + " 'chains': [],\n", + " 'closed_bucket': 'VeryLikelyOpen',\n", + " 'distance': 1566,\n", + " 'geocodes': {'drop_off': {'latitude': 41.398094, 'longitude': 2.154789},\n", + " 'main': {'latitude': 41.398136, 'longitude': 2.154765},\n", + " 'roof': {'latitude': 41.398136, 'longitude': 2.154765}},\n", + " 'link': '/v3/places/553a8e6c498e67e9192da0db',\n", + " 'location': {'address': 'Calle de Luis Antúnez, 18',\n", + " 'admin_region': 'Cataluña',\n", + " 'country': 'ES',\n", + " 'cross_street': 'C. de Neptú',\n", + " 'formatted_address': 'Calle de Luis Antúnez, 18 (C. de Neptú), 08006 Barcelona Catalunya',\n", + " 'locality': 'Barcelona',\n", + " 'postcode': '08006',\n", + " 'region': 'Catalunya'},\n", + " 'name': 'SlowMov',\n", + " 'related_places': {},\n", + " 'timezone': 'Europe/Madrid'},\n", + " {'fsq_id': '52fafeb4498e411285ad33be',\n", + " 'categories': [{'id': 13003,\n", + " 'name': 'Bar',\n", + " 'short_name': 'Bar',\n", + " 'plural_name': 'Bars',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/nightlife/pub_',\n", + " 'suffix': '.png'}},\n", + " {'id': 13034,\n", + " 'name': 'Café',\n", + " 'short_name': 'Café',\n", + " 'plural_name': 'Cafés',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/cafe_',\n", + " 'suffix': '.png'}},\n", + " {'id': 13035,\n", + " 'name': 'Coffee Shop',\n", + " 'short_name': 'Coffee Shop',\n", + " 'plural_name': 'Coffee Shops',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/coffeeshop_',\n", + " 'suffix': '.png'}}],\n", + " 'chains': [],\n", + " 'closed_bucket': 'VeryLikelyOpen',\n", + " 'distance': 1620,\n", + " 'geocodes': {'drop_off': {'latitude': 41.388916, 'longitude': 2.177114},\n", + " 'main': {'latitude': 41.388989, 'longitude': 2.177167},\n", + " 'roof': {'latitude': 41.388989, 'longitude': 2.177167}},\n", + " 'link': '/v3/places/52fafeb4498e411285ad33be',\n", + " 'location': {'address': 'Pasatge Sert, 12',\n", + " 'admin_region': 'Cataluña',\n", + " 'country': 'ES',\n", + " 'cross_street': 'C. de Trafalgar',\n", + " 'formatted_address': 'Pasatge Sert, 12 (C. de Trafalgar), 08003 Barcelona Catalunya',\n", + " 'locality': 'Barcelona',\n", + " 'postcode': '08003',\n", + " 'region': 'Catalunya'},\n", + " 'name': 'Nømad Coffee Lab & Shop',\n", + " 'related_places': {'children': []},\n", + " 'timezone': 'Europe/Madrid'},\n", + " {'fsq_id': '57ff4bde38fa1e8f0810a46d',\n", + " 'categories': [{'id': 13035,\n", + " 'name': 'Coffee Shop',\n", + " 'short_name': 'Coffee Shop',\n", + " 'plural_name': 'Coffee Shops',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/coffeeshop_',\n", + " 'suffix': '.png'}},\n", + " {'id': 13065,\n", + " 'name': 'Restaurant',\n", + " 'short_name': 'Restaurant',\n", + " 'plural_name': 'Restaurants',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/default_',\n", + " 'suffix': '.png'}}],\n", + " 'chains': [],\n", + " 'closed_bucket': 'VeryLikelyOpen',\n", + " 'distance': 2130,\n", + " 'geocodes': {'main': {'latitude': 41.387825, 'longitude': 2.157221},\n", + " 'roof': {'latitude': 41.387825, 'longitude': 2.157221}},\n", + " 'link': '/v3/places/57ff4bde38fa1e8f0810a46d',\n", + " 'location': {'address': 'Carrer de València, 190',\n", + " 'admin_region': 'Cataluña',\n", + " 'country': 'ES',\n", + " 'cross_street': 'C. de València',\n", + " 'formatted_address': 'Carrer de València, 190 (C. de València), 08011 Barcelona Catalunya',\n", + " 'locality': 'Barcelona',\n", + " 'postcode': '08011',\n", + " 'region': 'Catalunya'},\n", + " 'name': 'Roast Club',\n", + " 'related_places': {},\n", + " 'timezone': 'Europe/Madrid'},\n", + " {'fsq_id': '556d6217498ef50c5d323048',\n", + " 'categories': [{'id': 13003,\n", + " 'name': 'Bar',\n", + " 'short_name': 'Bar',\n", + " 'plural_name': 'Bars',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/nightlife/pub_',\n", + " 'suffix': '.png'}},\n", + " {'id': 13035,\n", + " 'name': 'Coffee Shop',\n", + " 'short_name': 'Coffee Shop',\n", + " 'plural_name': 'Coffee Shops',\n", + " 'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/coffeeshop_',\n", + " 'suffix': '.png'}}],\n", + " 'chains': [],\n", + " 'closed_bucket': 'VeryLikelyOpen',\n", + " 'distance': 2022,\n", + " 'geocodes': {'main': {'latitude': 41.397977, 'longitude': 2.195589},\n", + " 'roof': {'latitude': 41.397977, 'longitude': 2.195589}},\n", + " 'link': '/v3/places/556d6217498ef50c5d323048',\n", + " 'location': {'address': 'Calle de Pujades, 95',\n", + " 'admin_region': 'Cataluña',\n", + " 'country': 'ES',\n", + " 'cross_street': 'C. de Badajoz',\n", + " 'formatted_address': 'Calle de Pujades, 95 (C. de Badajoz), 08005 Barcelona',\n", + " 'locality': 'Barcelona',\n", + " 'postcode': '08005'},\n", + " 'name': \"Nømad Roaster's Home\",\n", + " 'related_places': {},\n", + " 'timezone': 'Europe/Madrid'}],\n", + " 'context': {'geo_bounds': {'circle': {'center': {'latitude': 41.4031073,\n", + " 'longitude': 2.1724934},\n", + " 'radius': 50000}}}}" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# your code here" + "lat = 41.4031073\n", + "lon = 2.1724934 \n", + "\n", + "def requests_for_foursquare(query, lat, lon, near, radius=500, limit=1):\n", + "\n", + " url = f\"https://api.foursquare.com/v3/places/search?query={query}&ll={lat}%2C{lon}&radius={radius}&limit={limit}\"\n", + "\n", + " headers = {\n", + " \"accept\": \"application/json\",\n", + " \"Authorization\": token\n", + " }\n", + " \n", + " try:\n", + " return requests.get(url, headers=headers).json()\n", + " except:\n", + " print(\"no :(\")\n", + "\n", + "res = requests_for_foursquare (\"coffee\", lat, lon,\"Barcelona\", radius=50000, limit=10)\n", + "res" ] }, { @@ -67,13 +780,50 @@ }, { "cell_type": "code", - "execution_count": 3, - "id": "1fad5153", + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ - "def foursquare_places (venue, coordinates):\n", - " pass" + "def foursquare_places(venue, token):\n", + " endpoint = f'https://api.foursquare.com/v3/places/search?query={venue}'\n", + "\n", + " headers = {\n", + " \"accept\": \"application/json\",\n", + " \"Authorization\": token\n", + " }\n", + "\n", + " try:\n", + " response = requests.get(endpoint, headers=headers)\n", + " response.raise_for_status() \n", + " data = response.json()\n", + " venues = data['results']\n", + " results = []\n", + " for venue in venues:\n", + " name = venue['name']\n", + " location = venue['geocodes']['main']\n", + " lat = location.get('latitude')\n", + " lng = location.get('longitude')\n", + " results.append({\n", + " 'name': name,\n", + " 'lat': lat,\n", + " 'lng': lng\n", + " })\n", + " return results\n", + " except requests.exceptions.RequestException as e:\n", + " print(f\"Error: {e}\")\n", + " return []\n", + " \n", + "def export_to_json(results, output_directory, output_file):\n", + " try:\n", + " full_file_path = os.path.join(output_directory, output_file)\n", + " os.makedirs(output_directory, exist_ok=True)\n", + " with open(full_file_path, 'w') as json_file:\n", + " json.dump(results, json_file, indent=4)\n", + " print(f\"Data exported to '{full_file_path}'\")\n", + " return True\n", + " except Exception as e:\n", + " print(f\"Error: {e}\")\n", + " return False" ] }, { @@ -86,12 +836,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "id": "7ac5f2a8", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data exported to 'data/coffe_shops.json'\n" + ] + } + ], "source": [ - "# your code here" + "results = foursquare_places(\"caffe\", token)\n", + "output_directory = 'data/'\n", + "output_file_name = 'coffe_shops.json'\n", + "\n", + "result = export_to_json(results, output_directory, output_file_name)" ] }, { @@ -104,7 +866,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "id": "85b94955", "metadata": {}, "outputs": [], @@ -117,7 +879,7 @@ "kernelspec": { "display_name": "ironhack", "language": "python", - "name": "ironhack" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -129,7 +891,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.13" + "version": "3.11.5" }, "toc": { "base_numbering": 1, diff --git a/data/coffe_shops.json b/data/coffe_shops.json new file mode 100644 index 0000000..6bf2287 --- /dev/null +++ b/data/coffe_shops.json @@ -0,0 +1,52 @@ +[ + { + "name": "Mo'no Caff\u00e8", + "lat": 41.392874, + "lng": 2.173412 + }, + { + "name": "Eroica Caff\u00e8 Barcelona", + "lat": 41.393614, + "lng": 2.169268 + }, + { + "name": "Il Capriccio del Caffe", + "lat": 41.377339, + "lng": 2.162449 + }, + { + "name": "Garden Caff\u00e9", + "lat": 41.392576, + "lng": 2.200383 + }, + { + "name": "Oh! Caffe", + "lat": 41.399003, + "lng": 2.156334 + }, + { + "name": "Antico Caff\u00e8", + "lat": 41.402081, + "lng": 2.15315 + }, + { + "name": "Piacere Caffe", + "lat": 41.402328, + "lng": 2.172256 + }, + { + "name": "Il Caff\u00e9 di Francesco", + "lat": 41.393095, + "lng": 2.16426 + }, + { + "name": "Gelateria Caffetteria Italiana", + "lat": 41.4027, + "lng": 2.158435 + }, + { + "name": "Il Caffe Di Francesco", + "lat": 41.390901, + "lng": 2.165257 + } +] \ No newline at end of file