private Channel IsInsertAllowed(EpgChannel epgChannel) { DVBBaseChannel dvbChannel = (DVBBaseChannel)epgChannel.Channel; //are there any epg infos for this channel? if (epgChannel.Programs.Count == 0) { Log.Epg("{0}: no epg infos found for channel networkid:0x{1:X} transportid:0x{2:X} serviceid:0x{3:X}", _grabberName, dvbChannel.NetworkId, dvbChannel.TransportId, dvbChannel.ServiceId); return(null); } //do we know a channel with these tuning details? Channel dbChannel = null; TuningDetail tuningDetail = _layer.GetTuningDetail(dvbChannel); if (tuningDetail != null) { dbChannel = tuningDetail.ReferencedChannel(); } if (dbChannel == null) { Log.Epg("{0}: no channel found for networkid:0x{1:X} transportid:0x{2:X} serviceid:0x{3:X}", _grabberName, dvbChannel.NetworkId, dvbChannel.TransportId, dvbChannel.ServiceId); /*foreach (EpgProgram ei in epgChannel.Programs) * { * string title = ""; * if (ei.Text.Count > 0) * { * title = ei.Text[0].Title; * } * Log.Epg(" -> {0}-{1} {2}", ei.StartTime, ei.EndTime, title); * }*/ return(null); } //should we store epg for this channel? if ((dbChannel.IsRadio && _storeOnlySelectedChannelsRadio) || (!dbChannel.IsRadio && _storeOnlySelectedChannels)) { if (!dbChannel.GrabEpg) { Log.Epg("{0}: channel {1} is not configured to grab epg.", _grabberName, dbChannel.DisplayName); return(null); } } if (_checkForLastUpdate) { //is the regrab time reached? TimeSpan ts = DateTime.Now - dbChannel.LastGrabTime; if (ts.TotalMinutes < _epgReGrabAfter) { Log.Epg("{0}: {1} not needed lastUpdate:{2}", _grabberName, dbChannel.DisplayName, dbChannel.LastGrabTime); return(null); } } return(dbChannel); }