Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Русский
  3. ioBroker
  4. Скрипты
  5. ioBroker скрипты
  6. Поиск музыки в Вконтакте

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    10
    1
    116

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.4k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.3k

Поиск музыки в Вконтакте

Geplant Angeheftet Gesperrt Verschoben ioBroker скрипты
8 Beiträge 2 Kommentatoren 2.4k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • I Offline
    I Offline
    instalator
    schrieb am zuletzt editiert von
    #1

    Сделал скриптик который ищет песню на сайте вконтакте, после поиска передаю 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\>
    

    Высокий уровень Децибел вреден для здоровья!

    http://blog.instalator.ru/

    1 Antwort Letzte Antwort
    0
    • V Offline
      V Offline
      vtec
      schrieb am zuletzt editiert von
      #2

      Спасибо, как нибудь затестю.

      Еще лучше было бы воспроизвести музыку из своего playlist'а вконтакте

      1 Antwort Letzte Antwort
      0
      • I Offline
        I Offline
        instalator
        schrieb am zuletzt editiert von
        #3

        Заменил код в посте.
        @vtec:

        Спасибо, как нибудь затестю.

        Еще лучше было бы воспроизвести музыку из своего playlist'а вконтакте `
        Про свой плейлист я тоже думаю как сделать, поставил на коди дополнение ВК, но оно зараза не хочет автоматом воспроизводить следующий трек, т.е. один проиграл и молчит.

        Из ВК свой плейлист вытянуть не проблема, нада его передать в Коди плейлистом, команды такие есть но еще не занимался, если первым сделаю. обязательно выложу.

        Высокий уровень Децибел вреден для здоровья!

        http://blog.instalator.ru/

        1 Antwort Letzte Antwort
        0
        • I Offline
          I Offline
          instalator
          schrieb am zuletzt editiert von
          #4

          Блин токен вроде бессрочный выдается, но сегодня сказал что не канает, пришлось руками получать новый токен.

          BlueFox на сайте есть несколько модулей для ВК https://www.npmjs.com/search?q=vkontakte

          Как их прикрутить можно к брокеру?

          Поставил на телефон приложение Асистент Дуся, там куча настроек, умеет искать в ВК и транслировать звук на DLNA плеер(в том числе KODI).

          не нравится только что в офлайне текст не распазнает, + там есть настройки для управления умным домом на OpenHub, может есть смысл сделать драйвер для конвертации запросов? так же работает с приложением Tasker/.

          Высокий уровень Децибел вреден для здоровья!

          http://blog.instalator.ru/

          1 Antwort Letzte Antwort
          0
          • I Offline
            I Offline
            instalator
            schrieb am zuletzt editiert von
            #5

            @instalator:

            Заменил код в посте.
            @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

            Высокий уровень Децибел вреден для здоровья!

            http://blog.instalator.ru/

            1 Antwort Letzte Antwort
            0
            • I Offline
              I Offline
              instalator
              schrieb am zuletzt editiert von
              #6

              Добавлено:

              • Обновил код для плейлиста в формате 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]
              

              Высокий уровень Децибел вреден для здоровья!

              http://blog.instalator.ru/

              1 Antwort Letzte Antwort
              0
              • V Offline
                V Offline
                vtec
                schrieb am zuletzt editiert von
                #7

                Kodi supports PLS, Winamp M3U, Cue Sheets, and Kodi Smart Playlist (XSP) playlists.

                Нужно пробовать другой playlist.

                1 Antwort Letzte Antwort
                0
                • I Offline
                  I Offline
                  instalator
                  schrieb am zuletzt editiert von
                  #8

                  @vtec:

                  Kodi supports PLS, Winamp M3U, Cue Sheets, and Kodi Smart Playlist (XSP) playlists.

                  Нужно пробовать другой playlist. `
                  Это не проблема, есть время попробовать эти типы плейлистов? у меня ночь я спать.

                  Высокий уровень Децибел вреден для здоровья!

                  http://blog.instalator.ru/

                  1 Antwort Letzte Antwort
                  0
                  Antworten
                  • In einem neuen Thema antworten
                  Anmelden zum Antworten
                  • Älteste zuerst
                  • Neuste zuerst
                  • Meiste Stimmen


                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  803

                  Online

                  32.5k

                  Benutzer

                  81.7k

                  Themen

                  1.3m

                  Beiträge
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                  ioBroker Community 2014-2025
                  logo
                  • Anmelden

                  • Du hast noch kein Konto? Registrieren

                  • Anmelden oder registrieren, um zu suchen
                  • Erster Beitrag
                    Letzter Beitrag
                  0
                  • Home
                  • Aktuell
                  • Tags
                  • Ungelesen 0
                  • Kategorien
                  • Unreplied
                  • Beliebt
                  • GitHub
                  • Docu
                  • Hilfe