Привет, хабр!)
Периодически хочется почитать книги с ноутбука, особенно в дороге. Но у «Яндекс Книг» есть только мобильные приложения и сайт, а отдельного клиента для Windows нет. Через браузер читать можно, пока есть нормальный интернет, однако в поезде или за городом этот план иногда заканчивается одновременно с мобильной сетью.
Можно было скачать книгу где-нибудь ещё, поставить обычную EPUB-читалку и не усложнять себе жизнь. Но библиотека и подписка у меня уже находились в одном сервисе. Поэтому я выбрал более логичный для программиста вариант: решил самостоятельно написать неофициальный десктоп-клиент.
Что я хотел получить
Изначальная идея была довольно простой: открыть приложение, увидеть свою библиотеку, скачать нужную книгу и спокойно читать её без интернета.
Без попытки полностью повторить мобильный клиент. Без всяких аудиокниг, заметок и прочего(хотя, может, когда-нибудь я это всё туда перенесу). Мне хотелось сделать небольшое нативное Windows-приложение, которое решает конкретно мою проблему.
Для интерфейса я выбрал WinUI 3, потому-что хочу чтобы всё было в стиле 11 винды. В результате приложение умеет загружать библиотеку пользователя, искать текстовые книги, добавлять и удалять их, скачивать EPUB для офлайн-чтения и хранить локальный прогресс. Есть светлая и тёмная темы, настройка размера текста, оглавление, горячие клавиши и двухстраничный режим для широких окон.
Собственно, вайбкодинг
До этого я пытался писать приложения на WinUI 3, но это не моя сфера деятельности поэтому проект делался в основном силами Codex и Claude opus 4.8.
Перед тем как что-либо делать, я прошерстил интернет на наличие готовых API и был очень рад что такое есть. Затем последовал 1 день плотного вайбкодинга и что-то получилось. Единственная проблема текущего приложения и API в том, что нет возможности отправлять Яндексу обновлённый прогресс чтения любой книги(Несмотря на возможность добавлять и удалять книги из библиотеки пользователя, в чей аккаунт залогинено приложение)
Что получилось
Сейчас это вполне пригодная для использования первая версия.
Клиент показывает личную библиотеку, позволяет искать и добавлять книги, загружает их на компьютер и открывает во встроенной читалке. Обложки и метаданные кэшируются локально, поэтому уже загруженная библиотека остаётся доступной без сети. OAuth-токен хранится не в обычном конфигурационном файле, а в Windows Credential Locker.
Разумеется, пока не всё идеально. Например, сейчас поддерживаются именно текстовые книги, аудиокниг пока нет.
И, пожалуй, самое важное ограничение: клиент использует внутренний недокументированный API Bookmate, на котором работает сервис. Это означает, что после очередного обновления со стороны Яндекса что-нибудь может внезапно сломаться. Такой проект по определению живёт немного на пороховой бочке.
А это вообще законно?
Проект не связан с Яндексом и не пытается обходить подписку или открывать недоступный контент. Для работы нужен собственный аккаунт(с подпиской), а полный текст можно скачать только для тех книг, которые доступны этому аккаунту.
Тем не менее это неофициальный клиент, использующий непубличный API. Поэтому я рассматриваю его прежде всего как эксперимент и инструмент для личного использования, а не как стабильную альтернативу официальному приложению.
Исходный код открыт под лицензией MIT. Посмотреть проект, собрать его самостоятельно или скачать первую версию можно на GitHub.

Ссылки
Спасибо за внимание)
Автор: kvch


