public LiveTvTunerInfoDto GetTunerInfoDto(string serviceName, LiveTvTunerInfo info, string channelName)
        {
            var dto = new LiveTvTunerInfoDto
            {
                Name        = info.Name,
                Id          = info.Id,
                Clients     = info.Clients,
                ProgramName = info.ProgramName,
                SourceType  = info.SourceType,
                Status      = info.Status,
                ChannelName = channelName
            };

            if (!string.IsNullOrEmpty(info.ChannelId))
            {
                dto.ChannelId = GetInternalChannelId(serviceName, info.ChannelId).ToString("N");
            }

            if (!string.IsNullOrEmpty(info.RecordingId))
            {
                dto.RecordingId = GetInternalRecordingId(serviceName, info.RecordingId).ToString("N");
            }

            return(dto);
        }
Example #2
0
    private LiveTvTunerInfo GetTunerInformation(Tuner i)
    {
        LiveTvTunerInfo tunerinfo = new LiveTvTunerInfo();

        tunerinfo.Name   = i.TunerName;
        tunerinfo.Status = GetStatus(i);

        if (i.Recordings.Count > 0)
        {
            tunerinfo.ChannelId = i.Recordings.Single().Recording.ChannelOid.ToString(CultureInfo.InvariantCulture);
        }

        return(tunerinfo);
    }
Example #3
0
        private LiveTvTunerInfo GetTunerInformation(Tuner i)
        {
            LiveTvTunerInfo tunerinfo = new LiveTvTunerInfo();

            tunerinfo.Name   = i.tunerName;
            tunerinfo.Status = GetStatus(i);

            if (i.recordings.Count > 0)
            {
                tunerinfo.ChannelId = i.recordings.Single().Recording.channelOID.ToString();
            }

            return(tunerinfo);
        }
        /*
         * <dump>
         *  channelId : 240
         *  channelNumber : 40
         *  channelName : zdf.kultur
         *  eventId : 11708150
         *  nextEventId : 11708152
         *  services :       name : CXD2837 DVB-C DVB-T/T2 (adapter 7)/KBW: 370,000 kHz/zdf.kultur
         *    type : SDTV
         * ,       name : CXD2837 DVB-C DVB-T/T2  (adapter 6)/KBW: 370,000 kHz/zdf.kultur
         *    type : SDTV
         * ,       name : STV0367 DVB-C DVB-T (adapter 5)/KBW: 370,000 kHz/zdf.kultur
         *    type : SDTV
         * ,       name : STV0367 DVB-C DVB-T (adapter 4)/KBW: 370,000 kHz/zdf.kultur
         *    type : SDTV
         * ,       name : CXD2837 DVB-C DVB-T/T2 (adapter 3)/KBW: 370,000 kHz/zdf.kultur
         *    type : SDTV
         * ,       name : CXD2837 DVB-C DVB-T/T2 (adapter 2)/KBW: 370,000 kHz/zdf.kultur
         *    type : SDTV
         * ,       name : STV0367 DVB-C DVB-T (adapter 1)/KBW: 370,000 kHz/zdf.kultur
         *    type : SDTV
         * ,       name : STV0367 DVB-C DVB-T (adapter 0)/KBW: 370,000 kHz/zdf.kultur
         *    type : SDTV
         * ,
         *  tags : 1, 2,
         *  method : channelAdd
         * </dump>
         */

        public Task <List <LiveTvTunerInfo> > buildTunerInfos(CancellationToken cancellationToken)
        {
            return(Task.Factory.StartNew <List <LiveTvTunerInfo> >(() =>
            {
                List <LiveTvTunerInfo> result = new List <LiveTvTunerInfo>();
                lock (_data)
                {
                    foreach (HTSMessage currMessage in _data.Values)
                    {
                        if (cancellationToken.IsCancellationRequested)
                        {
                            _logger.LogInformation("[TVHclient] TunerDataHelper.buildTunerInfos: cancel requst received. Returning only partly results");
                            return result;
                        }

                        string channelId = "";
                        if (currMessage.containsField("channelId"))
                        {
                            channelId = "" + currMessage.getInt("channelId");
                        }

                        string programName = "";
                        if (currMessage.containsField("channelName"))
                        {
                            programName = currMessage.getString("channelName");
                        }

                        IList services = null;
                        if (currMessage.containsField("services"))
                        {
                            services = currMessage.getList("services");
                        }
                        if (services != null)
                        {
                            foreach (HTSMessage currService in services)
                            {
                                string name = "";
                                if (currService.containsField("name"))
                                {
                                    name = currService.getString("name");
                                }
                                else
                                {
                                    continue;
                                }
                                string type = "";
                                if (currService.containsField("type"))
                                {
                                    type = currService.getString("type");
                                }

                                LiveTvTunerInfo ltti = new LiveTvTunerInfo();
                                ltti.Id = name;
                                ltti.Name = name;
                                ltti.ProgramName = programName;
                                ltti.SourceType = type;
                                ltti.ChannelId = channelId;
                                ltti.Status = LiveTvTunerStatus.Available;

                                ltti.CanReset = false; // currently not possible

                                //ltti.Clients // not available from TVheadend
                                //ltti.RecordingId // not available from TVheadend

                                result.Add(ltti);
                            }
                        }
                    }
                }
                return result;
            }));
        }
        public Task <LiveTvServiceStatusInfo> GetStatusInfoAsync(CancellationToken cancellationToken)
        {
            LiveTvServiceStatusInfo result;

            var configurationValidationResult = Plugin.Instance.Configuration.Validate();
            var version = Assembly.GetExecutingAssembly().GetName().Version.ToString();

            // Validate configuration first
            if (!configurationValidationResult.IsValid)
            {
                result = new LiveTvServiceStatusInfo()
                {
                    HasUpdateAvailable = false,
                    Status             = LiveTvServiceStatus.Unavailable,
                    StatusMessage      = configurationValidationResult.Summary,
                    Tuners             = new List <LiveTvTunerInfo>(),
                    Version            = String.Format("MediaPortal Plugin: {0} - MPExtended Service: unavailable", version)
                };
            }
            else
            {
                try
                {
                    // Test connections to both the streaming and tv proxy
                    var response = Plugin.StreamingProxy.GetStatusInfo(cancellationToken);
                    response = Plugin.TvProxy.GetStatusInfo(cancellationToken);

                    var activeCards = Plugin.TvProxy.GetActiveCards(cancellationToken);
                    var cards       = Plugin.TvProxy.GetTunerCards(cancellationToken).Where(c => c.Enabled).Select(c =>
                    {
                        var activeDetails = activeCards.LastOrDefault(ac => ac.Id == c.Id);
                        var tunerInfo     = new LiveTvTunerInfo()
                        {
                            Id   = c.Id.ToString(CultureInfo.InvariantCulture),
                            Name = c.Name,
                        };
                        if (activeDetails != null)
                        {
                            tunerInfo.ChannelId   = activeDetails.ChannelId.ToString(CultureInfo.InvariantCulture);
                            tunerInfo.ProgramName = Plugin.TvProxy.GetCurrentProgram(cancellationToken, activeDetails.ChannelId);
                            tunerInfo.SourceType  = Enum.GetName(typeof(WebCardType), activeDetails.Type);
                            tunerInfo.Clients     = new List <string>()
                            {
                                activeDetails.User.Name
                            };
                            tunerInfo.Status =
                                activeDetails.IsRecording ? LiveTvTunerStatus.RecordingTv :
                                activeDetails.IsTunerLocked ? LiveTvTunerStatus.LiveTv : LiveTvTunerStatus.Available;
                        }
                        return(tunerInfo);
                    }).ToList();

                    result = new LiveTvServiceStatusInfo()
                    {
                        HasUpdateAvailable = (response.ServiceVersion != "0.6.0.4-Emby") ? true : false,
                        Status             = LiveTvServiceStatus.Ok,
                        StatusMessage      = String.Format("MediaPortal Plugin: {0} - MPExtended Service: {1}", version, response.ServiceVersion),
                        Tuners             = cards,
                        Version            = String.Format("MediaPortal Plugin: {0} - MPExtended Service: {1}", version, response.ServiceVersion)
                    };
                }
                catch (Exception ex)
                {
                    Plugin.Logger.Error(ex, "Exception occured getting the MPExtended Service status");

                    result = new LiveTvServiceStatusInfo()
                    {
                        HasUpdateAvailable = false,
                        Status             = LiveTvServiceStatus.Unavailable,
                        StatusMessage      = "Unable to establish a connection with MPExtended - check your settings",
                        Tuners             = new List <LiveTvTunerInfo>(),
                        Version            = version
                    };
                }
            }

            return(Task.FromResult(result));
        }
