Как отсортировать список названий ресторанов по рейтингу ресторанов (возможно, из Google Places или Yelp Fusion API) - PullRequest
1 голос
/ 23 марта 2019

У меня есть CSV-файл с тысячами названий ресторанов и адресов, которые мне нужно отсортировать по рейтингу (данные, которых нет в CSV). Есть ли способ заполнить CSV этими данными? Возможно, с Google Places API или Yelp Fusion API?

1 Ответ

0 голосов
/ 01 июня 2019

API Google Адресов и API Yelp Fusion позволяют получать рейтинг ресторана, если вы запрашиваете название компании и адрес. Я собираюсь объяснить, как это сделать, но сначала предостережение о соблюдении. То, что вы описываете, явно противоречит условиям обслуживания для обоих API. Единственное разрешенное использование их данных - это отображение их на общедоступном веб-сайте или в приложении. Получение и сохранение его в CSV-файле явно не подходит. API предназначены для запросов в реальном времени и немедленного отображения результатов для ваших пользователей.

Google требует, чтобы данные Places отображались вместе с картой Google или утвержденным изображением "powered by Google". Кроме того, не допускается «предварительная выборка, кэширование или хранение содержимого». Подробнее см. https://developers.google.com/places/web-service/policies

Yelp требует атрибуции, в основном вам нужно отобразить звездный рейтинг и логотип Yelp со ссылкой на бизнес-страницу Yelp для ресторана, который вы запросили. См. https://www.yelp.com/developers/display_requirements Кроме того, вы не можете «кэшировать, записывать, предварительно извлекать или иным образом хранить какую-либо часть Контента Yelp в течение периода, превышающего двадцать четыре (24) часа с момента получения Контента Yelp, или попытаться или предоставить средство для выполнения любых операций очистки или «массовой загрузки». Полный текст и термины см. https://www.yelp.com/developers/api_terms

Как можно узнать, как запросить рейтинг ресторана у Google Мест на карте:

https://maps.googleapis.com/maps/api/place/findplacefromtext/json?input=Applebees,234 W 42nd St,New York,NY&inputtype=textquery&fields=formatted_address,name,rating&key=YOUR_API_KEY

И ответ JSON:

{
    "candidates": [
        {
            "formatted_address": "234 W 42nd St, New York, NY 10036, USA",
            "name": "Applebee's Grill + Bar",
            "rating": 3.6
        }
    ],
    "status": "OK"
}

Вот тот же запрос для Yelp Fusion. Нет способа запросить только рейтинг. Результаты всегда содержат все в своей базе данных для ресторана:

https://api.yelp.com/v3/businesses/search?term=applebees&location=234 W 42nd St,New York,NY&limit=1

JSON-ответ:

{
    "businesses": [
        {
            "id": "gytFjzBw-z5LZD-6JSMChg",
            "alias": "applebees-grill-bar-new-york-3",
            "name": "Applebee's Grill + Bar",
            "image_url": "https://s3-media1.fl.yelpcdn.com/bphoto/CLizyj9S7pMvwGNm2dgdiQ/o.jpg",
            "is_closed": false,
            "url": "https://www.yelp.com/biz/applebees-grill-bar-new-york-3?adjust_creative=pnOv3Zj2REsNDMU4Z3-SLg&utm_campaign=yelp_api_v3&utm_medium=api_v3_business_search&utm_source=pnOv3Zj2REsNDMU4Z3-SLg",
            "review_count": 444,
            "categories": [
                {
                    "alias": "tradamerican",
                    "title": "American (Traditional)"
                },
                {
                    "alias": "burgers",
                    "title": "Burgers"
                },
                {
                    "alias": "sportsbars",
                    "title": "Sports Bars"
                }
            ],
            "rating": 2,
            "coordinates": {
                "latitude": 40.756442,
                "longitude": -73.988838
            },
            "transactions": [
                "delivery",
                "pickup"
            ],
            "price": "$$",
            "location": {
                "address1": "234 W 42nd St",
                "address2": "",
                "address3": "",
                "city": "New York",
                "zip_code": "10036",
                "country": "US",
                "state": "NY",
                "display_address": [
                    "234 W 42nd St",
                    "New York, NY 10036"
                ]
            },
            "phone": "+12123917414",
            "display_phone": "(212) 391-7414",
            "distance": 5.938732504864397
        }
    ],
    "total": 2900,
    "region": {
        "center": {
            "longitude": -73.98880004882812,
            "latitude": 40.75648701137637
        }
    }
}
...