Skip to main content

Python package for parsing russian anime players

Project description

AnimeParsers

Описание

Данный проект нацелен на создание наиболее широкого спектра парсеров на python для различных аниме-плееров в русскоязычном/снг сегменте

Что есть на данный момент

  • Парсер Kodik (автоматическое получение api ключа)
  • Парсер AniBoom (на основе animego, не требует api ключей)

Установка

pip install anime-parsers-ru

Инструкция к парсерам

Оглавление

Kodik инструкция

[!TIP] В большинстве случаев в комментариях к функциям описаны шаблоны и возможные значения возвращаемых данных

  1. Установите и импортируйте библиотеку

    pip install anime-parsers-ru
    
    from anime_parsers_ru.parser_kodik import KodikParser
    
    parser = KodikParser(<ваш api ключ>) # Если нет ключа, оставьте пустым
    
  2. Поиск аниме по названию

    parser.search("Наруто") # список словарей
    

    Возвращает словарь из аниме и их данных (см. комментарии к функции)

  3. Получить информацию об аниме

    parser.get_info("z20", "shikimori") # Информация по "Наруто"
    

    Возвращает:

    {
        "series_count": 220, 
        "translations": [
            {"id": "735", "type": "Озвучка", "name": "2x2 (220 эп.)"}, 
            {"id": "609", "type": "Озвучка", "name": "AniDUB (220 эп.)"}, 
            {"id": "869", "type": "Субтитры", "name": "Субтитры (220 эп.)"}, 
            {"id": "958", "type": "Озвучка", "name": "AniRise (135 эп.)"}, 
            {"id": "2550", "type": "Озвучка", "name": "ANI.OMNIA (8 эп.)"}
        ]
    }
    
    • Получить отдельно кол-во серий:
      parser.series_count("z20", "shikimori") # число
      
    • Получить отдельно переводы:
      parser.translations("z20", "shikimori") # список словарей
      
  4. Прямая ссылка на видеофайл

    parser.get_link(
        id="z20", 
        id_type="shikimori", 
        seria_num=1, 
        translation_id="609") # Кортеж
    

    Возвращает кортеж: ("//cloud.kodik-storage.com/useruploads/67b6e546-e51d-43d2-bb11-4d8bfbedc2d7/d6f4716bc90bd30694cf09b0062d07a2:2024062705/", 720)

    1. Ссылка Пример: //cloud.kodik-storage.com/useruploads/67b6e546-e51d-43d2-bb11-4d8bfbedc2d7/d6f4716bc90bd30694cf09b0062d07a2:2024062705/ К данной ссылке в начале нужно добавить http: или https:, а в конце качество.mp4 (720.mp4) (Обычно доступны следующие варианты качества: 360, 480, 720)
    2. Максимально возможное качество Прим: 720 (1280x720)

[!IMPORTANT] В случае, если аниме является фильмом или содержит только одну серию, в параметр seria_num указывается значение 0. В случае если перевод/субтитры неизвестны или нет выбора, в параметр translation_id указывается значение "0"

  1. Получить токен
    parser.get_token() # строка
    # Или
    KodikParser.get_token()
    
    Использует один из скриптов кодика в котором указан api ключ, поэтому может не работать из-за внесенных изменений