Example #6
0
        public async Task <LiveTvServiceStatusInfo> GetStatusInfoAsync(CancellationToken cancellationToken)
        {
            EnsureSetup();

            bool   upgradeAvailable = false;
            string serverVersion    = string.Empty;

            var conInfoTask = _httpClient.Get(GetOptions(cancellationToken, "/Myth/GetConnectionInfo")).ConfigureAwait(false);

            var tunersTask   = _httpClient.Get(GetOptions(cancellationToken, "/Dvr/GetEncoderList")).ConfigureAwait(false);
            var encodersTask = _httpClient.Get(GetOptions(cancellationToken, "/Capture/GetCaptureCardList")).ConfigureAwait(false);

            EncoderList     tuners   = null;
            CaptureCardList encoders = null;

            using (var stream = await tunersTask)
            {
                tuners = DvrResponse.ParseEncoderList(stream, _jsonSerializer, _logger);
            }

            using (var stream = await encodersTask)
            {
                encoders = CaptureResponse.ParseCaptureCardList(stream, _jsonSerializer, _logger);
            }

            using (var stream = await conInfoTask)
            {
                var conInfo = UtilityResponse.GetConnectionInfo(stream, _jsonSerializer, _logger);
                serverVersion = conInfo.Version.Ver;
            }

            //Tuner information
            List <LiveTvTunerInfo> tvTunerInfos = new List <LiveTvTunerInfo>();

            foreach (var tuner in tuners.Encoders)
            {
                LiveTvTunerInfo info = new LiveTvTunerInfo()
                {
                    Id     = tuner.Id.ToString(),
                    Status = (LiveTvTunerStatus)tuner.State
                };

                switch (tuner.State)
                {
                case 0:
                    info.Status = LiveTvTunerStatus.Available;
                    break;

                case 7:
                    info.Status = LiveTvTunerStatus.RecordingTv;
                    break;
                }

                if (!string.IsNullOrWhiteSpace(tuner.Recording.Title))
                {
                    info.RecordingId = tuner.Recording.ProgramId;
                    info.ProgramName = string.Format("{0} : {1}", tuner.Recording.Title, tuner.Recording.SubTitle);
                }

                foreach (var enc in encoders.CaptureCards)
                {
                    if (enc.CardId == tuner.Id)
                    {
                        info.Name       = string.Format("{0} {1}", enc.CardType, enc.VideoDevice);
                        info.SourceType = enc.CardType;
                        break;
                    }
                }

                tvTunerInfos.Add(info);
            }

            return(new LiveTvServiceStatusInfo
            {
                HasUpdateAvailable = upgradeAvailable,
                Version = serverVersion,
                Tuners = tvTunerInfos
            });
        }