예제 #1
0
        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));
        }
예제 #2
0
        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));
        }