С появлением CodeForces API стало проще реализовать различные идеи, которые раньше можно было сделать только через парсинг. Предлагаю вашему вниманию небольшую утилитку на Python-е. Изначально она писалась под conky и парсила список контестов, но сейчас, с появлением API, появилась возможность выделить работу с ним в отдельный класс. Из старого функционала пока позволяет только просматривать через conky текущую информацию о пользователе и грядущих контестах, скоро допилю оставшуюся с хаками и таблицей результатов. Поэтому кому нужно отображение информации в conky или просто класс для работы с CodeForces API, надеюсь пригодится. Запуск:
conky.py [options]
Пример для конфигурации conky (обновляется каждые 30 минут):
${execpi 1800 python ~/cfclass/conky.py --next-contest-list --div1 --hr --colors}
Параметры:
--next-contest-list — список грядущих контестов
--user-info handle,...,handle — информацию о пользователях, заданных списком
--current-standings handle,...,handle — таблицы результатов всех соревнований, в которых указанные пользователи принимают участие
--div1, --div2 — фильтрация списка по дивизионам
Использование класса:
from cfclass import CodeForces
cf = CodeForces()
result = cf.getContestList(gym=False)
Со включенным параметром --color:
Без него:
Показывает таблицы результатов всех соревнований, в которых указанные пользователи принимают участие: ${execpi 300 python ~/cfclass/conky.py --current-standings --hr --colors --handles subscriber,stevenkplus}
Остальные функции добавлю позже, как и авторизированный доступ в классе. Предложения по улучшению с радостью принимаются.
UPD добавил скриншоты.
UPD2 добавлены некоторые фичи и скриншоты
Жаль что у меня сейчас стоит Windows :/
а в чем проблема ? оО
А ведь Conky не только для Linux???
У меня на windows все работает
ИЗНАЧАЛЬНО она писалась под conky и парсила список контестов
Все понял. А как поправить цвета на Windows?
Отключить цвета можно, убрав флаг --color. Выбор цвета пока отсутствует, добавлю в ближайшем коммите.
Нет, на Windows цветов нет с флагом --color.
Вот эту
${execpi 1800 python ~/cfclass/conky.py --next-contest-list --hr --colors}
строчку вставлять нужно в конфигурацию conky, или что там есть под windows, а если хотите увидеть как он выводит в консоль, то так:как по мне парсить контесты лучше, чем брать их через api. страница /contests весит примерно 15кб, а запрос (даже без gym=true) сейчас 80кб и будет расти вечно.
Думаю, это не проблема, просто ввести параметр типа future=true, который отображает только грядущие контесты, а для прошедших ввести фильтр top, например. JSON приятнее обрабатывать, да и парой десятков килобайт никого не испугаешь. P.S. это как feature request к CodeForces API.
Ты пишешь:
Я бы написал:
return result or False
или дажеreturn result
.result — возвращаемое значение
CodeForces._request
может бытьNone
или словарём.Согласен,
return result or False
— короче, спасибо. Я не хочу делать простоreturn result
, т.к. потом таким способом, по моему мнению, логичнее проверять результат какif result
.Как ты думаешь, что выведет следующий код?
"fail result", бесспорно. Просто моё предпочтение проверять переменную так в if, чтоб она была либо словарем, либо False.