qartz90 писал(а): Пн апр 08, 2019 7:56 pm
меня не покидает мысль о том, чтобы научить сервер (Windows) сортировать музыку по названию папок и вызывать исполнение голосом по имени папки (исполнителя). отсюда вопрос как модернизировать скрипт playFavoriteMusic чтобы он мог сосканировать библиотеку по названию папок ? Подозреваю что всё крутится вокруг переменной .$alreadyPlayed
как расшифровать эти переменные ? $colection
Код: Выделить всё
// запускаем на проигрывание
$collection=SQLSelectOne("SELECT * FROM collections WHERE ID=".(int)$rec['COLLECTION_ID']);
$path=$collection['PATH'].$rec['PATH'];
playMedia($path);
//setTimeOut('VLCPlayer_update',"callMethod('VLCPlayer.update');",10);
значит накидал тебе вариант - исправлять и дописывать будеш сам - потому что не проверял
Создаеш шаблон
Назва:* включить музыку
Тип шаблону: На основі повідомлень
Пріоритет: 0
не перевіряти інші шаблони при збігу - галочка
Не реагувати на системні повідомлення - галочка
Шаблон: - Включи музыку (.+) на терминале (.+)
Обмеження за часом, секунд:* (set 0 to be used with the latest log record only) - 0
И вставляеш код в поле КОД
Код: Выделить всё
$collections = SQLSelect("SELECT * FROM collections");
// ищем ближайшее совпадение по названию папки
$shortest = -1;
foreach ($collections as $collection) {
$lev = levenshtein($matches[1], $collection['TITLE']);
if ($lev == 0) {
$path = $collection['PATH'];
break;
}
if ($lev <= $shortest || $shortest < 0) {
// путь к папке артиста
$path = $collection['PATH'];
$shortest = $lev;
}
}
// берем список файлов в папке
$files = getDirFiles($path);
// берем терминал по имени
$terminal = getTerminalsByName($matches[2], 1);
//DebMes($terminal);
// очищаем плейлист
$url = BASE_URL . ROOTHTML . 'ajax/app_player.html?';
$url .= "&command=pl_empty";
$url .= "&terminal_id=" . $terminal['ID'];
getURL($url);
// добавляем фалйы в плейлист
foreach ($files as $file) {
$url = BASE_URL . ROOTHTML . 'ajax/app_player.html?';
$url .= "&command=pl_add";
$url .= "&terminal_id=" . $terminal['ID'];
$url .= "¶m=" . urlencode($path.$file['FILENAME']);
getURL($url);
}
// запускаем плей - проверить
$url = BASE_URL . ROOTHTML . 'ajax/app_player.html?';
$url .= "&command=play";
$url .= "&terminal_id=" . $terminal['ID'];
getURLBackground($url);
Кратко расписал что и как делает - проверяеш - дебажиш каждый вывод
Что не так исправляеш - БЕЗ КОСТЫЛЕЙ - пробуеш сразу вводить команды через чат системы..
$matches[2] - это имя терминала на котором хочеш проиграть
$matches[1] - это название альбома - который записан в медиа -
$matches[1] - будет производить нестрогий поиск названия альбома - тоесть всегда какой то будет на выходе, НО НАИБОЛЕЕ приближенный по названию к заданому имени
ПС
Почему не стропроцентный ответ - мдм не имею а тестовый на работе - не имеет ниодного треминала
ППС - изучал
https://mjdm.ru/forum/viewtopic.php?f=2 ... t=patterns
https://kb.mjdm.ru/patterns_help/
https://github.com/sergejey/majordomo/b ... .addon.php
https://github.com/sergejey/majordomo/b ... s.php#L778
https://github.com/sergejey/majordomo/b ... s.php#L254
https://www.php.net/manual/ru/function.levenshtein.php
Все написано на основании этих статей - сам не програмист - землеупорядчик...
Так что не обессудь если что и если где тебя обидел