Здравствуйте! Подскажите, пожалуйста, есть ли соответствующий метод HTTP API для получения информации о работающем в данный момент канале?
Например, id, infohash или название?
Интересует что-то типа: http://127.0.0.1:6878/webui/api/service?method=get_current_channel_info&format=jsonp
Для НТТР АПИ нет, в данном случае нужно использовать Search АПИ - Search API - Ace Stream Wiki (см. на “status” и “availability”) - т.е CID со статусом “2” и “avail” 1 - “рабочий” на момент последнего обновления поисковой базы (подобный канал будет отображен в Р2Р поиске и отмечен зеленой иконкой). “Рабочий” в данном случае не гарантирует, что вместо собственно контента там не будет какой-нить “заглушки”.
Или я неправильно понял вопрос и под “работающим” подразумевается “канал, который уже воспроизводится в данный момент”?
Да, я имел в виду такую ситуацию: на ПК работает ace_engine и на этом же ПК в vlc-плеере или каком-либо другом плеере воспроизводится канал.
Так вот, есть ли в HTTP API какой-либо метод, в результате которого можно получить данные об этом канале: infohash, id, название?
Простого метода нет. На данный момент данные о сессии можно получить только по ссылке “stat_url”, которая возвращается в ответ на запуск сессии. И ссылка эта “жива” столько, сколько активна сессия. Основные данные, которые отдаеются по этой ссылке, описаны здесь: Engine HTTP API - Ace Stream Wiki (названия канала и content id там нет).
В текущих версиях выдается infohash, и по нему можно вытянуть названия с помощью метода get_media_files.
Цепочка запросов для примера:
- запуск сессии
http://127.0.0.1:6878/ace/getstream?id=afeeb4c9336716ed180d0056e71bef27284c0116&format=json
{
"response": {
"stat_url": "http://127.0.0.1:6878/ace/stat/5d78090bf52eaa1c042da9b191c487cea4a0219a/f528764d624db129b32c21fbca0cb8d6",
"infohash": "5d78090bf52eaa1c042da9b191c487cea4a0219a",
...
},
"error": null
}
- получаем информацию о сессии:
http://127.0.0.1:6878/ace/stat/5d78090bf52eaa1c042da9b191c487cea4a0219a/f528764d624db129b32c21fbca0cb8d6
{
"response": {
"infohash": "5d78090bf52eaa1c042da9b191c487cea4a0219a",
...
},
"error": null
}
- получаем название по infohash:
http://127.0.0.1:6878/server/api/?method=get_media_files&infohash=5d78090bf52eaa1c042da9b191c487cea4a0219a&api_version=3
{
"result": {
"files": [
{
"index": 0,
"filename": "1+1"
}
],
"infohash": "5d78090bf52eaa1c042da9b191c487cea4a0219a",
"name": "1+1"
}
}
При наличии infohash и цели получить название канала все упрощается до примера из п. 3.
Понятно. Но здесь один минус - нужно уже знать id, чтобы выполнить первый запрос… А задача такая, что не зная id, infohash или имя получить данные о текущей сессии.
Но спасибо за ответ!
Проблема в том, что “текущая сессия” может быть далеко не одна.
В планах есть добавить в АПИ метод для чего-нить вроде “вывести список активных сессий”, но это пока только планы.
Benny, а подскажите, пожалуйста, ещё такое - можно ли получить информацию о видео-кодеке и аудио-кодеке трансляции, зная infohash?
Какой запрос на 127.0.0.1:6878 нужно для этого сформировать?
ОК. Написано, что для того, чтобы получить ссылку на event нужно в запрос включать параметр use_api_events=1.
Итак, в плеере воспроизводится канал с infohash = 1eb03a5674f01828bfbe6a8967617eabd3973f23
Делаю такой запрос:
http://127.0.0.1:6878/ace/getstream?infohash=1eb03a5674f01828bfbe6a8967617eabd3973f23&use_api_events=1&format=json
В результате получаю ответ:
Ссылки на “event_url” - нет. Кстати, во время отправки вышеуказанного запроса где-то через 10 секунд текущий канал переключается на следующий по плейлисту…
Что не так?
А в какой версии на какой платформе это проверялось?
Нужно будет уточнить у разработчиков, но в целом - сначала нужно смотреть лог файл при этом - не исключено, что “переключение” никак не связано с.
Win7 x64, Ace Stream 3.1.32
Сегодня установил Ace Stream 3.1.32 на чистую виртуальную win7 x64, запускаю канал в vlc-плеере, он начинает воспроизводиться. Затем в Firefox перехожу по ссылке вида: http://127.0.0.1:6878/ace/getstream?infohash=1eb03a5674f01828bfbe6a8967617eabd3973f23&use_api_events=1&format=json
Но в результате получаю все те же поля, а ссылки на event_url как не было, так и нет.
Да и странно, почему бы не давать всю информацию о кодеках, доступных аудио-дорожках, субтитрах, всех пирах и пр. хотя бы по той же ссылке stat_url?..
И ещё заметил, что если через несколько минут после того, как в плеере началось воспроизведение канала, в Firefox снова перейти по вышеуказанной ссылке, то в плеере воспроизведение останавливается… Если это какое-то ограничение движка на количество устройств просмотра, то какая-то странная реализация… Ведь устройство просмотра по факту - одно, а то, что делается в Firefox - всего лишь получение информации, а не запрос на старт воспроизведения в отдельном плеере или на другом устройстве… Движок разве не запрограммирован на то, что “&format=json” - это только получение информации? Зачем “резать” воспроизведение??