Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Русский
    3. ioBroker
    4. Скрипты
    5. ioBroker скрипты
    6. Управление Kodi/Xbmc

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Управление Kodi/Xbmc

    This topic has been deleted. Only users with topic management privileges can see it.
    • I
      instalator last edited by

      Криво работает skipprevious и previous? во первых для разных player разные команды, во вторых не переключает на предыдущий трек а включает текущий сначала, надо тоже покурить)
      2858_w3.txt
      2858_w5.txt

      1 Reply Last reply Reply Quote 0
      • V
        vtec last edited by

        Вот так в списке отображает названия, но на главной все равно не хочет. Расширение .PLS

        UPD: То же самое что и m3u, короче если из потока коди может выдернуть meta info то отображает исполнителя иначе имя файла. Другого не дано.

        [playlist]
        Title1=Here enter name of the station
        File1=http://stream.radiosibir.ru:8090/HQ
        Length1=-1
        
        File2=G:\Music\DJ Bazil--Live at Fakel (26.08.2006).mp3
        Title2=absolute path on Windows
        
        NumberOfEntries=2
        Version=2
        
        1 Reply Last reply Reply Quote 0
        • V
          vtec last edited by

          Проиграть видео с Youtube

          {"jsonrpc": "2.0", "method": "Player.Open", "params":{"item": {"file" : "plugin://plugin.video.youtube/?action=play_video&videoid=LDZX4ooRsWs" }}, "id" : "1"}
          
          1 Reply Last reply Reply Quote 0
          • I
            instalator last edited by

            @vtec:

            Вот так в списке отображает названия, но на главной все равно не хочет. Расширение .PLS

            UPD: То же самое что и m3u, короче если из потока коди может выдернуть meta info то отображает исполнителя иначе имя файла. Другого не дано.

            [playlist]
            Title1=Here enter name of the station
            File1=http://stream.radiosibir.ru:8090/HQ
            Length1=-1
            
            File2=G:\Music\DJ Bazil--Live at Fakel (26.08.2006).mp3
            Title2=absolute path on Windows
            
            NumberOfEntries=2
            Version=2
            ```` `  
            

            Подправил, в списке отображает. Теперь как бы активировать текущий плейлист
            3443_lacrosse-ws.png

            1 Reply Last reply Reply Quote 0
            • I
              instalator last edited by

              Мой вариант скрипта из первого поста (на данный момент 😉 )

              on({id: 'javascript.0.kodi.ExecuteAction', change: 'any'}, function (obj) {
                  if(obj.newState.val !== '' || typeof obj.newState.val !== "undefined"){
                      if (obj.newState.val == 'next' || obj.newState.val == 'previous'){sendCommandPlayer(obj.newState.val);}
                      else {sendCommand(obj.newState.val);}
                  }else{
                      log('Не задана команда.');
                  }
              });
              
              // Функция отправки команды на медиацентр(kodi)
              function sendCommand(name){
                  log('Отправлена команда Kodi: '+name);
                  var options = {
                      url: url+'/jsonrpc',
                      json: true,
                      body: {
                          "jsonrpc":"2.0",
                          "method": "Input.ExecuteAction",
                          "params": { "action": name},
                          "id":1
                      },
                  };
                  // Отправка данных методом POST.
                  request.post(options, function (error, response, body) {
                      log('Ответ от Kodi: '+JSON.stringify(body));
                  });
              }
              ///////////////////////////////////////////////////////////////////////////////////////
              function sendCommandPlayer(name){
                  log('Отправлена команда Kodi: '+name);
                  var options = {
                      url: url+'/jsonrpc', //{"jsonrpc":"2.0","method":"Player.GetActivePlayers","id":1}
                      json: true,
                      body: {
                          "jsonrpc":"2.0",
                          "method": "Player.GetActivePlayers",
                          "id":1
                      },
                  };
                  // Отправка данных методом POST.
                  request.post(options, function (error, response, body) {
                              log('ТЕЛО - '+body);
                              log('Ответ от Kodi: '+JSON.stringify(body));
                             // log('Запущен плеер - '+body.result[0].type); //{"id":1,"jsonrpc":"2.0","result":[{"playerid":0,"type":"audio"}]}
                              Activ_Player = body.result[0].playerid;
                              Type_Player = body.result[0].type;
                              if (Activ_Player == '1' && Type_Player == 'video'){
                                      setState('javascript.0.kodi.ExecuteAction', 'fullscreen');
                              }
                          var options = {
                              url: url+'/jsonrpc',
                              json: true,
                              body: {
                                  "jsonrpc":"2.0",
                                  "method": "Player.GoTo",
                                  "params": { "playerid":Activ_Player,"to":name},
                                  "id":1
                              },
                          };
                          // Отправка данных методом POST.
                          setTimeout(function() {
                              request.post(options, function (error, response, body) {
                              log('Ответ от Kodi: '+JSON.stringify(body));
                              });}, 500);
                  });
              }
              
              

              Если включен IPTV плеер возвращает - 1 и тип видео, если IPTV включен не на полный экран то переключение не работает, в коде сделал проверку если плеер = 1 и тип = видео - Включаем сначала на полный экран, потом уже next.

              ****ДОБАВЛЕНО:

              Для переключения каналов оказывается есть channelup для метода Input.ExecuteAction****

              1 Reply Last reply Reply Quote 0
              • I
                instalator last edited by

                Еще одна непонятка:

                {"jsonrpc":"2.0","id":1,"method":"Playlist.GetItems","params":{"playlistid":0,"properties":["title"]}}]

                Для плейлиста - 0 (музыка) Данные отдает нормально.

                {"jsonrpc":"2.0","id":1,"method":"Playlist.GetItems","params":{"playlistid":1,"properties":["title"]}}]

                При включенном IPTV отдает:

                {"id":1,"jsonrpc":"2.0","result":{"limits":{"end":0,"start":0,"total":0}}}

                Как бы получить список каналов из плелиста.

                1 Reply Last reply Reply Quote 0
                • I
                  instalator last edited by

                  В этом посте буду выкладывать JSON запросы:

                  - Получаем инфо о текущем канале PVR(На видео пока не проверял)

                  {jsonrpc:2.0,id:3,method:Player.GetItem,params:{playerid:1,properties:[album,albumartist,artist,director,episode,fanart,file,genre,plot,rating,season,showtitle,studio,imdbnumber,tagline,thumbnail,title,track,writer,year,streamdetails,originaltitle,cast,playcount]}}

                  - Получаем инфо о воспроизводимом файле

                  {"jsonrpc":"2.0","id":2,"method":"Player.GetProperties","params":{"playerid":1,"properties":["audiostreams","canseek","currentaudiostream","currentsubtitle","partymode","playlistid","position","repeat","shuffled","speed","subtitleenabled","subtitles","time","totaltime","type"]}}

                  - узнаем уровень громкости

                  {"jsonrpc":"2.0","id":1,"method":"Application.GetProperties","params":{"properties":["volume","muted"]}}

                  - Получить список видеофайлов из библиотеки

                  {"jsonrpc":"2.0","id":1,"method":"VideoLibrary.GetMovieSets","params":{"properties":["thumbnail","title","fanart","playcount"],"limits":{"start":0,"end":500}}}

                  - Получить полную инфу из видеобиблиотеки

                  {"jsonrpc":"2.0","id":1,"method":"VideoLibrary.GetMovies","params":{"properties":["director","genre","plot","rating","runtime","sorttitle","studio","title","trailer","playcount","originaltitle","tagline","imdbnumber","year","set","setid","dateadded","top250","file","thumbnail","resume","streamdetails","country","tag","mpaa","fanart","cast","votes","writer"],"limits":{"start":0,"end":500}}}

                  - Получить список каналов IPTV

                  {"jsonrpc":"2.0","id":1,"method":"PVR.GetChannels","params":{"channelgroupid":"alltv","properties":["channel","channeltype","hidden","lastplayed","locked","thumbnail","broadcastnow"]}}

                  - Получить список радиоканалов IPTV

                  {"jsonrpc":"2.0","id":1,"method":"PVR.GetChannels","params":{"channelgroupid":"allradio","properties":["channel","channeltype","hidden","lastplayed","locked","thumbnail","broadcastnow"]}}

                  - Инфа о текущем воспроизведении

                  {"jsonrpc":"2.0","id":2,"method":"Player.GetProperties","params":{"playerid":0,"properties":["audiostreams","canseek","currentaudiostream","currentsubtitle","partymode","playlistid","position","repeat","shuffled","speed","subtitleenabled","subtitles","time","totaltime","type"]}}

                  - Получить текущий плейлист АУДИО

                  {"jsonrpc":"2.0","id":1,"method":"Playlist.GetItems","params":{"playlistid":0,"properties":["title","thumbnail","fanart","rating","genre","artist","track","season","episode","year","duration","album","showtitle","playcount","file"],"limits":{"start":0,"end":750}}}

                  - воспроизведение в случайном порядке

                  {"jsonrpc":"2.0","id":1,"method":"Player.SetShuffle","params":{"playerid":0,"shuffle":true}}

                  - повтор воспроизведения

                  {"jsonrpc":"2.0","id":1,"method":"Player.SetRepeat","params":{"playerid":0,"repeat":"all"}}

                  {"jsonrpc":"2.0","id":1,"method":"Player.SetRepeat","params":{"playerid":0,"repeat":"off"}}

                  {"jsonrpc":"2.0","id":1,"method":"Player.SetRepeat","params":{"playerid":0,"repeat":"one"}}

                  - рейтинг

                  {"jsonrpc":"2.0","id":1,"method":"AudioLibrary.SetSongDetails","params":{"songid":-1,"rating":5}}

                  - PLAY\PAUSE

                  {"jsonrpc":"2.0","id":1,"method":"Player.PlayPause","params":{"playerid":0}}

                  Гибернация (Проверял на винде)

                  {"jsonrpc":"2.0","id":1,"method":"System.Hibernate"}

                  1 Reply Last reply Reply Quote 0
                  • I
                    instalator last edited by

                    Набросал маленький скриптик для отображения сообщений на экране телевизора.

                    createState('kodi.Message', '');
                    var url = 'http://192.168.1.205';
                    var request = require('request');
                    on({id: 'javascript.0.kodi.Message', change: 'any'}, function (obj) { //В формате Заголовок#Сообщение
                        if(obj.newState.val !== '' || typeof obj.newState.val !== "undefined"){
                            sendMessage(obj.newState.val);
                        }else{
                            log('Не задана команда.');
                        }
                    });
                    // Функция отправки сообщения(kodi)
                    function sendMessage(msg){
                        var title = msg.match(/(.*)\#/g).toString().replace(/[#]+/g, '');
                        var message = msg.match(/#(.*)/g).toString().replace(/[#]+/g, '');
                        log('Отправлена сообщение Kodi: '+title+' - '+message);
                        var options = {
                            url: url+'/jsonrpc',
                            json: true,
                            body: {
                                "jsonrpc":"2.0",
                                "method": "GUI.ShowNotification",
                                "params": {"title":title,"message":message},
                                "id":1
                            },
                        };
                        // Отправка данных методом POST.
                        request.post(options, function (error, response, body) {
                            if (!error && response.statusCode == 200) {
                            log('Ответ от Kodi: '+JSON.stringify(body));
                            }
                        });
                    }
                    
                    

                    И код для отправки сообщения из скриптов:

                    setState('javascript.0.kodi.Message', 'Внимание#Походу отключили горячую воду');
                    

                    Вообще запрос поддерживает еще и вывод изображения. (Поддерживает локальные и удаленные) + есть уровень важности "image": "info", "warning", "error". При уровне warning Kodi будет издавать сигнал при появлении сообщения.

                    Так же можно задать задержку (время отображения) сообщения.

                    Сам запрос имеет вид:

                    {“jsonrpc":"2.0″,"method":"GUI.ShowNotification","params":{“title":"Sample Title","message":"Sample Message","image":"","displaytime":5000},"id":1}
                    
                    1 Reply Last reply Reply Quote 0
                    • aurodionov
                      aurodionov last edited by

                      Оставлю тут, мож кому пригодится

                      https://github.com/tillbaks/node-xbmc

                      1 Reply Last reply Reply Quote 0
                      • I
                        instalator last edited by

                        @aurodionov:

                        Оставлю тут, мож кому пригодится

                        https://github.com/tillbaks/node-xbmc `
                        Это что то старое.

                        Я форкнул https://github.com/instalator/kodi-ws

                        Все хочу сесть за драйвер, но даже не знаю стоит ли начинать, опыта мало.

                        Хотя можно активизировать тему в плане хотелок по kodi драйверу чтобы определится с функционалом драйвера.

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        711
                        Online

                        31.7k
                        Users

                        79.8k
                        Topics

                        1.3m
                        Posts

                        3
                        34
                        9629
                        Loading More Posts
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes
                        Reply
                        • Reply as topic
                        Log in to reply
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                        The ioBroker Community 2014-2023
                        logo