public string Download(Func <bool> stopProcessing) { _logger.Info($"Start grabbing EPG for {_settings.NumberOfEpgDays} days"); _stop = stopProcessing; var date = DateTime.Today; var epg = new List <Channel>(); _channelList.LoadChannelsFromDisk(); //Download EPG for a couple of days for (var dayNr = 0; dayNr < _settings.NumberOfEpgDays; dayNr++) { //EPG is downloaded in 8 parts per day for (var dayPart = 0; dayPart < 8; dayPart++) { if (_stop()) { return(null); } var epgData = DownloadPart(dayNr, dayPart, date); if (epgData != null) { epg.AddRange(epgData); } } } //Order all programs foreach (var channel in epg) { channel.Programs = channel.Programs.OrderBy(c => c.Start).ToList(); } return(GenerateXmlTv(epg)); }
public string Download(Func <bool> stopProcessing) { var pipedEpg = _downloader.DownloadEpgData(stopProcessing); if (stopProcessing()) { return(string.Empty); } var channelsWithEpg = ConvertToChannels(pipedEpg, stopProcessing); if (stopProcessing()) { return(string.Empty); } _channelList.LoadChannelsFromDisk(); channelsWithEpg = _channelList.FilterOnSelectedChannels(channelsWithEpg); if (stopProcessing()) { return(string.Empty); } return(GenerateXmlTv(channelsWithEpg)); }