ReManga для Mihon: от API v1 к v2 и сборщику логов

Содержание
  1. Сначала — ReManga и API v1
  2. Потом сайт перешёл на v2
  3. А для ошибок появился свой сборщик логов
  4. Что сейчас и что дальше

Расширение ReManga для Mihon началось с подключения к API v1: каталог, поиск и главы в привычном приложении для чтения. Потом пришлось переходить на v2, разбираться с изменившимися ответами сайта и развивать диагностику. А рядом с расширением появился ещё и небольшой сайт для сбора логов.

ReManga в Mihon: смартфон с открытой главой манги, книги и ноутбук с кодом в вечернем свете
Небольшой инструмент для чтения на Android. Сгенерированная иллюстрация, не скриншот приложения.

Сначала — ReManga и API v1

Mihon работает с источниками через отдельные расширения. Мой источник подключает ReManga: получает сведения о произведениях, списки глав и адреса страниц. Библиотека и само чтение остаются в приложении на Android.

За основу взял существующий источник и систему расширений Keiyoushi с её форками. Первая сборка в моём репозитории появилась 30 октября. Тогда она обращалась к прежнему API ReManga — дальше буду называть его v1.

В ней были каталог, популярные произведения, последние обновления, поиск и фильтры, сведения о произведении и главы разных веток переводчиков. Сборку APK и выпуск обновлений сразу автоматизировал через GitHub Actions.

Потом сайт перешёл на v2

3 ноября прежние адреса API стали возвращать 404. Пришлось перевести источник на API v2.

Поменялись не только адреса запросов. У каталога и списка глав стала другой структура ответа и переходов между страницами. Карточка произведения тоже стала возвращаться в другом виде, а адреса изображений потребовалось собирать с учётом сервера, указанного в ответе.

После перехода нашлась ещё одна особенность: сведения об авторах приходили списком, хотя раньше ожидалась структура с разделением по ролям. Это приводило к ошибке разбора данных. Добавил поддержку обоих вариантов.

Здесь важно различать две нумерации: v1 и v2 — версии API сайта, а 1.6.201 — версия сборки расширения. Последняя опубликована 3 ноября и остаётся актуальной на момент этой записи, 5 ноября.

А для ошибок появился свой сборщик логов

Диагностику развивал параллельно. Сначала ошибки сохранялись на самом устройстве: что не загрузилось, какой ответ пришёл, где возник сетевой сбой. Уже к 1 ноября добавил отправку на свой небольшой сайт для сбора логов.

Так рядом с расширением появилась ещё одна задача: собрать сведения об ошибке в одном месте, чтобы разбирать её по конкретным данным. По сообщению «не открывается» трудно понять, сломался ли запрос к API, загрузка картинки или вместо данных пришла страница защиты сайта.

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

Отправить журнал можно вручную из настроек источника. Автоматическая отправка — отдельный переключатель, по умолчанию он выключен. Журнал можно посмотреть и очистить.

Что сейчас и что дальше

У проекта есть релиз 1.6.201, APK для установки и репозиторий обновлений. Сохраняются каталог, поиск, фильтры и главы разных переводчиков. Закрытые главы отмечаются отдельно; их наличие в списке не означает, что страницы доступны для чтения.

Есть работа с ExManga для глав, доступных там, но часть запросов требует аккаунта и зависит от условий самого сайта. Работа всего источника тоже зависит от ReManga, API и серверов изображений.

Следующая отдельная задача — починить открытие через WebView. Пока фиксирую её как открытую проблему: причину и результат проверки нужно будет описать после воспроизведения и исправления.

Исходники и история изменений — в mihon-remanga на GitHub. Для ручной установки есть постоянная ссылка на последний APK.

На странице ReManga для Mihon — подробное описание, инструкция по установке и ссылки на скачивание. В каталоге проект находится в разделе «Разное».

Есть что добавить?

Ваш email не публикуется. Обязательные поля отмечены *