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); }
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); }
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)); }
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 }); }