Перед вами микросервис, который предоставляет API для сбора комиксов в интернете. Главной его особенностью заключается то, что он способен дать вам возможность загрузить любой комикс на офлайн носитель и наслаждаться вашим любимым чтивом в любом месте, где вы пожелаете!
Микросервис способен через сервис синхронизации файлов через электронную почту PocketBook отправлять вам ваши любимые произведения прямо на электронную книгу. Очень хорошо подойдет людям, которые очень любят гаджеты с поддержкой электронных чернил.
На данный момент сервис поддерживает 2 сайта:
- mangalib.me (русский перевод)
- mangadex.com (большой набор языков)
Для запуска микросервиса необходимо расположить конфигурирующий yaml файл с секретами по следующему пути:
./internal/config/flags/values_local.yaml
Либо указать путь к файлу с секретами можно при помощи env переменной ENV_FILE_NAME
.
Путь желательно использовать абсолютный.
Пример файла конфигурации выглядит так:
env:
- name: email_account
value: example@mail.example
- name: email_password
value: xxxxxxxxxxxxxxxxx
- name: db_dsn
value: postgres:///
- name: http_retry_duration
value: 1s
- name: listen_port
value: 80
- name: server_ip
value: 127.0.0.1
email_accoun
переменная отвечает за адрес электронной почты, откуда будут отправляться файлы на электронную книгу.
email_password
переменная содержит в себе пароль для электронной почты.
Для вышеописанных переменных рекомендуется иметь аккаунт mail.ru.
db_dsn
-- ссылка для подключения к базе данных.
Поддерживаются следующие методы:
- GetChapterList (GET)
- GetChapterPagesPDF (GET)
- GetChapterPages (GET)
- SendToEbook (POST)
После локального запуска, будет доступен swagger, где можно опробовать почти каждый метод.
GetChapterPagesPDF метод не доступен в swagger, так как тот не может нормально отобразить PDF файл.
Get запрос, который выдает ссылки на главы комикса.
Важное замечание: для сайта mangalib.me нужно учитывать, что принимаются ссылки, которые ведут сразу на секцию с главами.
Пример запроса:
curl --location 'localhost/api/manga/GetChapterList?manga_url=https%3A%2F%2Fmangalib.me%2Fo-ju-yesuyeo%3Fsection%3Dchapters'
Пример ответа:
{
"chapter_urls": [
"https://mangalib.me/o-ju-yesuyeo/v1/c1",
"https://mangalib.me/o-ju-yesuyeo/v1/c2",
"https://mangalib.me/o-ju-yesuyeo/v1/c3",
"https://mangalib.me/o-ju-yesuyeo/v1/c4",
"https://mangalib.me/o-ju-yesuyeo/v1/c5",
...
],
"manga_name": "o-ju-yesuyeo",
"total": 114
}
Get запрос, который выдает картинки конкретной главы в бинарном виде. Обычна эта ручка используется для дальнейшей передачи другим клиенстким сервисам изображения, чтобы те собрали статью или любое другое удобное для пользователя представление картинки.
На вход в query запрос принимает person_id -- любой текст, который различается для разных пользователей. Главная роль этого поля заключается в том, что в таком случае исключается гонка потоков при скачивании одной манги несколькими пользователями.
Пример запроса:
curl --location 'localhost/api/manga/GetChapterPages?chapter_url=https%3A%2F%2Fmangalib.me%2Fdugeundugeun-gonglyaggi%2Fv2%2Fc37&person_id=matvey'
Пример ответа:
{
"pages": [
{
"images": "/9j/...",
"file_name": "img0.png"
},
...
],
"total": 7,
"manga_name": "dugeundugeun-gonglyaggi"
}
Get запрос, который делает то же самое, что и GetChapterPages
за исключением того, что на выходе собирается pdf файл, который сразу можно посмотреть в браузере.
POST запрос, который отправляет собранную мангу на электронную книгу.
ВНИМАНИЕ: для успешного использования этим методом необходимо иметь в базе данных запись о пользователе, у которого указана электронная почта сервиса синхронизации файлов по электронной почте PocketBook.
Пример запроса:
{
"chapter_url": "https://mangalib.me/the-leon-wei/v1/c70",
"person": {
// подходит для запроса любое из нижеперечисленных атрибутов
"person_id": "6a30c570-978a-4080-b686-e11f9195a6c2", // UUID пользователя в базе данных
"telegram_id":1123832, // telegram id пользователя, записанное в базе данных
}
}