С появлением 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.