Страница 3 из 7

Re: Как рассортировать музыку по исполнителям, чтобы использовать голосовое управление медиаплеером ?

Добавлено: Пн окт 26, 2020 6:38 pm
homester
fandaymon писал(а): Пн окт 26, 2020 5:59 pm
homester писал(а): Пн окт 26, 2020 3:55 pm Плохо, что из шаблона нельза передать параметр сценарию. Иначе можно было решить проблему без особых проблем,- Поставь (.+) диск (.+)
"Поставь SPACE диск 1". Один раз ручками набил пути и наслаждайся. Коллекция обычно редко пополняется.
Чего ж нельзя-то? Сценарию передаётся параметры $params в виде массива
Более того всё можно прям в шаблоне и сделать - в нём же можно писать точно такой же код, как в сценарии
Можно передать только цифры, строка не пролазит.
Действительно, зачем сценарий, если можно из шаблона запустить playMedia. Вот это я затупил !!!

Re: Как рассортировать музыку по исполнителям, чтобы использовать голосовое управление медиаплеером ?

Добавлено: Пн окт 26, 2020 7:36 pm
fandaymon
homester писал(а): Пн окт 26, 2020 6:38 pm
fandaymon писал(а): Пн окт 26, 2020 5:59 pm
homester писал(а): Пн окт 26, 2020 3:55 pm Плохо, что из шаблона нельза передать параметр сценарию. Иначе можно было решить проблему без особых проблем,- Поставь (.+) диск (.+)
"Поставь SPACE диск 1". Один раз ручками набил пути и наслаждайся. Коллекция обычно редко пополняется.
Чего ж нельзя-то? Сценарию передаётся параметры $params в виде массива
Более того всё можно прям в шаблоне и сделать - в нём же можно писать точно такой же код, как в сценарии
Можно передать только цифры, строка не пролазит.
Действительно, зачем сценарий, если можно из шаблона запустить playMedia. Вот это я затупил !!!
Можно передавать всё что угодно

Код: Выделить всё

rs('test_params', array('stroka' =>'Длинная строка'));

Сценарий test_params

Код: Выделить всё

echo $params['stroka'];
Но проще такие вещи делать при помощи модуля api.ai - там можно задавать команду в свободном виде - типа, А поставь-ка мне группу Спейс, или включи мне тяжёлый рок на кухне

Re: Как рассортировать музыку по исполнителям, чтобы использовать голосовое управление медиаплеером ?

Добавлено: Вт окт 27, 2020 12:33 am
xor
fandaymon писал(а): Пн окт 26, 2020 7:36 pm Но проще такие вещи делать при помощи модуля api.ai - там можно задавать команду в свободном виде - типа, А поставь-ка мне группу Спейс, или включи мне тяжёлый рок на кухне
а модуль api.ai живой? его переписали на новую версию сервиса?

Re: Как рассортировать музыку по исполнителям, чтобы использовать голосовое управление медиаплеером ?

Добавлено: Вт окт 27, 2020 12:36 am
fandaymon
xor писал(а): Вт окт 27, 2020 12:33 am
fandaymon писал(а): Пн окт 26, 2020 7:36 pm Но проще такие вещи делать при помощи модуля api.ai - там можно задавать команду в свободном виде - типа, А поставь-ка мне группу Спейс, или включи мне тяжёлый рок на кухне
а модуль api.ai живой? его переписали на новую версию сервиса?
Вроде бы пока и так работает

Re: Как рассортировать музыку по исполнителям, чтобы использовать голосовое управление медиаплеером ?

Добавлено: Вт окт 27, 2020 12:45 am
xor
fandaymon писал(а): Вт окт 27, 2020 12:36 am
xor писал(а): Вт окт 27, 2020 12:33 am
fandaymon писал(а): Пн окт 26, 2020 7:36 pm Но проще такие вещи делать при помощи модуля api.ai - там можно задавать команду в свободном виде - типа, А поставь-ка мне группу Спейс, или включи мне тяжёлый рок на кухне
а модуль api.ai живой? его переписали на новую версию сервиса?
Вроде бы пока и так работает
супер! я помню только объявление о переходе на новую версию в диалогфлоу. наверное, это один из тех редких случаев, когда модуль мдм не потребовал доработки

Re: Как рассортировать музыку по исполнителям, чтобы использовать голосовое управление медиаплеером ?

Добавлено: Вт окт 27, 2020 4:32 pm
tarasfrompir
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 .= "&param=" . 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
Все написано на основании этих статей - сам не програмист - землеупорядчик...
Так что не обессудь если что и если где тебя обидел

Re: Как рассортировать музыку по исполнителям, чтобы использовать голосовое управление медиаплеером ?

Добавлено: Вт окт 27, 2020 5:06 pm
Denis239tp
Спасибо. Буду вечером пробовать

Re: Как рассортировать музыку по исполнителям, чтобы использовать голосовое управление медиаплеером ?

Добавлено: Вт окт 27, 2020 5:39 pm
tarasfrompir
Denis239tp писал(а): Вт окт 27, 2020 5:06 pm Спасибо. Буду вечером пробовать
Для спасибо есть пальчик вверх. Мелочь но приятно....

Re: Как рассортировать музыку по исполнителям, чтобы использовать голосовое управление медиаплеером ?

Добавлено: Ср окт 28, 2020 3:05 pm
tarasfrompir
Проверил - ПОПРАВИЛ - код ниже (нашел ошибки - на ВЛС плеере играет на последней альфе )

Добавил - случайное перемешивание файлов - для того чтобы если начинало играть повторно ту же папку - так чтобы не повторялось в музыке

Код: Выделить всё

$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);
DebMes($path);
// очищаем плейлист
$url = BASE_URL . ROOTHTML . 'ajax/app_player.html?';
$url .= "&command=pl_empty";
$url .= "&terminal_id=" . $terminal[0]['ID'];
getURL($url);

// добавляем фалйы в плейлист
foreach ($files as $file) {
    $url = BASE_URL . ROOTHTML . 'ajax/app_player.html?';
    $url .= "&command=pl_add";
    $url .= "&terminal_id=" . $terminal[0]['ID'];
    $url .= "&param=" . urlencode($file['FILENAME']);
    getURL($url);

}

// смешиваем плейлист
$url = BASE_URL . ROOTHTML . 'ajax/app_player.html?';
$url .= "&command=pl_random";
$url .= "&terminal_id=" . $terminal[0]['ID'];
getURL($url);

// запускаем плей - проверить
$url = BASE_URL . ROOTHTML . 'ajax/app_player.html?';
$url .= "&command=pl_play";
$url .= "&terminal_id=" . $terminal[0]['ID'];
$url .= "&param=1";
getURL($url);

Re: Как рассортировать музыку по исполнителям, чтобы использовать голосовое управление медиаплеером ?

Добавлено: Ср окт 28, 2020 3:19 pm
tarasfrompir
За спасибо - и тебе тоже ... - Ты лучше отпиши робит ли ?