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

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

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

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

      Я маг и волшебник 😄

      Научился каналы включать

      http://192.168.0.105/jsonrpc?request={"jsonrpc":"2.0","id":1,"method":"Player.Open","params":{"item":{"channelid":1}}}
      

      Вместе мы можем на многое 😉

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

        @vtec:

        Я маг и волшебник 😄

        Научился каналы включать

        http://192.168.0.105/jsonrpc?request={"jsonrpc":"2.0","id":1,"method":"Player.Open","params":{"item":{"channelid":1}}}
        

        Вместе мы можем на многое 😉 `
        У меня получилось спарсить свой плейлист, сохранить его в файл m3u и отдать Коди. Но вот он зараза так и не показывает названия треков (берет их из ссылки). Курю дальше
        2858_alexa1.png
        2858_alexa2.png
        2858_alexa3.png
        2858_alexa4.png
        2858_alexa5.png

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

          Еще можно сообщение показывать(как вариант показывать title):

           {"jsonrpc": "2.0", "method": "GUI.ShowNotification", "params":{"title":"Switch to Channel 1","message":"1 Live TV Channel"},"id": "0"}
          
          
          1 Reply Last reply Reply Quote 0
          • I
            instalator last edited by

            @vtec:

            Еще можно сообщение показывать(как вариант показывать title):

             {"jsonrpc": "2.0", "method": "GUI.ShowNotification", "params":{"title":"Switch to Channel 1","message":"1 Live TV Channel"},"id": "0"}
            
            ```` `  
            

            Найди лучше как показать плейлист на экране текущий.

            http://192.168.0.105/jsonrpc?request={"}}}

            допустим отправил файл а как его в плейлисте увидеть?

            аналогично {"jsonrpc":"2.0","id":1,"method":"Playlist.Add","params":{"playlistid":0,"item":{"directory":"C:\temp2\test\test.m3u","recursive":true}}}

            В углу показывает кол-во треков в плейлисте а как список вывести хз.

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

              Может у тебя m3u формат файла не верный? Покажи как у тебя выглядит файл

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

                @vtec:

                Может у тебя m3u формат файла не верный? Покажи как у тебя выглядит файл `

                ! #EXTM3U
                ! #EXTINF:1, R.E.M. - Losing My Religion [1991]
                ! http://cs4-1v4.vk-cdn.net/p6/689ce9bfeb … wvbfYlOHgs
                и тд

                Вот так выглядит Коди при воспроизведении.
                266_tttttt.png

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

                  У меня локально вот такой плей лист открыл

                  #EXTM3U
                  #EXTINF:306,Amethystium - Arcus
                  E:\music\Amethystium\Evermind\Amethystium-Arcus.mp3
                  #EXTINF:254,Amethystium - Barefoot
                  E:\music\Amethystium\Evermind\Amethystium-Barefoot.mp3
                  #EXTINF:262,Amethystium - Break of Dawn
                  E:\music\Amethystium\Evermind\Amethystium-Break_of_Dawn.mp3
                  
                  
                  1 Reply Last reply Reply Quote 0
                  • I
                    instalator last edited by

                    @vtec:

                    У меня локально вот такой плей лист открыл

                    #EXTM3U
                    #EXTINF:306,Amethystium - Arcus
                    E:\music\Amethystium\Evermind\Amethystium-Arcus.mp3
                    #EXTINF:254,Amethystium - Barefoot
                    E:\music\Amethystium\Evermind\Amethystium-Barefoot.mp3
                    #EXTINF:262,Amethystium - Break of Dawn
                    E:\music\Amethystium\Evermind\Amethystium-Break_of_Dawn.mp3
                    
                    ```` `  
                    

                    Открыть то открыл, а треки показывает? имя берет из плейлиста или из имени файла?

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

                      А вот так он показывает только Avtoradio

                      #EXTM3U
                      #EXTINF:306,Amethystium - Arcus
                      http://cast.radiogroup.com.ua:8000/avtoradio
                      #EXTINF:254,Amethystium - Barefoot
                      http://cast.radiogroup.com.ua:8000/avtoradio
                      #EXTINF:262,Amethystium - Break of Dawn
                      http://cast.radiogroup.com.ua:8000/avtoradio
                      

                      Может он еще ID tag читает из mp3 файла

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

                        В общем если есть ID tag в mp3 файле то он читает его.

                        Если там поля не заполнены, то отображает имя файла, что у тебя и происходит.

                        1 Reply Last reply Reply Quote 0
                        • 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

                                            436
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            3
                                            34
                                            9653
                                            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