[Из песочницы] Сбор статистики viber
Возник интерес как получить статистику по чату в вайбере. По информации на сайте viber.com статистика предоставляется только для сообществ, в которых не менее 1000 участников.
Далее опишу инструкцию как я получал статистику для чата viber используя файл резервной копии.
1. Резервная копия аккаунта имеет формат базы данных viber.db, для ПК версии находится по пути: C:\Users\\AppData\Roaming\ViberPC\.
2. Для чтения файла БД использовал SQL Lite Browser.
3. Открываем файл viber.db в SQL Lite Browser. БД предстает в следующем виде:
4. Основная таблица это Events, все события (по аккаунту) в вайбере имеют сквозную нумерацию (EventID). Другие таблицы имеют связь по внешнему ключу EventID. Информация по сообщениям хранится в таблице Messages, информация по пользователям — в таблице Contact. Я использовал только эти три таблицы.
5. Для того чтобы получить статистику по чату, для начала необходимо узнать идентификатор нужного чата ChatID. Для этого выбираем пункт «Просмотр данных» контекстного меню для таблицы ChatInfo и переходим на вкладку «Данные» для просмотра.
6. По названию чата (атрибут Name) ищем нужный и смотрим Его идентификатор (атрибут ChatID).
7. Аналогично можно получить идентификатор пользователя (ContactID) в таблице Contact через атрибуты Name (как пользователь записан у вас в телефоне) или ClientName (имя пользователя по его аккаунту). Я использовал атрибут ClientName, т.к. не все пользователи у меня есть в записной книжке телефона.
8. Далее получаем нужные данные с помощью формирования запросов Select на вкладке SQL. По каким атрибутам делать зависит от потребностей, для этого необходимо составить соответствующий запрос. Для себя я составил запросы, отраженные в таблице 1.
Таблица 1. Перечень используемых запросов
Таблица 2. Описание атрибутов
9. После выполнения запроса результат я экспортировал сначала в PDF, а потом в excel (мне так было проще):
10. После использовал данные для построения инфографики в excel, например по запросу №5 (см. таблицу 1):
Примечание 1. Данные разнятся, т.к. чат активен и БД обновляется.
Примечание 2. Уже в excel объединил типы 65…77 в общий (сервисные).
11. Как работать со атрибутом времени (TimeStamp). В БД для привязки событий ко времени используется UNIX-время и для получения данных, связанных с привязкой к дате и времени, возникла необходимость их дополнительной обработки. Приведу пример как я делал это в excel:
a. Сохраняем результаты запроса №9 (см. таблицу 1) в excel (столбец А).
b. В столбце В отбрасываем последние 3 символа (не понял для чего они) чтобы получить время в UNIX-формате. Делаем это с помощью формулы =ЛЕВСИМВ (A2; ДЛСТР (A2)-3). Растягиваем формулу на весь диапазон строк.
c. Столбец С заполняем единицами (счетчик сообщений).
d. В столбце D переводим дату в человекопонятную с помощью формулы =(B2 / 86400) + 25569. Растягиваем формулу на весь диапазон строк.
e. Для подсчета количества сообщений помесячно (ячейки E2: R2) используем формулу =СУММЕСЛИМН ($C$2:$C$1434;$D$2:$D$1434;»>=»&E$1;$D$2:$D$1434;»<="&КОНМЕСЯЦА(E$1;0)). Растягиваем формулу на весь диапазон столбцов E1:R1.
f. По диапазону ячеек E1: R2 строим гистограмму.
Заключение
Данный способ сбора статистики выполняется в ручном режиме, он ресурсоемкий (по крайней мере по затраченному времени), но как минимум работоспособный. За неимением лучшего, так сказать. Данный способ можно использовать не только для получения статистики по чату, но и по аккаунту вайбер в целом. Исходники не прикрепляю, т.к. все операции я проводил на реальном чате, содержащим персональные данные пользователей, а создавать отдельный чат для теста мне лень. Спасибо за внимание.