Тема: Скрипт формирования названия медиа-ресурса
тема перенесена
Вы тут как гость.
Неофициальный форум DLNA Home Media Server → Coding → Скрипт формирования названия медиа-ресурса
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
тема перенесена
Не нашел, где задать вопрос, задаю тут.
В настройках устройства есть такой пункт - "Скрипт формирования названия медиа-ресурса". Так вот, может где-нибудь есть примеры данного скрипта ? Я уже пытался сам прикрутить что-то, но в итоге ничего не вышло
В настройках устройства есть такой пункт - "Скрипт формирования названия медиа-ресурса". Так вот, может где-нибудь есть примеры данного скрипта ? Я уже пытался сам прикрутить что-то, но в итоге ничего не вышло
До этого не пробовал, но, кажется разобрался немного.
Заходим в Настройки -> Обработка, добавляем скрипт.
Обзываем его как-нибудь, например "Формирование названия".
И в открытой справа панели, среди переменных, в группе "Основные" увидел переменную с названием ProcessMediaResult. И заподозрил я её: не то ли она, что нам нужно? Оказалось то.
Например, сделал такой скрипт (язык C++Script):
{
if (Trim(CurrentMediaItem[mpiLastPlaybackTime])!='')
ProcessMediaResult = '[П] '+CurrentMediaItem[mpiTitle];
else
ProcessMediaResult = CurrentMediaItem[mpiTitle];
}
Потом в настройках устройства в "Скрипт формирования названия медиа-ресурса" выбрать именно эту обработку.
Не сразу разобрался, но изменения вступают в силу только при перезапуске сервера и результаты видны только на экране телевизора при навигации по папкам. А в Web навигации и самой программе изменений никаких.
Этот скрипт будет помечать (ставить букву П - "просмотренные" в квадратных скобках перед названием) те видео, которые включались. Например, в сериалах видеть серии, которые уже были просмотрены.
Спасибо большое, пока написал такой скрипт, вдруг кому понадобится
string strPrefix = "";
{
if (CurrentMediaItem != NULL && !CurrentMediaItem.Properties[mpiInternetItem])
{
if (VarToStr(CurrentMediaItem[mpiLastPlaybackTime]) != "")
strPrefix += "[П]";
if (CurrentMediaItem.Properties[mpi3DVideoType] > 0)
strPrefix += "[3D]";
}
ProcessMediaResult = strPrefix + CurrentMediaItem.Properties[mpiTitle];
}
Но есть еще 1 вопрос: почему следующий код
CurrentMediaItem.MediaType == mtVideo
не работает, говорит о неприводимых типах ?
Но есть еще 1 вопрос: почему следующий код
CurrentMediaItem.MediaType == mtVideo
не работает, говорит о неприводимых типах ?
Ээ... ну почему же, вроде работает и не ругается. Хотя в реальной работе на телеке не проверял ещё.
Кстати, переменные объектов, типа CurrentMediaItem при неустановленных значениях содержат значения не NULL, а, как оказалось, паскалевкий Nil.
Поэтому проверка должна быть такой:
if (CurrentMediaItem != nil && !CurrentMediaItem.Properties[mpiInternetItem])
Можно удостовериться при редактировании обработки, прям начать отладку и CurrentMediaItem не будет содержать текущий элемент.
И к вам вопрос: что значит CurrentMediaItem.Properties[mpiInternetItem]? Что именно означает этот флаг mpiInternetItem? А то у меня только догадки.
И к вам вопрос: что значит CurrentMediaItem.Properties[mpiInternetItem]? Что именно означает этот флаг mpiInternetItem? А то у меня только догадки.
Является ли этот ресурс интернетным . True у интернет-телевидения(проверено) и у подкастов(не проверял).
И почему-то nil=0, а NULL - пустое значение, хотя должно быть наоборот.
nikolay пишет:Но есть еще 1 вопрос: почему следующий код
CurrentMediaItem.MediaType == mtVideo
не работает, говорит о неприводимых типах ?
Ээ... ну почему же, вроде работает и не ругается. Хотя в реальной работе на телеке не проверял ещё.
Хм, совсем странная система:
if (CurrentMediaItem != nil && CurrentMediaItem.MediaType == mtVideo && !CurrentMediaItem.Properties[mpiInternetItem])
не работает, хотя
if (CurrentMediaItem != nil && (CurrentMediaItem.MediaType == mtVideo) && !CurrentMediaItem.Properties[mpiInternetItem])
вполне работает.
Вот итоговый скрипт. Если разобраться, то переделать как-то под себя - не проблема:
// By nikolay
string strPrefix = "";
{
// Проверяем, выводится ли сейчас текущий элемент и не является ли он Интернет-ресурсом (Интернет-телевидение, Интернет-радио)
if (CurrentMediaItem != nil && !CurrentMediaItem.Properties[mpiInternetItem])
{
// Если в параметрах элемента есть данные о последнем времени проигрывания
if (VarToStr(CurrentMediaItem[mpiLastPlaybackTime]) != "")
strPrefix += "[П] "; // то ставим пометку, что ресурс уже просматривался
// Если в параметрах элемента указано, что видео имеет формат 3D
if (CurrentMediaItem.Properties[mpi3DVideoType] > 0)
strPrefix += "[3D] "; // то добавляем пометку, что формат 3D
}
// Результат сформированного имени для медиа-плеера заносится в ProcessMediaResult
ProcessMediaResult = strPrefix + CurrentMediaItem.Properties[mpiTitle]; // Префикс + реальное имя из параметров
}
На той-же картинке выше видно, куда можно добавить скрипт вручную - нажать "Добавить" и задать имя, выбрать язык скрипта "C++Script" и вставить код скрипта.
Подскажите можно ли сделать чтобы отметка о просмотре добавлялась только если было просмотрено, например, больше 50% видео?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Неофициальный форум DLNA Home Media Server → Coding → Скрипт формирования названия медиа-ресурса