Сделал недавно свою первую игру на unity под android, и поставил туда систему аналитики Flurry. Постоянно заходить на сайт и мониторить не совсем удобно, простенький скрипт — скучно, а вот уведомления в телеграм — самое оно.
Итак, сделал простенький бот в телеграм, который раз в час присылает мне статистику: активные устройства, сессии, новые устройства.
Token от бота в telegram и для статистики во Flurry. Как создать бота в телеграм легко найдете в сети (через @botfather), а вот для flurry нужно создать отдельного специального пользователя.
Вот ссылка на документацию по статистике от flurry (сразу на нужный раздел): https://developer.yahoo.com/flurry/docs/api/code/publishing/ . Нам нужен Reporting API.
Дальше нам надо получить свой programmatic token. Как это сделать детально описано на странице https://developer.yahoo.com/flurry/docs/api/code/apptoken/ , со скриншотами. Если кратко:
Все, токены от бота и flurry у нас есть, теперь пишем чат-бота на питоне.
Импортируем нужные модули. Requests, telebot и может еще что-то нужно поставить через pip.
import telebot import re, os, time, json import random import requests as rq from datetime import datetime, timedelta
Проверим, нет ли у нас проблем с самой отправкой сообщений в бот. Запустим бот, и отправим какое-то сообщение в ответ.
def start_bot(): token = '65****gY' # Token для телеграм бота global bot bot = telebot.TeleBot(token) print('bot started') @bot.message_handler(content_types=["text", 'photo', 'location']) def mess(message): # Названия функций почти не играют роли bot.send_message(message.chat.id, text = "Проверка бота телеграм") print(message.chat.id) if __name__ == '__main__': bot.polling(none_stop=True)
Основные комментарии есть в боте, напишу немного об этом:
print(message.chat.id)
Так как мы хотим слать статистику только себе, а не всем, то нужно узнать наш ID для «переписки» бота.
Идем дальше.
Документация по апи понятная, главное передавать правильный header с токеном.
'Authorization': 'Bearer eyJhIU****6kBw'
Слово Bearer обязательно! (на 02.10.2019)
Выкладываю свой код, до идеала не доводил, свою задачу решает:
def flurry(): url = 'https://api-metrics.flurry.com/public/v1/data/' # Основной URL для запросом по API Flurry SDK head = rq.utils.default_headers() head.update( { 'Authorization': 'Bearer e*Ваш_токен_FLURRY_SDK*Bw', } ) try: while True: d1 = datetime.today() + timedelta(days=1) d = datetime.today() - timedelta(days=1) today_date2 = d.strftime('%Y-%m-%d') today_date = today_date2 + '/' + d1.strftime('%Y-%m-%d') analytics = 'appUsage/day/app?metrics=sessions,activeDevices,newDevices&dateTime=' + today_date # Запрашиваем данные: сессии, активные устройства и новые устройства, за период со вчера до завтра. r = rq.get(url+analytics, headers = head) reports = json.loads(r.text) analytics2 = 'appUsage/day/app/country/?metrics=sessions&dateTime=' + today_date # Отдельный запрос для получения стран, в которых запускали приложение r2 = rq.get(url+analytics2, headers = head) report_country = json.loads(r2.text) countries = '' for country in report_country['rows']: countries += country['country|name'] + '; ' date2send = datetime.strptime(reports['rows'][-1]['dateTime'], '%Y-%m-%d %H:%M:%S.%f-07:00') # Сделал для удобства работы с датой, чтобы в тексте сообщения передавать в удобном виде. msd = bot.send_message(261111846, text = u'\U0001F469\U0000200D\U0001F4BB ' + date2send.strftime('%Y.%m.%d') + '\n activeDevice = ' + str(reports['rows'][-1]['activeDevices']) + ';\n sessions = ' + str(reports['rows'][-1]['sessions']) + ';\n new Devices = ' + str(reports['rows'][-1]['newDevices']) + ';\n Countries: ' + countries ) # 261111846 - это Ваш message.chat.id; дальше текст: смайлик и данные. time.sleep(60*60) # Отправка каждый час с момента запуска бота except Exception as err: # Отлов ошибки, ждем 2 минуты print(err) print('Error at ' + time.strftime(r'%d.%m.%Y %H:%M:%S')) time.sleep(120)
Какие данные еще можно запрашивать и некоторые примеры смотрите в документации. Ну или спросите в комментарии. Еще можно вызывать количество показов, кликов, заработанного, но если кликов нет, возвращает «ноль», а это еще париться, отслеживать, менять код
Как выглядит результат — в главном изображении статьи.
Есть вопросы или замечания? С радостью жду в комментарии или пишите сообщения. Профили в Контактах.
Очень много разговоров в последнее время за токен NOT. Много бирж будут делать листинг токена,…
Телеграм недавно запустил возможность стейкать (замораживать) USDT и получать за это их валюту TON. Очень…
Биржа криптовалют Binance проводит сейчас промо-акцию: новым пользователям дают ваучеры в сумме 110 долларов. Деньги…
Самый главный момент в работе с youtube - это получить ключ api через консоль разработчика…
Арендую сервер для небольшого проекта на python. И вот приходит мне уведомление, что за сутки…
Тестирую одну схему, и нужно на много видео наложить watermark. Решил делать через Python 3,…