Skip to content

Latest commit

 

History

History
1473 lines (1232 loc) · 77.8 KB

api_v2.md

File metadata and controls

1473 lines (1232 loc) · 77.8 KB

AniLibria API – v2.13.18

⚠️ Внимание:

После выхода версии v2.13.0 поддержка всех предыдущих версий API до v2.12.0 была прекращена!

В связи с переходом на новый бэкэнд сайта с существенными изменениями в архитектуре проекта.

  • RestAPIДокументация по RestAPI
  • WebSocketДокументация по WebSocket

RestAPI

http(s)://api.anilibria.tv/v2/

Список методов:

Открытые методы

  • getTitleПолучить информацию о тайтле
  • getTitlesПолучить информацию о нескольких тайтлах сразу
  • getUpdatesСписок тайтлов, отсортированные по времени добавления нового релиза
  • getChangesСписок тайтлов, отсортированные по времени изменения
  • getScheduleРасписание выхода тайтлов, отсортированное по дням недели
  • getRandomTitleВозвращает случайный тайтл из базы
  • getYouTubeИнформация о вышедших роликах на наших YouTube каналах в хронологическом порядке
  • getFeedСписок обновлений тайтлов и роликов на наших YouTube каналах в хронологическом порядке
  • getYearsВозвращает список годов выхода доступных тайтлов по возрастанию
  • getGenresВозвращает список всех жанров по алфавиту
  • getCachingNodesВозвращает список кеш серверов, с которых можно брать данные
  • getTeamВозвращает список участников команды, когда-либо существовавших на проекте.
  • getSeedStatsВозвращает список пользователей и их статистику на трекере.
  • getRSSВозвращает список обновлений на сайте в одном из форматов RSS ленты
  • searchTitlesВозвращает список найденных по фильтрам тайтлов
  • advancedSearchПоиск информации по продвинутым фильтрам с поддержкой сортировки

Пользовательские методы, требующие авторизации

  • getFavoritesВозвращает список избранных тайтлов пользователя
  • addFavoriteДобавляет тайтл в список избранных
  • delFavoriteУдаляет тайтл из списка избранных

Описание методов:

• getTitle

Получить информацию о тайтле по id или коду

GET /v2/getTitle

Все доступные параметры

Параметр Тип Описание По умолчанию
id int ID тайтла
code string Код тайтла
torrent_id int ID торрент файла
filter string, ... Список значений, которые будут в ответе
remove string, ... Список значений, которые будут удалены из ответа
include string, ... Список типов файлов, которые будут возвращены в виде base64 строки подробнее
description_type string Тип получаемого описания, подробнее plain
playlist_type string Формат получаемого списка серий, object или array object

В параметрах filter и remove можно указать полный путь до ключа, который вы хотите оставить или удалить, например: names.alternative или team.voice[0]. С версии 2.8 появилась возможность получать значения одного ключа во всех объектах в массиве, например: torrents.list[*].torrent_id

Примеры запросов

/v2/getTitle?id=8500&filter=posters,type,status,player.playlist.24
/v2/getTitle?code=nanatsu-no-taizai-kamigami-no-gekirin

Пример ответа

