Следим за отзывами в Google Play в режиме реального времени

af96173499634899a1b05ca4bbfc1fa7.png

Пользователи и покупатели оставляют множество отзывов в Google Play на приложения, музыку, фильмы и книги. И любому разработчику под Android необходимо постоянно следить за появлением новых оценок на свои приложения, чтобы вовремя отреагировать.
Будучи таким разработчиком, я однажды задумался о создании сервиса для получения отзывов и рейтингов в режиме реального времени. И вот недавно на свет появился View Review — простой и бесплатный REST API для парсинга отзывов о любых продуктах в Google Play Store. Но оказалось, что весьма полезно использовать его не только в «разработческих» целях…

О том, как работает API и как к нему подключиться, а также несколько интересных примеров связки с автоматизатором IFTTT, подробно написано под катом.


Как известно, у Google Play есть возможность выгрузить отчет по отзывам за какой-то период в формате CSV. Но там мы не увидим отзывов за сегодняшний день. Более того, CSV тоже нужно парсить, а хочется, чтобы за нас это уже кто-то сделал.
Вдобавок ко всему, ссылка на CSV с отзывами доступна только из консоли разработчика. Но что мешает просто собрать данные со страницы продукта в Google Play? Мне показалось, что ничего не мешает, поэтому и было решено «запилить» такой сервис, да еще и научить его выдавать данные в разных форматах.
Если с JSON все и так понятно (куда же без него), то вот RSS мне нравится тем, что его можно «скормить» любой RSS-читалке, чтобы получать последние отзывы по приложению (фильму, книге, альбому) практически в режиме реального времени.
Но что еще интереснее, такой RSS фид можно «сдать» в качестве триггера в такие сервисы как IFTTT или Zapier, чтобы по-разному реагировать на новые оценки.

Между прочим, последний умеет подключать такие корпоративные сервисы, как HipChat, репозитории Bitbucket и много всего полезного именно для разработчиков.

Но об этом еще поподробнее будет в конце статьи. А сейчас я опишу API с его возможностями.


Итак, как уже было сказано, это очень простой REST API, через который можно получать отзывы к любому товару (приложение, фильм, музыкальный альбом или книга) либо в формате JSON, либо в виде RSS рассылки.
Отзывы упорядочиваются по дате добавления, так что самые новые отзывы идут первыми.

JSON


Чтобы получить JSON с отзывами и оценками, нужно подставить id товара (его можно взять из URL на странице Google Play) и его тип в URL вида

http://api.viewreview.org/json/{type}?id={id}


где type может иметь одно из следующих значений:

  • app — для приложения
  • movie — для фильма
  • album — для музыкального альбома
  • book — для книги


В результате сервис выдаст массив объектов, каждый из которых будет примерно таким:

{
  "rating":5,
  "date":"September 7, 2015",
  "author":"KM MARTTINEN",
  "photo":"https://lh4.googleusercontent.com/-tKH3pWlaxoQ/AAAAAAAAAAI/AAAAAAAAAKo/8FZQ1APxf7M/w48-c-h48/photo.jpg",
  "title":"Highly recommended read...",
  "text":"One of a kind, inspiring, motivational biography of the greatest technology leader and visionary this world has had."
}


Нетрудно догадаться, какое поле что содержит, поэтому я не буду их подробно описывать.

RSS


Соответственно, чтобы получить RSS рассылку, нужно заменить в исходном URL слово json на rss.
В RSS полей немного меньше, поэтому рейтинг и имя автора содержаться в тэге title, разделенные минусом.

<item>
 <title>5 - abdi setiawan</title>
 <link>https://lh3.googleusercontent.com/-pfY6nNVy6GI/AAAAAAAAAAI/AAAAAAAAAjc/FWcSBMp8Mdc/w48-c-h48/photo.jpg#d4d3652e86a3ac30630a19d16e92fe95</link>
 <description>Good book. After i was read it, i realized that you should know if you have a dream, you have to struggling utmost and don't given up!!</description>
 <pubDate>Sat, 26 Sep 2015 16:36:44 GMT</pubDate>
 <guid>https://lh3.googleusercontent.com/-pfY6nNVy6GI/AAAAAAAAAAI/AAAAAAAAAjc/FWcSBMp8Mdc/w48-c-h48/photo.jpg#d4d3652e86a3ac30630a19d16e92fe95</guid>
</item>

Тэги link и guid содержат уникальные значения для пары «автор-отзыв», поэтому RSS читалка должна правильно реагировать на обновления пользователем своего отзыва, считая их новыми элементами, если пользователь изменил оценку или сам отзыв.

Как видите, все предельно просто! Но, это еще не все…


hl Фильтрация по языку. По-умолчанию используется en, поэтому для русскоязычных приложений полезно всегда выставлять его в ru.
page Этим параметром можно указывать, какую по счету страницу Google Play нужно парсить. Только для формата JSON.
limit Максимальное количество отзывов на странице, которые нужно выдать в ответ.
from Минимальная оценка в отзыве, чтобы он оказался в выдаче.
to Соответственно, максимальная оценка.

Все вышеперечисленные параметры являются необязательными, но еще раз отмечу, что hl нужно выставить в ru, если хочется увидеть самые свежие отзывы на русском.


На самом деле, оказывается полезным использовать такой сервис не только для своих приложений (фильмов, альбомов и книг :) ). Например, можно последить за конкурентом, или подключиться к приложению, где в отзывах могут содержаться промо-коды и т.п. информация от самих пользователей. Можно быть уверенным, вы узнаете о таких данных первыми.
e52b9bb78a2543aebad3efc630d69145.png

Как я уже упоминал, благодаря RSS можно очень гибко настроить любую автоматизацию с помощью таких сервисов как IFTTT или Zapier. Они будут реагировать на новые оценки и моментально перенаправлять их данные на нужный вам сервис, API которого взаимодействует с выбранным сервисом автоматизации.

На скриншоте выше приведен рецепт для IFTTT, который автоматически создаст todo в вашем Todoist списке дел, как только на ваше (или не ваше) приложение придет отзыв с низкой оценкой. Удобно...

Все что нужно для этого сделать — создать рецепт в вашем IFTTT, где в качестве триггера будет RSS feed, а в качестве действия — любая нужная вам реакция. С помощью параметров API View Review, описанных выше, можно контролировать фильтрацию отзывов так, чтобы по-разному реагировать на разные отзывы.

А вот еще парочка рецептов:
Этот «пульнет» нотификацию с новым отзывом в ваш Pushbullet:

e8f1a48a3fcc4240a544cc5adf518314.png

Этот отправит нотификацию прямиком на ваши «умные» часы:

39c3622e0b4143a1aba528c04c878878.png

А этот зажигает красную сирену в нашем офисе, когда нам ставят «гневную единицу» (релизовано с помощью сервиса для умного дома OpenHAB)
2ce58b8611f44334b8a56297748936b9.png

Еще раз напомню, что Zapier имеет большой набор интересных фишек, как например интеграция с Bitbucket, которых нет в IFTTT, и которые тоже могут пригодиться.


Вот такой интересный сервис получился. В планах — выйти на IFTTT и создать там отдельный триггер ViewReview вместо обычного RSS, чтобы можно было гибко управлять данными отзыва. А также создать подобный механизм в Zapier.

Если вдруг у вас появится желание отблагодарить автора за этот сервис, то помогите пристроить очень замечательного, но бездомного котёнка в Санкт-Петербурге. Спасибо!

© Habrahabr.ru