[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "i", "ps": "cndo", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "i", "ps": "cndo", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "ezfk" } } }, { "id": 6, "disable": true, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byswn", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "create", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "cndo", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223677-0", "render_to": "inpage_VI-223677-0-101273134", "adfox_url": "//ads.adfox.ru/228129/getCode?p1=byaeu&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid11=&puid12=&puid13=&puid14=&puid21=&puid22=&puid31=&fmt=1&pr=" } } ]
{ "author_name": "Kolyanok ", "author_type": "self", "tags": ["\u043a\u043b\u0443\u0431"], "comments": 134, "likes": 102, "favorites": 16, "is_advertisement": false, "section_name": "blog", "id": "42982" }
Kolyanok
6 818
Блоги

Делаем десктопный клиент TJournal на Qt! Потому что можем

Привет, TJ. С момента выхода первого и последнего на данный момент кастомного клиента для TJ прошел уже почти год, и вот сейчас нам с Kat Vance (не слушайте его! Это всё он, я ни сном ни духом вообще был!) пришла идея сделать новый десктопный клиент.

Поделиться

В избранное

В избранном

На этот мы решили использовать Qt и C++, а это значит, что клиент будет доступен не только для Windows, но и для macOS и Linux (а ещё для BSD, ReactOS, Haiku и чего угодно, под что вам удастся его собрать).

Kat Vance уже удавалось создать полноценный рид онли клиент для TJournal, однако отсутствие возможности комментировать или хотя бы читать комментарии, а также залоченность на специфическую среду для запуска, для многих стало главным предпятствием на пути использования его как основного инструмента взаимодействия с TJ.

И возможность данная отсутствовала вовсе не по вине разработчика, а по вине администрации TJ, которая не захотела предоставить доступ к приватным методам API сайта.

На этот раз мы основательно подготовились, разобрали Android-приложение и написали документацию к закрытым методам API своими силами (надеюсь, нам за это ничего не будет :), поэтому теперь мы точно сможем реализовать всю оригинальную функциональность мобильных приложений TJ в полной мере. Но скорее всего этим мы даже не ограничимся, и добавим туда еще много клевых штук.

Успешное получение списка комментариев через API

Зачем?

Возможно, многие из читающих этот пост зададутся вопросом: зачем нужен клиент, когда есть замечательная веб версия?

Отвечаем:

1) Это быстрее! В вебе после клика на какую-либо ссылку мы обычно наблюдаем загрузку страницы. И эти доли секунды нам приходится наблюдать скучную и унылую отрисовку страницы "рывками". В приложении макет страницы рисуется мгновенно. Вместо рывка может быть показана анимация, а данные из API подгружаются значительно быстрее, нежели веб страница с разметкой, стилями и скриптами. В отличие от мобильных приложений TJ, мы не будем использовать веб-браузер для рендеринга статьи (это принципиальная позиция, мы даже твиты и прочий embed-контент будем забирать через официальные REST-апи соответствующих платформ), поэтому выглядеть все это будет красиво и органично.

2) Более тесная интеграция с системой. Например, в приложении мы можем реализовать полноценные уведомления, прямо как на смартфоне, или даже реализовать возможность ответить на комментарий прямо из шторки окружения GNOME (на macOS тоже реализуем подобное, на Windows – если такая возможность присутствует).

3) Исправим проблемы, которые мучают пользователей тж годами, такие как не воспроизводящиеся гифки в списке твитов, дублирующийся "лучший комментарий", выбранный редакцией и многое другое. Вернее, у нас этих проблем просто не будет (будут другие).

4) Будут дополнительные фишки. К примеру, кастомизация интерфейса, черный список. А еще анализ СМИ вернем (если его не закроют в ближайшее время, конечно).

5) Понты. Вы сможете выбирать, ставить около своего комментария "яблочко", "робота", или не ставить ничего :) Эта информация, как выяснилось, отсылается в заголовке POST-запроса, и ничего не стоит заменить её на любую угодную строку (мы всё же надеемя на добавление пиктограмм также для Windows и GNU/Linux, но пока так).

Что планируете сделать в первую очередь?

В первую очередь мы планируем реализовать базовую функциональность: это просмотр списка статьей, чтение самой статьи, авторизацию по QR-коду и чтение комментариев.

Затем уже потихоньку будем добавлять написание комментариев, твиты, настройки и все прочее. Если возможно, то мы добавим и авторизацию с помощью соцсетей (на данный момент авторизация происходит через qr-код, потому что это единственный быстрый и универсальный метод, а все остальные нужно будет реализовывать различными способами, что для этапа тестирования просто излишне).

В последнюю очередь мы будем делать то, что нельзя реализовать средствами API TJ, а именно уведомления, полноценный редактор статей и всяческие фишки от себя.

Зачем нужен этот пост, если самого приложения еще нет?

Цель поста — "разделить горе со всеми, так вместе ведь веселее".

Если ты хоть что-то понимаешь в разработке и хоть как-то знаком с C++, вебсокетами, либо же с дизайном интерфейсов, то милости просим в нашу команду :) В награду за старания твое имя обязательно будет красоваться в окне About.

Будет ли исходный код клиента открыт?

Разумеется. Все будет выложено под свободной лицензией и разработка будет вестись в открытом виде.

Когда ждать первую версию?

Точных прогнозов дать нельзя, C++, как известно, богат на неожиданные грабли. Но учитывая, что от первой лампочки в голове у Колянка до готового разобранного апи и этого поста прошло всего двое суток... Думаю, всё будет достаточно оперативно.

Впрочем, если вы хотите убедиться в работоспособности затеи, можно уже сейчас собрать тестовый вариант. Он не пригоден для использования, конечно же, но является работающей реализацией авторизации и нескольких закрытых методов API, что подтверждает успешность операции по реверс-инжинирингу мобильных приложений как минимум.

Как часто будут выходить посты с новостями о разработке?

Мы постараемся писать как можно реже и как можно информативнее освещать текущий статус разработки для тех, кому это интересно. Поэтому, скорее всего, появляться мы будем не чаще чем раз в две недели, чтобы не спамить и не надоедать.

На этом пока все. Ждем вопросов и фидбека в комментариях по поводу того, какие функции вы бы хотели увидеть в приложении.

Kat Vance и Kolyanok.

#клуб

Популярные материалы
Показать еще
{ "is_needs_advanced_access": true }

Лучшие комментарии

Дискуссии по теме
доступны только владельцам клубного аккаунта

Купить за 75₽
Авторизоваться

Преимущества
клубного аккаунта

  • отсутствие рекламы
  • возможность писать комментарии и статьи
  • общение с членами клуба
Подробнее

Преимущества
клубного аккаунта

  • отсутствие рекламы
  • возможность читать и писать комментарии
  • общение с членами клуба
  • возможность создавать записи

Сколько это стоит?

Членство в клубе стоит всего 75₽ в месяц. Или даже дешевле при оплате за год.

Что такое клуб?

Клуб ТЖ это сообщество единомышленников. Мы любим читать новости, любим писать статьи, любим общаться друг с другом.

Вступить в клуб

Комментарии Комм.

Популярные

По порядку

0

Прямой эфир

Вы не против подписаться на важные новости от TJ?

Нет, не против