Как стать автором
Обновить
10
0
Паша Назаров @smbd

Пользователь

Отправить сообщение

smotrelka: еще один клиент для API Smotri.com

Время на прочтение 4 мин
Количество просмотров 1K
В силу некоторых обстоятельств было решено написать клиент для работы со Smotri.com через предоставляемый ими API. Надо сказать, подобный топик уже проскакивал на хабре (здесь), но там описывалось приложение несколько другого характера.

Итак, обязательные требования к проекту — кроссплатформенность и наличие относительно удобного GUI — наложили некоторые ограничения на языки и платформы. Была выбрана довольно стандартная связка — C++ и Qt, как знакомая и удобная.

Само API представляет из себя набор вызовов XML-RPC или JSON-RPC, его описание лежит тут. Состоит оно, по сути, из набора базовых сущностей (а-ля видео, юзер, комментарий и т.д.) и набора команд для работы с контентом. В целом, API довольно удобно, хотя публично доступная версия имеет некоторые недоработки, но это отдельная история :) Её отголоски можно найти в тикетах трекера, адрес — чуть выше.

Описание технической части

Для работы с API нами был выбран вариант c JSON-ом. Немного помучавшись, были решены проблемы с JSON <-> Qt через QScriptValue и написание небольшого велосипеда. Первый этап пройден, можно передохнуть :)
Далее встал вопрос о написании очень тупого однообразного кода для всех сущностей и команд. Конечно, в моей голове сразу родилась идея о генераторе, выдирающем описание из wiki и выдающем плюсовый код. И конечно, сотимовцем она была сразу же отвергнута как неочевидная по трудозатратам, да и код можно было бы написать руками, в конце концов. В общем-то, всё это верно, но взглянув вечером на кучу сущностей и гораздо большую кучу команд мне очень сильно взгрустнулось и было решено, скрепя сердце, написать чертов генератор. Плюсы решения очевидны — после написания базовой части, аля парсинга вики-формата будет легко конструировать нужный вывод. В общем, за пару вечеров оная утилитка была написана на python, и еще примерно за столько же начала генерировать нечто, почти полносью удовлетворяющее нас и компилятора. Параллельно я узнал, что мой сотимовец написал вручную за это время почти всё то, что генерит моя тулза :D

В общем, через недельку-полторы мы догенерили всё для работы с командами и получили практически полностью работающее и довольно удобное API в Qt-стиле для работы со smotri.com. Чуть опосля были написаны unit-тесты, и мы убедились, что все они проходятся.

Эта часть в настоящее время стабильна и оформлена как отдельная библиотека с примерно таким интерфейсом у главного класса SmotriApi (показаны не все команды):
Читать дальше →
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 0

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность