Приветствую всех тех, кому заходит этот цикл статей. Напомню, что наша цель: найти ошибки букмекеров. В предыдущих двух статьях я уже сделал программу, которая записывает в одну таблицу информацию о событиях.
Для того, чтобы строить хоть какие-то гипотезы, нужно знать, как закончились события. Уже сейчас у нас есть статусы:
- line - событие еще не началось
- live - событие идет прямо сейчас
Но нет события о конце матча. В будущем мы будем использовать данные статистики только на основе закончившихся событий. К сожалению, то API, которое у нас есть не позволяет нам легко и просто понять, закончилось событие или нет. Например, есть запрос такого вида
Что делать? Мы не можем получить информацию о закрытии? Нет, можем. Как раз то, что событие возвращается ненайденным и дает нам понять, что событие закончилось и можно изменять статус.
Что нам дано и что у нас уже есть? Список событий со статусами line и live. Очевидно, что конец матча может наступить только после статуса live. Давайте получим все матчи со статусом live.
Теперь надо интегрировать метод get_ids_from_live_events() в код, который собирал информацию.
Да, это работает. Теперь у нас есть события, которые не будут изменяться, а значит над ними уже сейчас можно проводить опыты. Правда информации о счете нам пока мало, да и хотелось бы, чтобы информация обновлялась с какой-то периодичностью, иначе если мы будем запускать программу вручную каждые там 5 минут, то много информации не соберешь. Будет лучше, например, оставить программу в работающем состоянии на несколько дней и тогда мы получим много разных событий и ставок.
Ставок? Точно, мы же еще не сохраняем ставки. Повременим тогда с периодичностью и давайте уже прикрутим сохранение хоть каких-нибудь ставок, на основе которых будем проводить вычисления и поиск ошибок букмекеров.
Для начала выберем один вид ставок и будем сохранять их. Тоталы нам подходят, потому что уже сейчас мы сохраняем счет. Необходимо добавить новую таблицу.
Таблицу создали, но автоматически пока что никак ее не обновляем. Перед тем, как приступить к этому стоит сказать, что нас интересуют значения ставок до начала события, так как после, они начинают меняться уже из-за внешних факторов в виде хода игры. А нас интересуют внутренний факторы, ошибки букмекеров. Поэтому обязательно, перед тем, как сохранить ставки в таблицу, нужно проверить статус события.
К этому времени код настолько сильно разросся, что скоро уже придется выкладывать ссылку на github.
По-хорошему, надо бы проверять всю запись, чтобы исключить лишние операции с базой. Запишем эту проблему в беклог до лучших времен. Ведь так делают все разработчики, правда?
И Д Е А Л Ь Н О.
Программа готова к использованию. Теперь, запуская файл data_load.py мы добавим матч и ставки по тоталу в нашу базу. Последнее, что нужно сделать, это оформить периодичность. Многие знающие люди скажут, что теперь пора прикрутить cron. Но у меня есть предложение получше. Я буду использовать библиотеку schedule.
Обрамляем наш код в функцию и затем...
Используя библиотеку schedule настраиваем периодичность. Я сделал так, чтобы функция вызывалась каждую минуту.
Данных пока мало и это понятно, ведь события не проходят за несколько минут и могут длиться несколько часов. Поэтому все, что сейчас нам нужно - это терпение. Желательно оставить программу в таком состоянии на недельку.
Это что же получается? Надо компьютер оставить включенным на неделю?
Не обязательно. В следующей статье мы рассмотрим вариант запуска нашей программы на отдельном сервере, который точно не выключится.
Небольшое отступление в конце. Я уверен, что среди читателей найдутся люди, профессионалы своего дела, которые захотят покритиковать код. В целом, не против этого, так как понимаю и вижу проблемы, но решать их сейчас нет времени. Если вам зайдет, то можно будет сделать репозиторий с кодом на github публичным и вести там совместную работу.
Всем прочитавшим до этого момента - большая благодарность. Впереди нас ждет последняя часть по сбору информации, а после нее мы уже приступим к разбору статистики.