Beispiel #1
0
        private bool MakeUpdate(Util.UpdateInterval _interval)
        {
            //update all flagged series
            List <TvdbSeries>  updateSeries;
            List <TvdbEpisode> updateEpisodes;
            DateTime           updateTime   = m_downloader.DownloadUpdate(out updateSeries, out updateEpisodes, _interval);
            List <int>         cachedSeries = m_cacheProvider.GetCachedSeries();

            List <TvdbSeries> seriesToSave = new List <TvdbSeries>();

            foreach (TvdbSeries us in updateSeries)
            {
                foreach (TvdbSeries s in m_loadedData.SeriesList)
                {
                    if (us.Id == s.Id)
                    {
                        if (s.LastUpdated < us.LastUpdated)
                        {//changes occured in series
                            UpdateSeries(s, us.LastUpdated);
                        }
                        break;
                    }
                }

                //Update series that have been already cached but are not in memory
                foreach (int s in cachedSeries)
                {
                    if (us.Id == s)
                    {//changes occured in series
                        TvdbSeries series = m_cacheProvider.LoadSeriesFromCache(us.Id);
                        if (series.LastUpdated < us.LastUpdated)
                        {
                            UpdateSeries(series, us.LastUpdated);
                            AddSeriesToCache(series);
                            seriesToSave.Add(series);
                        }
                        break;
                    }
                }
            }

            //update all flagged episodes
            foreach (TvdbEpisode ue in updateEpisodes)
            {
                foreach (TvdbSeries s in m_loadedData.SeriesList)
                {
                    if (ue.SeriesId == s.Id)
                    {
                        UpdateEpisode(s, ue);
                        break;
                    }
                }

                foreach (int s in cachedSeries)
                {
                    if (ue.SeriesId == s)
                    {//changes occured in series
                        TvdbSeries series = m_cacheProvider.LoadSeriesFromCache(ue.SeriesId);
                        UpdateEpisode(series, ue);
                        break;
                    }
                }
            }

            //todo: update banner information here -> ask in forum if fanart doesn't contain all fields on purpose...

            //set the last updated time to time of this update
            m_loadedData.LastUpdated = updateTime;

            return(true);
        }
Beispiel #2
0
        private bool MakeUpdate(Util.UpdateInterval _interval, bool _zipped)
        {
            Log.Info("Started update (" + _interval.ToString() + ")");
            Stopwatch watch = new Stopwatch();

            watch.Start();
            //update all flagged series
            List <TvdbSeries>  updateSeries;
            List <TvdbEpisode> updateEpisodes;
            List <TvdbBanner>  updateBanners;
            DateTime           updateTime   = m_downloader.DownloadUpdate(out updateSeries, out updateEpisodes, out updateBanners, _interval, _zipped);
            List <int>         cachedSeries = m_cacheProvider.GetCachedSeries();

            List <TvdbSeries> seriesToSave = new List <TvdbSeries>();

            foreach (TvdbSeries us in updateSeries)
            {
                foreach (TvdbSeries s in m_loadedData.SeriesList)
                {
                    if (us.Id == s.Id)
                    {
                        if (s.LastUpdated < us.LastUpdated)
                        {//changes occured in series
                            UpdateSeries(s, us.LastUpdated);
                        }
                        break;
                    }
                }

                //Update series that have been already cached but are not in memory
                foreach (int s in cachedSeries)
                {
                    if (us.Id == s)
                    {//changes occured in series
                        TvdbSeries series = m_cacheProvider.LoadSeriesFromCache(us.Id);
                        if (series.LastUpdated < us.LastUpdated)
                        {
                            UpdateSeries(series, us.LastUpdated);
                            AddSeriesToCache(series);
                            seriesToSave.Add(series);
                        }
                        break;
                    }
                }
            }

            //update all flagged episodes
            foreach (TvdbEpisode ue in updateEpisodes)
            {
                foreach (TvdbSeries s in m_loadedData.SeriesList)
                {
                    if (ue.SeriesId == s.Id)
                    {
                        UpdateEpisode(s, ue);
                        break;
                    }
                }

                foreach (int s in cachedSeries)
                {
                    if (ue.SeriesId == s)
                    {//changes occured in series
                        TvdbSeries series = m_cacheProvider.LoadSeriesFromCache(ue.SeriesId);
                        UpdateEpisode(series, ue);
                        break;
                    }
                }
            }

            //todo: update banner information here -> wait for forum response regarding missing
            foreach (TvdbBanner b in updateBanners)
            {
                foreach (TvdbSeries s in m_loadedData.SeriesList)
                {
                    if (s.Id == b.SeriesId)
                    {
                        UpdateBanner(s, b);
                        break;
                    }
                }

                foreach (int s in cachedSeries)
                {
                    if (b.SeriesId == s)
                    {//changes occured in series
                        TvdbSeries series = m_cacheProvider.LoadSeriesFromCache(s);
                        UpdateBanner(series, b);
                        break;
                    }
                }
            }
            //set the last updated time to time of this update
            m_loadedData.LastUpdated = updateTime;
            watch.Stop();
            Log.Info("Finished update (" + _interval.ToString() + ") in " + watch.ElapsedMilliseconds + " milliseconds");
            return(true);
        }