{
    "id": 8500,
    "code": "nanatsu-no-taizai-kamigami-no-gekirin",
    "names": {
        "ru": "Семь смертных грехов: Гнев богов ТВ-3",
        "en": "Nanatsu no Taizai: Kamigami no Gekirin TV-3",
        "alternative": null
    },
    "announce": "В 24 серии замена войсера. В течение недели будет исправление.",
    "status": {
        "string": "Завершен",
        "code": 2
    },
    "posters": {
        "small": {
            "url": "/storage/releases/posters/8500/W4Q1mG49XVQnOUnc.jpg",
            "raw_base64_file": null
        },
        "medium": {
            "url": "/storage/releases/posters/8500/W4Q1mG49XVQnOUnc.jpg",
            "raw_base64_file": null
        },
        "original": {
            "url": "/storage/releases/posters/8500/W4Q1mG49XVQnOUnc.jpg",
            "raw_base64_file": null
        }
    },
    "updated": 1585249972,
    "last_change": 1642539074,
    "type": {
        "full_string": "ТВ (24 эп.), 25 мин.",
        "code": 1,
        "string": "TV",
        "series": 24,
        "length": 25
    },
    "genres": [
        "Магия",
        "Приключения",
        "Сверхъестественное",
        "Сёнен",
        "Экшен"
    ],
    "team": {
        "voice": [
            "Anzen",
            "Cleo-chan",
            "Hekomi",
            "Kari",
            "Sharon"
        ],
        "translator": [
            "Anku"
        ],
        "editing": [
            "mutagenb"
        ],
        "decor": [],
        "timing": [
            "Alkhorus"
        ]
    },
    "season": {
        "string": "осень",
        "code": 4,
        "year": 2019,
        "week_day": 4
    },
    "description": "Продолжение аниме «Семь смертных грехов» расскажет нам о том, как Грехи продолжают противостояние с Десятью Заповедями. Мелиодасу и Элизабет предстоит вновь испытать свою судьбу в новых приключениях и сражениях, а также открыть секрет этого мира.",
    "in_favorites": 10333,
    "blocked": {
        "blocked": false,
        "bakanim": false
    },
    "player": {
        "alternative_player": "//kodik.info/serial/19248/803944eb832adacd4d4bec7d4221f941/720p?translations=false",
        "host": "de4.libria.fun",
        "series": {
            "first": 1,
            "last": 24,
            "string": "1-24"
        },
        "playlist": {
            "1": {
                "serie": 1,
                "created_timestamp": 1570809272,
                "preview": null,
                "skips": {
                    "opening": [],
                    "ending": []
                },
                "hls": {
                    "fhd": "/videos/media/ts/8500/1/1080/6a6fc29f9428b2dcc8ce74ad21bb1cca.m3u8",
                    "hd": "/videos/media/ts/8500/1/720/8e5d9ba9e79d80ca6b6db6e6e375b4bb.m3u8",
                    "sd": "/videos/media/ts/8500/1/480/93048587fb765c9f2077ca7adad9457e.m3u8"
                }
            },
            ...
    },
    "torrents": {
        "series": {
            "first": 1,
            "last": 24,
            "string": "1-24"
        },
        "list": [
            {
                "torrent_id": 10725,
                "series": {
                    "first": 1,
                    "last": 24,
                    "string": "1-24"
                },
                "quality": {
                    "string": "WEBRip 1080p",
                    "type": "WEBRip",
                    "resolution": "1080p",
                    "encoder": "h264",
                    "lq_audio": null
                },
                "leechers": 1,
                "seeders": 17,
                "downloads": 10692,
                "total_size": 35521275317,
                "url": "/public/torrent/download.php?id=10725",
                "uploaded_timestamp": 1590483840,
                "hash": "e45884bf43636bf61512a6c5eb1b7b9b0e84a925",
                "metadata": null,
                "raw_base64_file": null
            },
            ...
        ]
    }
}

• getTitles

Получить информацию о тайтле по id или коду

GET /v2/getTitles

Все доступные параметры

Параметр Тип Описание По умолчанию
id_list string, ... Список ID тайтлов
code_list string, ... Список кодов тайтла
filter string, ... Список значений, которые будут в ответе
remove string, ... Список значений, которые будут удалены из ответа
include string, ... Список типов файлов, которые будут возвращены в виде base64 строки подробнее
description_type string Тип получаемого описания, подробнее plain
playlist_type string Формат получаемого списка серий, object или array object

В параметрах filter и remove можно указать полный путь до ключа, который вы хотите оставить или удалить, например: names.alternative или team.voice[0]. С версии 2.8 появилась возможность получать значения одного ключа во всех объектах в массиве, например: torrents.list[*].torrent_id

Примеры запросов

/v2/getTitles?id_list=8500,8644&filter=posters,type,status,player.playlist.24
/v2/getTitles?code_list=nanatsu-no-taizai-kamigami-no-gekirin

Пример ответа

[
    [Возвращаемые поля идентичны /getTitle],
    ...
]

• getUpdates

Получить список последних обновлений тайтлов

GET /v2/getUpdates

Все доступные параметры

Параметр Тип Описание По умолчанию
filter string, ... Список значений, которые будут в ответе
remove string, ... Список значений, которые будут удалены из ответа
include string, ... Список типов файлов, которые будут возвращены в виде base64 строки подробнее
limit int Количество объектов в ответе 5
since int Список тайтлов, у которых время обновления больше указанного timestamp
description_type string Тип получаемого описания, подробнее plain
playlist_type string Формат получаемого списка серий, object или array object
after int Удаляет первые n записей из выдачи

В параметрах filter и remove можно указать полный путь до ключа, который вы хотите оставить или удалить, например: names.alternative или team.voice[0]. С версии 2.8 появилась возможность получать значения одного ключа во всех объектах в массиве, например: torrents.list[*].torrent_id

Примеры запросов

/api/v2/getUpdates?filter=posters,type,status&limit=5
/api/v2/getUpdates?since=1590233417

Пример ответа

[
    [Возвращаемые поля идентичны /getTitle],
    ...
]

• getChanges

Получить список последних обновлений тайтлов

GET /v2/getChanges

Все доступные параметры

Параметр Тип Описание По умолчанию
filter string, ... Список значений, которые будут в ответе
remove string, ... Список значений, которые будут удалены из ответа
include string, ... Список типов файлов, которые будут возвращены в виде base64 строки подробнее
limit int Количество объектов в ответе 5
since int Список тайтлов, у которых время обновления больше указанного timestamp
description_type string Тип получаемого описания, подробнее plain
after int Удаляет первые n записей из выдачи

В параметрах filter и remove можно указать полный путь до ключа, который вы хотите оставить или удалить, например: names.alternative или team.voice[0]. С версии 2.8 появилась возможность получать значения одного ключа во всех объектах в массиве, например: torrents.list[*].torrent_id

Примеры запросов

/v2/getChanges?filter=posters,type,status&limit=5
/v2/getChanges?since=1590233417

Пример ответа

[
    [Возвращаемые поля идентичны /getTitle],
    ...
]

• getSchedule

Получить список последних обновлений тайтлов

GET /v2/getSchedule

Все доступные параметры

Параметр Тип Описание По умолчанию
filter string, ... Список значений, которые будут в ответе
remove string, ... Список значений, которые будут удалены из ответа
include string, ... Список типов файлов, которые будут возвращены в виде base64 строки подробнее
days string, ... Список дней недели на которые нужно расписание
description_type string Тип получаемого описания, подробнее plain
playlist_type string Формат получаемого списка серий, object или array object

В параметрах filter и remove можно указать полный путь до ключа, который вы хотите оставить или удалить, например: names.alternative или team.voice[0]. С версии 2.8 появилась возможность получать значения одного ключа во всех объектах в массиве, например: torrents.list[*].torrent_id

Счет дней недели идет с понедельника, где 0 - Понедельник, а 6 - Воскресенье.

Примеры запросов

/v2/getSchedule?filter=posters,type,status
/v2/getSchedule?days=5,6

Пример ответа

[
    {
        "day": 5,
        "list": [
            [Возвращаемые поля идентичны /getTitle],
            ...
        ]
    },{
        "day": 6,
        "list": [
            [Возвращаемые поля идентичны /getTitle],
            ...
        ]
    }
]

• getCachingNodes

Список кеш серверов с которых можно брать данные отсортированные по нагрузке Севера сортируются в реальном времени, по этому рекомендуется для каждого сервера использовать один из самых верхних серверов.

GET /v2/getCachingNodes

Примеры запросов

/v2/getCachingNodes

Пример ответа

[
    "de3.libria.fun",
    "de2.libria.fun",
    "de8.libria.fun",
    "de1.libria.fun",
    "de6.libria.fun"
]

• getRandomTitle

Возвращает случайный тайтл из базы

GET /v2/getRandomTitle

Все доступные параметры

Параметр Тип Описание По умолчанию
filter string, ... Список значений, которые будут в ответе
remove string, ... Список значений, которые будут удалены из ответа
include string, ... Список типов файлов, которые будут возвращены в виде base64 строки подробнее
description_type string Тип получаемого описания, подробнее plain
playlist_type string Формат получаемого списка серий, object или array object

В параметрах filter и remove можно указать полный путь до ключа, который вы хотите оставить или удалить, например: names.alternative или team.voice[0]. С версии 2.8 появилась возможность получать значения одного ключа во всех объектах в массиве, например: torrents.list[*].torrent_id

Примеры запросов

/v2/getRandomTitle

Пример ответа

{
    [Возвращаемые поля идентичны /getTitle],
}

• getYouTube

Информация о вышедших роликах на наших YouTube каналах в хронологическом порядке

GET /v2/getYouTube

Все доступные параметры

Параметр Тип Описание По умолчанию
filter string, ... Список значений, которые будут в ответе
remove string, ... Список значений, которые будут удалены из ответа
limit int Количество объектов в ответе 5
since int Список видеороликов, у которых время обновления больше указанного timestamp
after int Удаляет первые n записей из выдачи

В параметрах filter и remove можно указать полный путь до ключа, который вы хотите оставить или удалить, например: names.alternative или team.voice[0]. С версии 2.8 появилась возможность получать значения одного ключа во всех объектах в массиве, например: torrents.list[*].torrent_id

Примеры запросов

/v2/getYouTube?limit=10

Пример ответа

[
    {
        "id": 10861,
        "title": "АНИМЕ Своя игра с АниЛибрией (Люпин, Шарон, Зозя, Сахарочек, Рокетту, Никанор47)",
        "image": "https://img.youtube.com/vi/rvhfqzXXZaU/0.jpg",
        "youtube_id": "rvhfqzXXZaU",
        "comments": 29,
        "views": 7911,
        "timestamp": 1656844874
    },
    ...
}

• getFeed

Список обновлений тайтлов и роликов на наших YouTube каналах в хронологическом порядке

GET /v2/getFeed?filter=

Все доступные параметры

Параметр Тип Описание По умолчанию
filter string, ... Список значений, которые будут в ответе
remove string, ... Список значений, которые будут удалены из ответа
include string, ... Список типов файлов, которые будут возвращены в виде base64 строки подробнее
limit int Количество объектов в ответе 5
since int Список тайтлов, у которых время обновления больше указанного timestamp
description_type string Тип получаемого описания, подробнее plain
playlist_type string Формат получаемого списка серий, object или array object
after int Удаляет первые n записей из выдачи

В параметрах filter и remove можно указать полный путь до ключа, который вы хотите оставить или удалить, например: names.alternative или team.voice[0]. С версии 2.8 появилась возможность получать значения одного ключа во всех объектах в массиве, например: torrents.list[*].torrent_id

Примеры запросов

/v2/getFeed?limit=10

Пример ответа

[    
    {
        "youtube": {
            [Возвращаемые поля идентичны /getYouTube]
        }
    },
    {
        "youtube": {
            [Возвращаемые поля идентичны /getYouTube]
        }
    },
    {
        "title": {
            [Возвращаемые поля идентичны /getTitle]
        }
    },
    ...
]

• getYears

Возвращает список годов выхода доступных тайтлов отсортированный по возрастанию

GET /v2/getYears

Примеры запросов

/v2/getYears

Пример ответа

[
    1996,
    1998,
    2001,
    2003,
   ...
]

• getGenres

Возвращает список жанров доступных тайтлов отсортированный по алфавиту

GET /v2/getGenres

Все доступные параметры

Параметр Тип Описание По умолчанию
sorting_type int Тип сортировки элементов 0
0 - Сортировка по алфавиту
1 - Сортировка по рейтингу

Примеры запросов

/v2/getGenres

Пример ответа

[
    "боевые искусства",
    "вампиры",
    "демоны",
    ...
]

• searchTitles

Возвращает список найденных по фильтрам тайтлов

GET /v2/searchTitles

Все доступные параметры

Параметр Тип Описание По умолчанию
search string, ... Поиск по именам и описанию
year string, ... Список годов выхода
season_code string, ... Список сезонов, подробнее
genres string, ... Список жанров
voice string, ... Список войсеров через запятую
translator string, ... Список переводчиков
editing string, ... Список сабберов
decor string, ... Список оформителей
timing string, ... Список таймеров
filter string, ... Список значений, которые будут в ответе
remove string, ... Список значений, которые будут удалены из ответа
include string, ... Список типов файлов, которые будут возвращены в виде base64 строки подробнее
description_type string Тип получаемого описания, подробнее plain
playlist_type string Формат получаемого списка серий, object или array object
limit int Количество объектов в ответе 5
after int Удаляет первые n записей из выдачи

Примеры запросов

/v2/searchTitles?search=cудьба апокреф&voice=Amikiri,Silv,Hekomi&filter=id,names,team,genres[0]&limit=10

Поиск идет по неточному совпадению, так что опечатки допустимы.

Пример ответа

{
    [Возвращаемые поля идентичны /getTitle]
}

• advancedSearch

Возвращает список найденных по фильтрам тайтлов

GET /v2/advancedSearch

Все доступные параметры

Параметр Тип Описание По умолчанию
query string Обязательный параметр Фильтр, по которому будет идти выборка, подробнее
filter string, ... Список значений, которые будут в ответе
remove string, ... Список значений, которые будут удалены из ответа
include string, ... Список типов файлов, которые будут возвращены в виде base64 строки подробнее
description_type string Тип получаемого описания, подробнее plain
playlist_type string Формат получаемого списка серий, object или array object
limit int Количество объектов в ответе, подробнее 5
after int Удаляет первые n записей из выдачи
order_by string Ключ, по которому будет происходить сортировка результатов
sort_direction int Направление сортировки. 0 - По возрастанию, 1 - По убыванию 0

Примеры запросов

/v2/advancedSearch?query={season.code} == 1 and {season.year} == 2020&filter=id,names,in_favorites&order_by=in_favorites&sort_direction=0

Пример ответа

{
    [Возвращаемые поля идентичны /getTitle]
}

• getTeam

Возвращает список участников команды когда-либо существовавших на проекте.

GET /v2/getTeam

Примеры запросов

/v2/getTeam

Пример ответа

{
    "team": {
        "voice": [...],
        "translator": [...],
        "editing": [...],
        "decor": [...],
        "timing": [...]
    }
}

• getSeedStats

Возвращает топ пользователей по количеству загруженного и скачанного через наш торрент трекер.

GET /v2/getSeedStats

Все доступные параметры

Параметр Тип Описание По умолчанию
users string, ... Статистика по имени пользователя
filter string, ... Список значений, которые будут в ответе
remove string, ... Список значений, которые будут удалены из ответа
limit int Количество объектов в ответе 5
after int Удаляет первые n записей из выдачи
sort_by string По какому полю производить сортировку, допустимые значения: downloaded, uploaded, user
order int Направление сортировки 0 - DESC, 1 - ASC

Примеры запросов

/v2/getSeedStats?users=T1MOX4

Пример ответа

[
    {
        "downloaded": 72110162198,
        "uploaded": 1163165762554,
        "user": "T1MOX4"
    }
]

• getRSS

Возвращает список обновлений на сайте в одном из форматов RSS ленты

GET /v2/getRSS

Все доступные параметры

Параметр Тип Описание По умолчанию
rss_type string Предпочитаемый формат вывода rss
session string Уникальный идентификатор сессии пользователя
limit int Количество объектов в ответе 10
since int Список тайтлов, у которых время обновления больше указанного timestamp
after int Удаляет первые n записей из выдачи
  • Если указан верный параметр session, то загрузка торрентов будет происходить от имени вашего аккаунта, и вам будет начисляться статистика.
  • В случае если ключ указан неверно торрент клинт будет возвращать ошибку о неправильном формате торрента.

Примеры запросов

/v2/getRSS?rss_type=atom&limit=5

Пример ответа

<rss version="2.0">
    <channel>
        <title>Самое свежее на AniLibria.TV</title>
        <link>https://anilibria.tv/</link>
        <description>Самое свежие релизы AniLibria.TV</description>
        <lastBuildDate>Wed, 07 Apr 2021 17:59:24 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>AniLibria API v2.11.2</generator>
        <language>ru</language>
        <item>
            <title>
            <![CDATA[ Золотое божество 3 / Golden Kamuy 3 | 1-8 [WEBRip 1080p HEVC] ]]>
            </title>
            <link>https://www.anilibria.tv/release/golden-kamuy-3.html</link>
            <guid>12848</guid>
            <pubDate>Tue, 08 Dec 2020 13:50:54 GMT</pubDate>
            <description>
            <![CDATA[ Сугимото отправляется на поиски Асирпы в Карафуто. Также в этом сезоне мы увидим русских солдат, бой с росомахами, путешествующие труппы, харакири, разборки самураев и самое главное — мы узнаем историю и истинные мотивы отца Асирпы. Произойдёт много событий, которые приведут к закрытию некоторых сюжетных арок. ]]>
            </description>
            <enclosure length="2258151277" type="application/x-bittorrent" url="https://static.anilibria.tv/upload/torrents/12848.torrent"/>
        </item>
        ...
    </channel>
</rss>

Пользовательские методы, для которых нужна авторизация

• getFavorites

Возвращает список избранных тайтлов пользователя

GET /v2/getFavorites

Все доступные параметры

Параметр Тип Описание Обязательный
session string Уникальный идентификатор сессии пользователя +
filter string, ... Список значений, которые будут в ответе
remove string, ... Список значений, которые будут удалены из ответа
include string, ... Список типов файлов, которые будут возвращены в виде base64 строки подробнее
description_type string Тип получаемого описания, подробнее plain
playlist_type string Формат получаемого списка серий, object или array object

В параметрах filter и remove можно указать полный путь до ключа, который вы хотите оставить или удалить, например: names.alternative или team.voice[0]. С версии 2.8 появилась возможность получать значения одного ключа во всех объектах в массиве, например: torrents.list[*].torrent_id

Примеры запросов

/v2/getFavorites?session=qwertyqwertyqwerty1234567890

Пример ответа

[
    [Возвращаемые поля идентичны /getTitle],
    ...
]

• addFavorite

Добавить тайтл в список избранных

PUT /v2/addFavorite

Все доступные параметры

Параметр Тип Описание Обязательный
session string Уникальный идентификатор сессии пользователя +
title_id int ID тайтла который вы хотите добавить +

Примеры запросов

/v2/addFavorite?session=qwertyqwertyqwerty1234567890&title_id=8500

Пример ответа

{
    "success": true
}

• delFavorite

Удалить тайтл из списка избранных

DELETE /v2/delFavorite

Все доступные параметры

Параметр Тип Описание Обязательный
session string Уникальный идентификатор сессии пользователя +
title_id int ID тайтла который вы хотите удалить +

Примеры запросов

/v2/delFavorite?session=qwertyqwertyqwerty1234567890&title_id=8500

Пример ответа

{
    "success": true
}

Возвращаемые значения при запросе информации о тайтле

id int – ID тайтла
code string – Код тайтла, используется для создания ссылки
names object – Названия тайтла.
posters object – Информация о постере
updated int – Timestamp последнего обновления тайтла (обычно тайтл обновляют при выходе новых релизов)
last_change int – Timestamp последнего изменения тайтла (Например описания, или анонса)
status object – Статус тайтла
type object – Типа тайтла
genres array[string] – Список жанров
team object – Ники членов команды работавших над тайтлом
season object – Сезон, год выхода, и день недели из расписания когда выходят новые серии
year int – Год выпуска тайтла
week_day int – День недели, когда выходят новые релизы
description string – Описание тайтла в указанном в description_type формате
blocked object – Информация о блокировках тайтла
player object – Информация о сериях в плеере
torrents object – Информация о торрент файлах

Возвращаемые значения при запросе информации о youtube ролике

id int – ID записи в базе
title string – Название видео ролика
image string – Ссылка на превью к ролику
youtube_id string – ID видео на YouTube (Легко форматируется в https://youtu.be/{youtube_id})
timestamp int – Timestamp времени добавления в базу
comments int - Количество комментариев у ролика views int - Количество просмотров у ролика

В случае отсутствия какой-то информации значения поля будет null для строк, пустой массив для массивов, и 0 для чисел Такое редко, но бывает.

Описание возвращаемых объектов

names:

ru string – Русское название тайтла
en string – Английское название тайтла
alternative string – Альтернативное название

posters:

small object – Постер маленького размера
medium object – Постер среднего размера
original object – Оригинальный и самый большой постер

poster:

url string – Относительный url на постер
raw_base64_file string – Постер в base64 формате (если запрошен в параметре include)

series:

string string – Количество серий в виде строки
first int – Первая серия
last int – Последняя серия

status:

string string – Статус тайтла в виде строки
code int – Статус тайтла в виде числа

1 – В работе
2 – Завершен
3 – Скрыт
4 – Неонгоинг

type:

full_string string – Тип тайтла целиком в виде строки (как это указано на сайте)
string string – Тип тайтла в виде строки
series int – Ожидаемое количество серий
length string – Длительность серий
code int – Тип тайтла в виде числа

0 – Фильм
1 – TV
2 – OVA
3 – ONA
4 – Спешл 5 - WEB

team:

voice array[string] – Список войсеров работавших над озвучкой.
translator array[string] – Список участников команды работавших над переводом.
editing array[string] – Список участников команды работавших над субтитрами.
decor array[string] – Список участников команды работавших над оформлением.
timing array[string] – Список участников команды работавших над таймингом.

season:

year int – Список войсеров работавших над озвучкой
week_day int – День недели. Счет дней недели идет с понедельника, где 0 - Понедельник, а 6 - Воскресенье.
string string – Название сезона в котором вышел тайтл.
code int – Код сезона в котором вышел тайтл.

1 - Зима
2 - Весна
3 - Лето
4 - Осень

blocked:

blocked bool – Тайтл заблокирован на территории РФ.
bakanim bool – Тайтл заблокирован из-за жалобы Wakanim.


player:

alternative_player string – Ссылка на альтернативный плеер.
host object – Имена предпочитаемых серверов для построения ссылок на поток и скачивание.
playlist object – Список релизов тайтла со ссылками на просмотр и загрузку.
series object – Количество вышедших в плеере серий

host:

hls string – Ссылка без домена на альтернативный плеер
Эти имена служат для того, чтобы использовать их как часть ссылки к файлу. Например: http://de3.libria.fun/videos/ts/8500/0001/playlist.m3u8 позволит скачать указанный файл с сервера.

playlist:

serie int – Номер серии
created_timestamp int – Время создания/изменения плейлиста в формате unix timestamp
preview str - Ссылка без домена на превью серии
skips array[int] - Массив чисел с временем для пропуска опенинга и эндинга
hls object – Объект, содержащий ссылки на потоковое воспроизведение в разном качестве

hls:

fhd string – Ссылка без домена на потоковое воспроизведение в Full-HD качестве
hd string – Ссылка без домена на потоковое воспроизведение в HD качестве
sd string – Ссылка без домена на потоковое воспроизведение в SD качестве


torrents:

series object – Серии содержащиеся в файле
list array[object] – Массив объектов с информацией о торрент файлах

list:

Содержит массив объектов с информацией о торрент файлах.

torrent_id int – ID торрент файла
series object – Серии содержащиеся в файле
quality object – Информации о разрешении, кодировщике и типе релиза
leechers int – Количество личеров (личей)
seeders int – Количество сидеров (сидов)
downloads int – Количество загрузок файла
total_size int – Размер файлов в торренте в байтах
url string – Ссылка на торрент файл без домена
uploaded_timestamp int – Время загрузки торрента в формате unix timestamp
raw_base64_file string – Торрент файл в base64 формате (если запрошен в параметре include)
metadata object – Объект, содержащий метаданные торрент файла hash string - Хеш торрент файла

quality:

string string – Полная строка с описание качества и типа релиза
type string – Тип релиза WEBRip, HDRip и тд...
resolution int – Разрешение одной стороны изображения. Например 720
encoder string – Строка указывающая на кодировщик используемый для кодирования релиза, h264 или h265
lq_audio bool – Используется ли аудио дорожка с пониженным битрейтом (Для экономии размера файла)

metadata:

hash string – Хеш торрент файла
name string – Имя тайтла в торрент файле
announce array[string] – Массив строк содержащий список трекеров
created_timestamp int – Время создания торрента в формате unix timestamp
files_list array[object] – Массив объектов содержащий список файлов в торренте

files_list:

file string – Имя файла
size int – Размер файла в байтах
offset int64 – Смещение в байтах относительно предыдущего файла


description_type:

html – Описание тайтла в виде html (в том виде в каком оно на сайте)
plain – Описание тайтла в виде текста без дополнительного форматирования
no_view_order – Описание тайтла в виде текста без дополнительного форматирования и порядка просмотра

include:

Это полезно в случае если вы не хотите делать много запросов, такая конструкция позволяет получить все необходимое в одном запросе

raw_poster – Добавить постер в base64 формате в ответ
raw_torrent – Добавить торрент файлы в base64 формате в ответ
torrent_meta - Добавить в ответ метаданные торрента (список файлов, их размер, трекер)

limit:

Количество объектов в ответе
Любое положительное число, или -1, чтобы получить все результаты.

rss_type:

Предпочитаемый формат вывода RSS ленты

Название Описание
rss RSS 2.0 (По умолчанию)
atom Atom 1.0
json JSON Feed 1.0

query:

Ключи объектов должны быть закрыты в фигурные скобки, например {names.ru}

Поддерживаемые операции

Операции сравнения

Операция Описание
x == y Равно
x != y Не равно
x < y Меньше чем
x <= y Меньше чем или равно
x > y Больше чем
x >= y Больше чем или равно
x ~= y Регулярное выражение
x in (a, b, c) Эквивалент (x == a or x == b or x == c)
x not in (a, b, c) Эквивалент (x != a and x != b and x != c)

Логические операции

Операция Описание
x and y Логическое И
x or y Логическое ИЛИ
not x Логическое НЕ
x ? y : z Условие x, истина y, ложь z
( x ) Оператор приоритета, например (x == y or y < 10) and z)

Математические операции

Операция Описание
x + y Сложение
x - y Вычитание
x * y Умножение
x / y Деление
x % y Модуль
x ^ y Степень

Операции с объектами и массивами

Операция Описание
(a, b, c) Массив
a in b Массив a является подмножеством массива b
x of y Свойство x объекта y

Встроенные функции

Функция Описание
abs(x) Абсолютное значение
ceil(x) Округление float числа вверх
floor(x) Округление float числа вниз
log(x) Натуральный логарифм
max(a, b, c...) Максимальное число из указанных (число аргументов может быть любым)
min(a, b, c...) Минимальное число из указанных (число аргументов может быть любым)
random() Случайное float значение от 0.0 до 1.0
round(x) Простое округление float
sqrt(x) Квадратный корень
len(x) Длина массива или строки
randomInt(min, max) Случайное число в указанном диапазоне

Получение session id:

Для получения ключа, нужно отправить POST запрос на адрес
https://www.anilibria.tv/public/login.php

Параметр Тип Описание Обязательный
mail string Логин или электронная почта от аккаунта +
passwd string Пароль от аккаунта +

После успешной авторизации в ответе будет значение с ключом sessionId, а в cookies PHPSESSID, оба значения одинаковы.

Стоит помнить:

  • Авторизация может пропасть в любой момент, т.к. время жизни сессии ограничено

Возможные коды ошибок

{
    "error": { "code": 500, "message": "Internal Server Error!" }
}

Возникает в случае непредвиденной внутренней ошибки сервера.

Все 5хх ошибки возвращают статус код 500, хотя в теле ответа будет указан настоящий код.

{
    "error": { "code": 412, "message": "Unknown parameters: code, id" }
}

Возникает в случае если передать неизвестный параметр в запросе.

{
    "error": { "code": 404, "message": "Title "test" not found!" }
}

Возникает в случае если запрошеный тайтл отсутствует в базе.
и другие...

В случае ошибки HTTP Status дублирует код из error.code (Исключение 5хх ошибки) В случае успешного выполнения запроса будет возвращен HTTP Status: 200


Полезное

  1. Версию API можно узнать в заголовке API-Version и сравнить ее с версией документации, чтобы узнать актуальна ли документация.
  2. Версии меняются по принципу .. где Major обозначает очень крупные изменения в коде проекта без обратной совместимости, Minor обозначает существенные изменения в API с частичной обратной совместимостью, и Patch исправление различных ошибок, не влияет на совместимость.
  3. С версии 2.6.2. появилась поддержка старых версий api и был расширен функционал версионирования. Таким образом теперь можно использовать либо последнюю версию с последними исправлениями, либо старую минорную со старой схемой которая не будет обновляться и меняться со временем. Например, сейчас можно использовать ссылки следующего формата:

Ссылка на актуальную мажорную версию API - https://api.anilibria.tv/v2/... Ссылка на минорный патч со всеми исправлениями - https://api.anilibria.tv/v2.13/... Ссылка на патч - https://api.anilibria.tv/v2.13.15/...

  1. Полезно использовать фильтры при запросе информации о множестве тайтлов, к примеру: исключив информацию о плеере, вы существенно сэкономите время ответа, если она вам не нужна.

WebSocket

Подключение

ws(s)://api.anilibria.tv/v2/ws/

или

ws(s)://api.anilibria.tv/v2/webSocket/

ВебСокет каждые 30 секунд отправляет ping пакет, который проверяет соединение.

Уведомления

title_update

При обновлении какой-либо информации о тайтле Веб Сокет отправляет всем клиентам строку в JSON формате:

{
    "type": "title_update",
    "title_update": {
        "hash": "c3499c2729730a7f807efb8676a92dcb6f8a3f8f",
        "title": {
            [Возвращаемые поля идентичны /getTitle]
        },
        "diff": {
            [Те ключи и значения, что были изменены, добавлены или удалены]
        }
    }
}
Возвращаемые значения

type string - Тип уведомления.
hash string – Хеш уведомления, для проверки уникальности уведомления
title object – Объект, содержащий все поля из /getTitle
diff object – Объект, содержащий информацию о том, какие данные были изменены, добавлены или удалены.

playlist_update

При обновлении плейлиста тайтла, что происходит при добавлении или перезаливе релиза, ВебСокет отправляет всем клиентам строку в формате:

{
    "type": "playlist_update",
    "playlist_update": {
        "id": 8700,
        "player": {объект плеера},
        "updated_episode": {объект плейлиста},
        "episode": "2",
        "diff": {Те ключи и значения, что были изменены, добавлены или удалены},
        "reupload": false
    }
}
Возвращаемые значения

type string - Тип уведомления.
id int – ID обновленного тайтла.
player object – Объект, содержащий информация о плеере.
updated_episode object - Объект, содержащий все поля из объекта playlist.
episode int – Номер вышедшего или перезалитого релиза.
diff object – Объект, содержащий информацию о том, какие данные были изменены, добавлены или удалены.
reupload bool - Означает, перезалив это или нет.

encode_start

При начале кодирования серии в плеер, что происходит при добавлении или перезаливе релиза, ВебСокет отправляет всем клиентам строку в формате:

{
    "type": "encode_start",
    "encode_start": {
        "id": "8700",
        "episode": "4",
        "resolution": "480",
        "quality": "sd",
        "isReupload": false
    }
}
Возвращаемые значения

id string – ID обновленного тайтла.
episode string – Номер вышедшего или перезалитого релиза.
resolution string - Разрешение, в котором была скодирована серия.
quality string – Качество, в котором кодируется серия (одно из значений hls). isReupload bool - Означает, перезалив это или нет.

encode_end

Когда серия успешно скодирована в определённом качестве, ВебСокет отправляет всем клиентам строку в формате:

{
    "type": "encode_end",
    "encode_end": {
        "id": "8700",
        "episode": "4",
        "resolution": "480",
        "quality": "sd"
    }
}
Возвращаемые значения

id string – ID обновленного тайтла.
episode string – Номер вышедшего или перезалитого релиза.
resolution string - Разрешение, в котором была скодирована серия.
quality string – Качество, в котором стала доступна серия (одно из значений hls).

encode_progress

На каждые 5% кодирования в определённом качестве, Веб Сокет будет отправлять клиентам строку в формате:

{
    "type": "encode_progress",
    "encode_progress": {
        "id": "8700",
        "episode": "4",
        "resolution": "480",
        "quality": "sd",
        "encoded_percent": "25"
    }
}
Возвращаемые значения

id string – ID обновленного тайтла.
episode string – Номер вышедшего или перезалитого релиза.
resolution string - Разрешение, в котором была скодирована серия.
quality string – Качество, в котором кодируется серия (одно из значений hls).
encoded_percent string – процент кодирования.

encode_finish

Когда серия успешно скодирована во всех качествах, ВебСокет отправляет клиентам строку в формате:

{
    "id": "8700",
    "episode": "4"
}
Возвращаемые значения

id string – ID обновленного тайтла.
episode string – Номер вышедшего или перезалитого релиза.

torrent_update

При обновлении информации о торренте, Веб Сокет будет отправлять клиентам строку в формате:

{
    "type": "torrent_update",
    "torrent_update": {
        "id": "9215",
        "torrents": {
            "series": {
                "first": 1,
                "last": 1,
                "string": "1-1"
            },
            "list": [
                {
                    "torrent_id": 19973,
                    "series": {
                        "first": 1,
                        "last": 1,
                        "string": "1"
                    },
                    "quality": {
                        "string": "WEBRip 1080p",
                        "type": "WEBRip",
                        "resolution": "1080p",
                        "encoder": "h264",
                        "lq_audio": null
                    },
                    "leechers": 2,
                    "seeders": 25,
                    "downloads": 32,
                    "total_size": 547428705,
                    "url": "/public/torrent/download.php?id=19973",
                    "uploaded_timestamp": 1657158936,
                    "hash": "51a8800ca1a6486b352227a37da0c5d3dbba59c7",
                    "metadata": null,
                    "raw_base64_file": null
                },
                ...
            ]
        },
        "updated_torrent_id": 19973,
        "diff": {
            "list": {
                "0": {
                    "torrent_id": 19972,
                    "leechers": 4,
                    "seeders": 18,
                    "downloads": 23,
                    "total_size": 547426413,
                    "url": "/public/torrent/download.php?id=19972",
                    "uploaded_timestamp": 1657156714,
                    "hash": "f3d72484bdc41265bd025dbbb24ea8bcb63a1abf"
                }
            }
        },
        "hash": "81f7dbc27a1a445105b90c3096e3168008f2886e"
    }
}
Возвращаемые значения

id string – ID обновленного тайтла.
torrents object – Информация о торрент файлах.
updated_torrent_id int - ID обновлённого торрента.
diff object – Объект, содержащий информацию о том, какие данные были изменены, добавлены или удалены.
hash string – Хеш уведомления, для проверки уникальности уведомления.

Подписка на уведомления

По умолчанию, при подключении, клиент подписывается на все уведомления сразу, но после добавления подписки, вебсокет будет отправлять только те уведомления, которые соответствуют заданым фильтрам.

{
    "subscribe": {
        "title_update": {
            "title": {
                "season": {
                    "year": 2022
                }
            }
        }
        // Тут могут быть любые поля и значения, которые отправляет вебсокет.
    }
}

Пример ответа

{
    "subscribe": "success",
    "subscription_id": 0
}

Можно отправить несколько запросов с подпиской, тогда вебсокет будет отправлять уведомление при совпадении с одним из них.

В качестве значения также можно указать *, что будет соответствовать любому значению указанного поля.
Таким образом, к примеру, можно подписаться на получение уведомлений только о выходе всех серий начиная с 12.

{
    "subscribe": {
        "title_update": {
            "title": {
                "player": {
                    "playlist": {
                        "12": *
                    }
                }
            }
        }
    }
}

Фильтры

При добавлении подписки можно указать какие поля вебсокет будет вам отправлять.
Работает это так же, как и при указании фильтров к GET запросам.
Например:

{
    "subscribe": {
        "title_update": {
            "title": {
                "season": {
                    "year": 2022
                }
            }
        }
    },
    "filter": "names,season",
    "remove": "names.en"
}