Telegram бот для уведомлений от flurry sdk пример
Сделал недавно свою первую игру на 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,…