Периодически хочется почитать книги с ноутбука, особенно в дороге. Но у «Яндекс Книг» есть только мобильные приложения и сайт, а отдельного клиента для Windows нет. Через браузер читать можно, пока есть нормальный интернет, однако в поезде или за городом этот план иногда заканчивается одновременно с мобильной сетью.Можно было скачать книгу где-нибудь ещё, поставить обычную EPUB-читалку и не усложнять себе жизнь. Но библиотека и подписка у меня уже находились в одном сервисе. Поэтому я выбрал более логичный для программиста вариант: решил самостоятельно написать неофициальный десктоп-клиент. Читать далее
Привет, хабр!)
Периодически хочется почитать книги с ноутбука, особенно в дороге. Но у «Яндекс Книг» есть только мобильные приложения и сайт, а отдельного клиента для 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.
СсылкиСпасибо за внимание)
| # | Наименование новости | Тональность | Информативность | Дата публикации |
|---|---|---|---|---|
| 1 | Убежище книги | 0 | 9.51 | 12-08-2026 |
| 2 | Coachlight.Avalonia: почему в desktop-разработке до сих пор нет нормального онбординга — и как я решил это исправить | 0 | 8.57 | 13-07-2026 |
| 3 | Плоть слаба: как я писал свой Wine для браузера | 0 | 7.46 | 12-08-2026 |
| 4 | Плоть слаба: как я писал свой Wine для браузера | 0 | 7.46 | 12-08-2026 |
| 5 | redb.Identity: OAuth 2.1 / OpenID сервер на .NET, где протокол отделён от транспорта, по шине или вообще без сети | 0 | 12.74 | 14-07-2026 |
| 6 | Как я научил Claude заказывать продукты в Яндекс Лавке (и что для этого пришлось отреверсить) | 0 | 10.18 | 22-07-2026 |
| 7 | [Перевод] Ваше «приложение» могло быть просто сайтом (и я ему в этом помог) | -5 | 6 | 19-07-2026 |
| 8 | Как я искал себе читалку и придумал новый формат электронных книг для изучающих язык | 0 | 5 | 08-07-2026 |
| 9 | Локализация .NET-игры на коленке (devlog игровой разработки) | 0 | 5 | 15-06-2026 |
| 10 | Go SDK для YDB: уменьшаем количество запросов к СУБД для интерактивных транзакций | 0 | 8.8 | 13-08-2026 |