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

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

homester
Сообщения: 194
Зарегистрирован: Вт дек 24, 2019 2:09 pm
Благодарил (а): 112 раз
Поблагодарили: 34 раза

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

Сообщение homester » Пн окт 26, 2020 6:38 pm

fandaymon писал(а):
Пн окт 26, 2020 5:59 pm
homester писал(а):
Пн окт 26, 2020 3:55 pm
Плохо, что из шаблона нельза передать параметр сценарию. Иначе можно было решить проблему без особых проблем,- Поставь (.+) диск (.+)
"Поставь SPACE диск 1". Один раз ручками набил пути и наслаждайся. Коллекция обычно редко пополняется.
Чего ж нельзя-то? Сценарию передаётся параметры $params в виде массива
Более того всё можно прям в шаблоне и сделать - в нём же можно писать точно такой же код, как в сценарии
Можно передать только цифры, строка не пролазит.
Действительно, зачем сценарий, если можно из шаблона запустить playMedia. Вот это я затупил !!!
За это сообщение автора homester поблагодарил:
Denis239tp (Ср окт 28, 2020 1:25 am)
Рейтинг: 1.16%
Raspberry Pi3 B+, v4.44, внешняя з/к
fandaymon
Сообщения: 1555
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

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

Сообщение fandaymon » Пн окт 26, 2020 7:36 pm

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 - там можно задавать команду в свободном виде - типа, А поставь-ка мне группу Спейс, или включи мне тяжёлый рок на кухне
За это сообщение автора fandaymon поблагодарил:
homester (Пн окт 26, 2020 8:09 pm)
Рейтинг: 1.16%
Аватара пользователя
xor
Сообщения: 2040
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 286 раз
Поблагодарили: 629 раз

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

Сообщение xor » Вт окт 27, 2020 12:33 am

fandaymon писал(а):
Пн окт 26, 2020 7:36 pm
Но проще такие вещи делать при помощи модуля api.ai - там можно задавать команду в свободном виде - типа, А поставь-ка мне группу Спейс, или включи мне тяжёлый рок на кухне
а модуль api.ai живой? его переписали на новую версию сервиса?
fandaymon
Сообщения: 1555
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

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

Сообщение fandaymon » Вт окт 27, 2020 12:36 am

xor писал(а):
Вт окт 27, 2020 12:33 am
fandaymon писал(а):
Пн окт 26, 2020 7:36 pm
Но проще такие вещи делать при помощи модуля api.ai - там можно задавать команду в свободном виде - типа, А поставь-ка мне группу Спейс, или включи мне тяжёлый рок на кухне
а модуль api.ai живой? его переписали на новую версию сервиса?
Вроде бы пока и так работает
За это сообщение автора fandaymon поблагодарил:
xor (Вт окт 27, 2020 12:45 am)
Рейтинг: 1.16%
Аватара пользователя
xor
Сообщения: 2040
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 286 раз
Поблагодарили: 629 раз

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

Сообщение xor » Вт окт 27, 2020 12:45 am

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

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

Сообщение tarasfrompir » Вт окт 27, 2020 4:32 pm

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
Все написано на основании этих статей - сам не програмист - землеупорядчик...
Так что не обессудь если что и если где тебя обидел
За это сообщение автора tarasfrompir поблагодарил:
Denis239tp (Ср окт 28, 2020 1:25 am)
Рейтинг: 1.16%
Спасибо нам ПОМОЖЕТ..!
Denis239tp
Сообщения: 62
Зарегистрирован: Пт янв 31, 2020 1:46 am
Откуда: Челябинская область
Благодарил (а): 11 раз
Поблагодарили: 10 раз

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

Сообщение Denis239tp » Вт окт 27, 2020 5:06 pm

Спасибо. Буду вечером пробовать
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 816 раз

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

Сообщение tarasfrompir » Вт окт 27, 2020 5:39 pm

Denis239tp писал(а):
Вт окт 27, 2020 5:06 pm
Спасибо. Буду вечером пробовать
Для спасибо есть пальчик вверх. Мелочь но приятно....
За это сообщение автора tarasfrompir поблагодарил:
Denis239tp (Ср окт 28, 2020 1:25 am)
Рейтинг: 1.16%
Спасибо нам ПОМОЖЕТ..!
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 816 раз

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

Сообщение tarasfrompir » Ср окт 28, 2020 3:05 pm

Проверил - ПОПРАВИЛ - код ниже (нашел ошибки - на ВЛС плеере играет на последней альфе )

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

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

$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);
За это сообщение автора tarasfrompir поблагодарили (всего 4):
Denis239tp (Ср окт 28, 2020 3:09 pm) • newz20 (Ср окт 28, 2020 3:20 pm) • Samir77 (Сб окт 31, 2020 12:37 am) • ipc2002 (Ср ноя 04, 2020 11:05 pm)
Рейтинг: 4.65%
Спасибо нам ПОМОЖЕТ..!
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 816 раз

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

Сообщение tarasfrompir » Ср окт 28, 2020 3:19 pm

За спасибо - и тебе тоже ... - Ты лучше отпиши робит ли ?
За это сообщение автора tarasfrompir поблагодарил:
Samir77 (Ср ноя 11, 2020 10:52 pm)
Рейтинг: 1.16%
Спасибо нам ПОМОЖЕТ..!
Ответить