NEWS
Поиск музыки в Вконтакте
-
Сделал скриптик который ищет песню на сайте вконтакте, после поиска передаю url на медиацентр и начинается воспроизведение.
Поиск организовал голосовым запросом.
ДОБАВЛЕНО:
В ВК создаем Standalone-приложение.
Ссылка для получения tokena
https://oauth.vk.com/authorize?client_id=ID-приложения:&scope=audio,offline&redirect_uri=http://api.vkontakte.ru/blank.html&response_type=token
createState('vkontakte.search_track', ''); var urlmp3 = ''; var url = 'https://api.vk.com/method/'; var request = require('request'); var token = 'e8cc075848cc519,,,,,,,,,,,,,,,,,,,,,,10e7f19104d4b'; on({id: 'javascript.0.vkontakte.search_track', change: 'any'}, function (obj) { if(obj.newState.val !== '' || typeof obj.newState.val !== "undefined"){ sendCommandVK(obj.newState.val); log('URL найденного трека на VK: '+ urlmp3); }else{log('Не задана команда.');} }); // Функция отправки команды на сайт VK function sendCommandVK(name){ log('Поиск трека в VK: '+name); url = url+'audio.search.xml?access_token='+token+'&count=1&q='+name+'&sort=2&v=5.40'; //&auto_complete=1 var options = { url: url, }; // Отправка данных методом POST. request.post(options, function (err, status, body, callback) { log('Ответ от VK: '+body); // Парсим данные urlmp3 = body.match(/\<url\>(.*)\<\/url\>/g); url_search = urlmp3.toString().replace(/\<url>/g, "").replace(/\<\/url>/g, ""); log('URL найденного трека: '+ url_search); if (getState('javascript.0.Scenes.Kodi').val == 'false'){ setState('javascript.0.Scenes.Kodi', 'true'); setTimeout(function() {setState('javascript.0.kodi.PlayerOpen', url_search);}, 10000); } if (getState('javascript.0.Scenes.Kodi').val == 'true'){ setState('javascript.0.kodi.PlayerOpen', urlmp3); } }); }</url></url\>
-
Спасибо, как нибудь затестю.
Еще лучше было бы воспроизвести музыку из своего playlist'а вконтакте
-
Заменил код в посте.
@vtec:Спасибо, как нибудь затестю.
Еще лучше было бы воспроизвести музыку из своего playlist'а вконтакте `
Про свой плейлист я тоже думаю как сделать, поставил на коди дополнение ВК, но оно зараза не хочет автоматом воспроизводить следующий трек, т.е. один проиграл и молчит.Из ВК свой плейлист вытянуть не проблема, нада его передать в Коди плейлистом, команды такие есть но еще не занимался, если первым сделаю. обязательно выложу.
-
Блин токен вроде бессрочный выдается, но сегодня сказал что не канает, пришлось руками получать новый токен.
BlueFox на сайте есть несколько модулей для ВК https://www.npmjs.com/search?q=vkontakte
Как их прикрутить можно к брокеру?
Поставил на телефон приложение Асистент Дуся, там куча настроек, умеет искать в ВК и транслировать звук на DLNA плеер(в том числе KODI).
не нравится только что в офлайне текст не распазнает, + там есть настройки для управления умным домом на OpenHub, может есть смысл сделать драйвер для конвертации запросов? так же работает с приложением Tasker/.
-
Заменил код в посте.
@vtec:Спасибо, как нибудь затестю.
Еще лучше было бы воспроизвести музыку из своего playlist'а вконтакте `
Про свой плейлист я тоже думаю как сделать, поставил на коди дополнение ВК, но оно зараза не хочет автоматом воспроизводить следующий трек, т.е. один проиграл и молчит.Из ВК свой плейлист вытянуть не проблема, нада его передать в Коди плейлистом, команды такие есть но еще не занимался, если первым сделаю. обязательно выложу. `
Никак немогу найти инфу как передать title для файла из ссылки.jsonrpc?request={"jsonrpc":"2.0","id":"1","method":"Player.Open","params":{"item":{"file":"http://cast.radiogroup.com.ua:8000/avtoradio"}}}
Вообщем с плейлистом из контакта получается либо парсить, потом конвертить в M3U и сохранять локально, после чего в Kodi передавать ссыль на плейлист. Либо в цикле добавлять по одному треку
jsonrpc?request={"jsonrpc":"2.0","id":1,"method":"Playlist.Add","params":{"playlistid":1,"item":{"file":"http://cast.radiogroup.com.ua:8000/avtoradio"}}}
Вот только в плейлисте они без названий будут тогда. да и в плейлисте ВК у меня щас больше 900 треков).
Так что буду двигатся в сторону создания плейлиста локальным файлом.
1518_pv.txt -
Добавлено:
-
Обновил код для плейлиста в формате PLS
-
Добавил проверку, Если плейлист не изменился с прошлого раза то открываем старый.
Парсим плейлист пользователя из ВК.
В vkontakte.search_playlist передаем id пользователя (ваш).
Код скрипта ВК:
`createState('vkontakte.search_playlist', ''); createState('vkontakte.playlist_count', ''); var url = 'https://api.vk.com/method/'; var request = require('request'); var token = 'db9601677f70,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0471cbfd1b2b044a91f01'; on({id: 'javascript.0.vkontakte.search_playlist', change: 'any'}, function (obj) { if(obj.newState.val !== '' || typeof obj.newState.val !== "undefined"){ sendsearch_playlist(obj.newState.val); }else{log('Не задана команда.');} }); /*****************************Загрузка плейлиста***************************************/ function sendsearch_playlist(user_id){ log('Плейлист пользователя VK: '+ user_id); url = url+'audio.get?user_id='+user_id+'&access_token='+token+'&v=5.40'; var options = { url: url, }; // Отправка данных методом POST. request.post(options, function (error, response, body, callback) { if (!error && response.statusCode == 200) { var playlist = ''; log('Код ответа от сервера'+response.statusCode); log('Ответ от VK: '+body); var jsonData = JSON.parse(body); count_playlist = jsonData.response.items.length; log('Длинна JSON' + count_playlist); if (jsonData.response.items.length != getState('vkontakte.playlist_count').val){ for (var i = 0; i < jsonData.response.items.length; i++) { if (i === 0 || i == '0'){ playlist += '[playlist]\r\n'+'Title'+(i+1)+'='+jsonData.response.items[i].artist+' - '+ jsonData.response.items[i].title+'\r\nFile'+(i+1)+'='+jsonData.response.items[i].url+'\r\nLength'+(i+1)+'=-1\r\n'; } else { playlist += 'Title'+(i+1)+'='+jsonData.response.items[i].artist+' - '+ jsonData.response.items[i].title+'\r\nFile'+(i+1)+'='+jsonData.response.items[i].url+'\r\nLength'+(i+1)+'=-1\r\n'; } } playlist +='NumberOfEntries='+jsonData.response.items.length+'\r\nVersion=2'; setState('vkontakte.playlist_count', count_playlist); fs.writeFileSync('\\\\SERVER-PC\\SERVER\\plst_VK.pls', playlist); log('Файл успешно сохранен'); setState('javascript.0.kodi.PlayerOpenPlaylist', 'smb://SERVER-PC//SERVER/plst_VK.pls'); } else{ setState('javascript.0.kodi.PlayerOpenPlaylist', 'smb://SERVER-PC//SERVER/plst_VK.pls'); } } }); }` Код скрипта Коди: `~~[code]~~createState('kodi.PlayerOpenPlaylist', ''); var url = 'http://192.168.1.10'; //адрес коди var request = require('request'); on({id: 'javascript.0.kodi.PlayerOpenPlaylist', change: 'any'}, function (obj) { if(obj.newState.val !== '' || typeof obj.newState.val !== "undefined"){ sendPlayerOpenPlaylist(obj.newState.val); }else{ log('Не задана команда.'); } }); function sendPlayerOpenPlaylist(url_search){ log('Отправлена ссылка на плейлист Kodi: '+url_search); var options = { url: url+'/jsonrpc', json: true, //{"jsonrpc":"2.0","id":1,"method":"Playlist.Clear","params":{"playlistid":0}} body: { "jsonrpc":"2.0", "method": "Playlist.Clear", "params": {"playlistid":0}, "id":1 }, }; request.post(options, function (err, status, body) { log('Ответ от Kodi: '+JSON.stringify(body)); var options = { url: url+'/jsonrpc', json: true, //{"jsonrpc":"2.0","id":1,"method":"Playlist.Add","params":{"playlistid":0,"item":{"directory":"C:\\temp2\\test\\test.m3u","recursive":true}}} body: { "jsonrpc":"2.0", "method": "Playlist.Add", "params": {"playlistid":0,"item":{"directory":url_search,"recursive":true}}, "id":1 }, }; request.post(options, function (err, status, body) { log('Ответ от Kodi: '+JSON.stringify(body)); var options = { url: url+'/jsonrpc', // json: true, //{"jsonrpc":"2.0","id":1,"method":"Player.Open","params":{"item":{"playlistid":0,"position":0}}} body: { "jsonrpc":"2.0", "method": "Player.Open", "params": {"item":{"playlistid":0,"position":0}}, "id":1 }, }; request.post(options, function (err, status, body) { log('Ответ от Kodi: '+JSON.stringify(body)); setState('javascript.0.kodi.ExecuteAction', 'fullscreen'); }); }); }); [/code]`[/i][/i][/i][/i][/i][/i]
-
-
Kodi supports PLS, Winamp M3U, Cue Sheets, and Kodi Smart Playlist (XSP) playlists.
Нужно пробовать другой playlist.
-
Kodi supports PLS, Winamp M3U, Cue Sheets, and Kodi Smart Playlist (XSP) playlists.
Нужно пробовать другой playlist. `
Это не проблема, есть время попробовать эти типы плейлистов? у меня ночь я спать.