AniBoom инструкция

  1. Установите и импортируйте библиотеку

    pip install anime-parsers-ru
    
    from anime_parsers_ru.parser_aniboom import AniboomParser
    
    parser = AniboomParser()
    
  2. Поиск по названию

    1. Быстрый поиск
    parser.fast_search("Название аниме")
    

    Возвращает список из словарей в виде:

    [
            {
                "title": "Название аниме",
                "year": "Год выпуска",
                "other_title": "Другое название(оригинальное название)",
                "type": "Тип аниме (ТВ сериалфильм, ...)",
                "link": "Ссылка на страницу с информацией",
                "animego_id": "id на анимего (по сути в ссылке на страницу с информацией последняя цифра и есть id)"
            },
        ]
    
    1. Поиск с дополнительной информацией / Расширенный поиск
    parser.search("Название аниме")
    

    Возвращает список из словарей:

    [
        {
            "title": "Название",
            "other_titles": ["Альтернативное название 1", "..."],
            "status": "Статус аниме (онгоинг, анонс, вышел, ...)",
            "type": "Тип аниме (ТВ сериал, фильм, ...)",
            "genres": ["Жанр1", "Жанр2", "..."],
            "description": "описание",
            "episodes": "если аниме вышло, то количество серий, если еще идет, то 'вышло / всего'",
            "episodes_info": [
                {
                    "num": "Номер эпизода",
                    "title": "Название эпизода",
                    "date": "Даты выхода (предполагаемые если анонс)
                    'status': 'вышло' или 'анонс' (Имеется в виду вышло в оригинале, не переведено)",
                },
            ],
            "translations": [
                {
                    "name": "Название студии",
                    "translation_id": "id перевода в плеере aniboom"
                },
            ],
            "poster_url": "Ссылка на постер аниме",
            "trailer": "Ссылка на ютуб embed трейлер",
            "screenshots": [
                "Список ссылок на скриншоты"
            ],
            "other_info": {
                // Данная информация может менятся в зависимости от типа или состояния тайтла
                "Возрастные ограничения": "(прим: 16+)",
                "Выпуск": "(прим: с 2 апреля 2024)",
                "Главные герои": ["Список главных героев"],
                "Длительность": "(прим: 23 мин. ~ серия)",
                "Первоисточник": "(прим: Легкая новвела)",
                "Рейтинг MPAA": "(прим: PG-13)",
                "Сезон": "(прим. Весна 2024)",
                "Снят по ранобэ": "название ранобэ (Или так же может быть 'Снят по манге')",
                "Студия": "название студии"
            },
            "link": "Ссылка на страницу с информацией",
            "animego_id": "id на анимего (по сути в ссылке на страницу с информацией последняя цифра и есть id)"
        },
    ]
    
  3. Данные по эпизодам

    parser.episodes_info('ссылка на страницу аниме на animego.org') # Ссылка доступна из поиска по ключу 'link'
    

    Возвращает отсортированный по номеру серии список:

    [   
        {
            "num": "Номер эпизода",
            "title": "Название эпизода",
            "date": "Даты выхода (предполагаемые если анонс)",
            "status": "'вышло' или 'анонс' (Имеется в виду вышло в оригинале, не переведено)"
        },
    ]
    
  4. Данные по аниме (как в полном/расширенном поиске)

    parser.anime_info('ссылка на страницу аниме на animego.org') # Ссылка доступна из поиска по ключу 'link'
    

    Возвращает словарь:

    {
        "title": "Название",
        "other_titles": ["Альтернативное название 1", "..."],
        "status": "Статус аниме (онгоинг, анонс, вышел, ...)",
        "type": "Тип аниме (ТВ сериал, фильм, ...)",
        "genres": ["Жанр1", "Жанр2", "..."]
        "description": "описание",
        "episodes": "если аниме вышло, то количество серий, если еще идет, то 'вышло / всего'",
        "episodes_info": [
            {
                "num": "Номер эпизода",
                "title": "Название эпизода",
                "date": "Даты выхода (предполагаемые если анонс)
                'status': 'вышло' или 'анонс' (Имеется в виду вышло в оригинале, не переведено)",
            },
        ],
        "translations": [
            {
                "name": "Название студии",
                "translation_id": "id перевода в плеере aniboom"
            },
        ],
        "poster_url": "Ссылка на постер аниме",
        "trailer": "Ссылка на ютуб embed трейлер",
        "screenshots": [
            "Список ссылок на скриншоты"
        ],
        "other_info": {
            // Данная информация может менятся в зависимости от типа или состояния тайтла
            "Возрастные ограничения": "(прим: 16+)",
            "Выпуск": "(прим: с 2 апреля 2024)",
            "Главные герои": ["Список главных героев"],
            "Длительность": "(прим: 23 мин. ~ серия)",
            "Первоисточник": "(прим: Легкая новвела)",
            "Рейтинг MPAA": "(прим: PG-13)",
            "Сезон": "(прим. Весна 2024)",
            "Снят по ранобэ": "название ранобэ (Или так же может быть 'Снят по манге')",
            "Студия": "название студии"
        },
        "link": "Ссылка на страницу с информацией",
        "animego_id": "id на анимего (по сути в ссылке на страницу с информацией последняя цифра и есть id)"
    },
    
  5. Данные по переводам (которые есть в плеере aniboom)

    parser.get_translation_info('animego_id') # Ссылка доступна из поиска по ключу 'animego_id'
    

    Возвращает список словарей:

    [
        {
            "name": "Название студии озвучки",
            "translation_id": "id перевода в плеере aniboom"
        }
    ]
    
  6. Получить контент файла mpd (mp4 файл разбитый на чанки) в виде строки. При сохранении данной строки в .mpd файл и при открытии его плеером, котрый поддерживает такой формат (прим: VLC PLayer), можно смотреть серию без рекламы. Обратите внимание, что в данном файле находятся именно ссылки на чанки, а не само видео, поэтому потребуется доступ в интернет. (Вы можете использовать ffmpeg для конвертации этого файла в mp4 формат)

    parser.get_mpd_playlist('animego_id', 'episode_num', 'translation_id')
    # animego_id можно найти в результате поиска по ключу 'animego_id' (либо взять последние цифры в ссылке на страницу аниме на animego.org)
    # episode_num - номер вышедшего эпизода (нужно чтобы эпизод вышел именно с выбранной озвучкой)
    # translation_id - id перевода в базе aniboom (Можно найти либо в результате поиска, либо через anime_info, лмбо через get_translation_info)
    

    Возвращает строку - контент mpd файла

  7. Сохранить mpd файл (Дополняет предыдущую функцию get_mpd_playlist)

    parser.get_as_file('animego_id', 'episode_num', 'translation_id', 'filename')
    # animego_id можно найти в результате поиска по ключу 'animego_id' (либо взять последние цифры в ссылке на страницу аниме на animego.org)
    # episode_num - номер вышедшего эпизода (нужно чтобы эпизод вышел именно с выбранной озвучкой)
    # translation_id - id перевода в базе aniboom (Можно найти либо в результате поиска, либо через anime_info, лмбо через get_translation_info)
    # filename - имя файля или путь
    

    Сохраняет файл по указанному имени/пути

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

anime_parsers_ru-1.2.1.tar.gz (21.2 kB view hashes)

Uploaded Source

Built Distribution

anime_parsers_ru-1.2.1-py3-none-any.whl (20.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page