17.09.2014       Выпуск 44 (14.09.2014 - 21.09.2014)       Статьи

Экспортируем комментарии и оценки из Google Play для анализа

Пример практического применения модуля gsutil

Читать>>



Экспериментальная функция:

Ниже вы видите текст статьи по ссылке. По нему можно быстро понять ссылка достойна прочтения или нет

Просим обратить внимание, что текст по ссылке и здесь может не совпадать.

17 сентября 2014 в 07:23

Экспортируем комментарии и оценки из Google Play для анализа tutorial

Не все знают, но в

Google Play

существует вполне легальная возможность выгрузить все комментарии и оценки к своему приложению в отдельный CSV-файл, после чего заняться каким-нибудь анализом, не доступном из гугловской системы. Но делается это с помощью внешней утилиты

gsutil,

написанной на Python’е. Так что в этом посте будет небольшая инструкция по тому, как это сделать.

  1. Инсталлируем python 2.6 или 2.7, если его ещё нет в системе. Инструкция по установке на официальном сайте, там нет ничего сложного для любой ОС.



  2. Скачиваем и распаковываем в любую папку gsutil (прямая ссылка на zip, прямая ссылка на tar.gz)



  3. Открываем консоль в папке с gsutil и продолжаем работать в ней. (Для windows – shift+правый клик в этой папке и выбор “Открыть окно команд”, пользователи более популярных и сами знают, как это сделать, раз уж сумели их установить)



  4. Выполним команду
    gsutil.py update

    для очевидных целей. Обычно в архиве уже лежит свежая версия, но бывает всякое.









  5. Выполним команду
    gsutil.py config



    Получаем примерно такое сообщение. Что делать, опять же, очевидно – скопировать ссылку в браузер.







  6. Перейдя по ссылке мы попадём на страницу, на которой разрешим приложению работать с нашим аккаунтом.





  7. И скопируем код в консоль









  8. В ответ получим ещё одно сообщение, с предложением выбрать проект по умолчанию в Google Developer Console, но это делать не обязательно, тем более, что нужного нам проекта там может просто не быть. Но что-то ввести в скрипт нужно, пустую строку он не примет. Так что введём просто “1” например и закончим работу.







  9. На странице «Оценки и отзывы» своего приложения нужно найти идентификатор сегмента отчетов, начинающийся со строки pubsite_prod_rev_, например pubsite_prod_rev_1234567890123456789.











  10. Теперь никто не мешает нам скачать все отчеты. Для этого достаточно выполнить команду
    gsutil.py -m cp gs://pubsite_prod_rev_1234567890123456789/reviews/*.* Адрес_папки_куда_копировать

    В нашем случае:
    gsutil.py -m cp gs://pubsite_prod_rev_1234567890123456789/reviews/*.* C:\Python27\texts

    -m – флаг копирования в несколько параллельных потоков
    cp – команда копирования файлов.
    Подробно о командах утилиты можно прочитать тут.









  11. В результате в папке мы получим кучу файлов с именами по схеме reviews_[имя_пакета_приложения]_YYYYMM (Y — год, M — месяц). Причем для всех закреплённых за вашим аккаунтом приложений сразу.



    Конечно, если вам нужны отчеты только одному приложению, можно качать данные запросом вида
    gsutil.py -m cp gs://pubsite_prod_rev_1234567890123456789/reviews/* com.new_program*.* C:\Python27\texts

    Но, думаю, принцип фильтрации и так понятен.









  12. В целом, всё уже прекрасно, но работать с пачкой отдельных файлов неудобно, так что простым питоновским скриптом склеим их в один файл. Конечно, можно было бы простой командой copy объединить файлы в один, но тогда у нас будет дублироваться заголовок, а это неприятно.

    import os
    import codecs
    
    files = os.listdir(".")
    csvs = filter(lambda x: x.endswith(".csv") and x!="all_csv.csv", files)
    file_write = codecs.open('all_csv.csv', 'w','utf-16')
    header_writed = False
    for file_name in csvs:
        file_read = codecs.open(file_name,'r','utf-16')
        lines_count=0
        for line in file_read:
            lines_count=lines_count+1
            if (lines_count == 1):
                if (header_writed == False):
                    header_writed = True
                    file_write.write(line)
            else:
                file_write.write(line)
        file_read.close()
    file_write.close() 




Ну вот вроде бы и всё. Полученный файл в экселе выглядит примерно так:

А уж какую аналитику творить с полученным файлом – смотрите сами. :)

Список использованной литературы

support.google.com/googleplay/android-developer/answer/138230#export_ratings_and_reviews developers.google.com/storage/docs/gsutil



Лучшая Python рассылка



Разместим вашу рекламу

Пиши: mail@pythondigest.ru

Нашли опечатку?

Выделите фрагмент и отправьте нажатием Ctrl+Enter.

Система Orphus