Skip to content

whitewolf185/mangaParser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Сервис по сбору тематических изображений

Описание

Перед вами микросервис, который предоставляет 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 -- ссылка для подключения к базе данных.

API

Поддерживаются следующие методы:

  • GetChapterList (GET)
  • GetChapterPagesPDF (GET)
  • GetChapterPages (GET)
  • SendToEbook (POST)

После локального запуска, будет доступен swagger, где можно опробовать почти каждый метод.

GetChapterPagesPDF метод не доступен в swagger, так как тот не может нормально отобразить PDF файл.

GetChapterList (GET)

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
}

GetChapterPages (GET)

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"
}

GetChapterPagesPDF (GET)

Get запрос, который делает то же самое, что и GetChapterPages за исключением того, что на выходе собирается pdf файл, который сразу можно посмотреть в браузере.

SendToEbook (POST)

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 пользователя, записанное в базе данных
    }
}

Releases

No releases published

Packages

 
 
 

Languages