Python package for parsing russian anime players
Project description
AnimeParsers
Описание
Данный проект нацелен на создание наиболее широкого спектра парсеров на python для различных аниме-плееров в русскоязычном/снг сегменте
Что есть на данный момент
- Парсер Kodik (автоматическое получение api ключа)
- Парсер AniBoom (на основе animego, не требует api ключей)
Установка
pip install anime-parsers-ru
Инструкция к парсерам
Оглавление
Kodik инструкция
[!TIP] В большинстве случаев в комментариях к функциям описаны шаблоны и возможные значения возвращаемых данных
-
Установите и импортируйте библиотеку
pip install anime-parsers-ru
from anime_parsers_ru import KodikParser parser = KodikParser(<ваш api ключ>) # Если нет ключа, оставьте пустым
-
Поиск аниме по названию
parser.search("Наруто") # список словарей
Возвращает словарь из аниме и их данных (см. комментарии к функции)
-
Получить информацию об аниме
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") # список словарей
- Получить отдельно кол-во серий:
-
Прямая ссылка на видеофайл
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)
- Ссылка
Пример:
//cloud.kodik-storage.com/useruploads/67b6e546-e51d-43d2-bb11-4d8bfbedc2d7/d6f4716bc90bd30694cf09b0062d07a2:2024062705/
К данной ссылке в начале нужно добавитьhttp:
илиhttps:
, а в конце качество.mp4 (720.mp4
) (Обычно доступны следующие варианты качества:360
,480
,720
) - Максимально возможное качество
Прим:
720
(1280x720)
- Ссылка
Пример:
[!IMPORTANT] В случае, если аниме является фильмом или содержит только одну серию, в параметр
seria_num
указывается значение0
. В случае если перевод/субтитры неизвестны или нет выбора, в параметрtranslation_id
указывается значение"0"
- Получить токен
parser.get_token() # строка # Или KodikParser.get_token()
Использует один из скриптов кодика в котором указан api ключ, поэтому может не работать из-за внесенных изменений
AniBoom инструкция
-
Установите и импортируйте библиотеку
pip install anime-parsers-ru
from anime_parsers_ru import AniboomParser parser = AniboomParser()
-
Поиск по названию
- Быстрый поиск
parser.fast_search("Название аниме")
Возвращает список из словарей в виде:
[ { "title": "Название аниме", "year": "Год выпуска", "other_title": "Другое название(оригинальное название)", "type": "Тип аниме (ТВ сериалфильм, ...)", "link": "Ссылка на страницу с информацией", "animego_id": "id на анимего (по сути в ссылке на страницу с информацией последняя цифра и есть id)" }, ]
- Поиск с дополнительной информацией / Расширенный поиск
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)" }, ]
-
Данные по эпизодам. Если в аниме 1 эпизод или это фильм, то данных по эпизодам может не быть.
parser.episodes_info('ссылка на страницу аниме на animego.org') # Ссылка доступна из поиска по ключу 'link'
Возвращает отсортированный по номеру серии список:
[ { "num": "Номер эпизода", "title": "Название эпизода", "date": "Даты выхода (предполагаемые если анонс)", "status": "'вышло' или 'анонс' (Имеется в виду вышло в оригинале, не переведено)" }, ]
-
Данные по аниме (как в полном/расширенном поиске)
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)" },
-
Данные по переводам (которые есть в плеере aniboom)
parser.get_translation_info('animego_id') # Ссылка доступна из поиска по ключу 'animego_id'
Возвращает список словарей:
[ { "name": "Название студии озвучки", "translation_id": "id перевода в плеере aniboom" } ]
-
Получить контент файла 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 файла
[!IMPORTANT] В случае, если аниме является фильмом или содержит только одну серию, в параметр
episode_num
указывается значение0
.
- Сохранить 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 - имя файля или путь
Сохраняет файл по указанному имени/пути
[!IMPORTANT] В случае, если аниме является фильмом или содержит только одну серию, в параметр
episode_num
указывается значение0
.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for anime_parsers_ru-1.2.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c1a0902d22aac2447f0b733433deeb379b46fda915fa431821d264e84db6a745 |
|
MD5 | f3143496c4050a0283fd0aa944d32742 |
|
BLAKE2b-256 | d24a0398d3bfcd2c92dd045a92f61ab62bde283991e33e5b463201b2dd605607 |