Esempio n. 1
0
        /// <summary>
        /// Update the series with the episode (Add it to the series if it doesn't already exist or update the episode if the current episode is older than the updated one)
        /// </summary>
        /// <param name="s"></param>
        /// <param name="ue"></param>
        private void UpdateEpisode(TvdbSeries s, TvdbEpisode ue)
        {
            List<TvdbEpisode> allEpList = new List<TvdbEpisode>();
              allEpList.AddRange(s.Episodes);
              foreach (TvdbLanguage l in s.GetAvailableLanguages())
              {
            if (s.SeriesTranslations[l].Episodes != null && s.SeriesTranslations[l].Language != s.Language)
            {
              allEpList.AddRange(s.SeriesTranslations[l].Episodes);
            }
              }

              //check all episodes if the updated episode is in it
              foreach (TvdbEpisode e in allEpList)
              {
            if (e.Id == ue.Id)
            {
              if (e.LastUpdated < ue.LastUpdated)
              {
            //download episode which has been updated
            TvdbEpisode newEpisode = m_downloader.DownloadEpisode(e.Id, e.Language);

            //update information of episode with new episodes informations
            if (newEpisode != null)
            {
              newEpisode.LastUpdated = ue.LastUpdated;

              e.UpdateEpisodeInfo(newEpisode);
              Log.Info("Updated Episode " + e.Id + " for series " + e.SeriesId);
            }
              }
              return;
            }
              }

              //episode hasn't been found
              foreach (TvdbLanguage l in s.GetAvailableLanguages())
              {
            //hasn't been found -> add it
            TvdbEpisode ep = m_downloader.DownloadEpisode(ue.Id, l);
            AddEpisodeToCache(ep);
            Log.Info("Added Episode " + ep.Id + " for series " + ep.SeriesId);
              }
        }
Esempio n. 2
0
        /// <summary>
        /// Saves the series to cache
        /// </summary>
        /// <param name="_series">The series to save</param>
        public void SaveToCache(TvdbSeries _series)
        {
            if (!Directory.Exists(m_rootFolder)) Directory.CreateDirectory(m_rootFolder);
              String root = m_rootFolder + "\\" + _series.Id;

              m_xmlWriter.WriteSeriesContent(_series, root + "\\all.xml");
              TvdbLanguage defaultLang = _series.Language;

              foreach(TvdbLanguage l in _series.GetAvailableLanguages())
              {
            if (l != defaultLang)
            {
              _series.SetLanguage(l);
              m_xmlWriter.WriteSeriesContent(_series, root + "\\" + l.Abbriviation + ".xml");
            }
              }

              if (_series.BannersLoaded)
              {
            m_xmlWriter.WriteSeriesBannerContent(_series.Banners, root + "\\banners.xml");
              }

              if (_series.TvdbActorsLoaded)
              {
            m_xmlWriter.WriteActorFile(_series.TvdbActors, root + "\\actors.xml");
              }

              //Save all loaded banners to file
              foreach (TvdbBanner b in _series.Banners)
              {
            FileInfo file = new FileInfo(root + "\\banner_" + b.Id + ".jpg");
            if (b.IsLoaded && !file.Exists)
            {//banner is cached
              if (!file.Directory.Exists) file.Directory.Create();
              b.Banner.Save(file.FullName);
            }
            if (b.GetType() == typeof(TvdbFanartBanner))
            {//banner is fanart -> has vignette and thumb
              file = new FileInfo(root + "\\bannerthumb_" + b.Id + ".jpg");
              if (((TvdbFanartBanner)b).IsThumbLoaded && !file.Exists)
              {
            if (!file.Directory.Exists) file.Directory.Create();
            ((TvdbFanartBanner)b).BannerThumb.Save(file.FullName);
              }

              file = new FileInfo(root + "\\bannervignette_" + b.Id + ".jpg");
              if (((TvdbFanartBanner)b).IsVignetteLoaded && !file.Exists)
              {
            if (!file.Directory.Exists) file.Directory.Create();
            ((TvdbFanartBanner)b).VignetteImage.Save(file.FullName);
              }

            }
              }

              if (_series.EpisodesLoaded)
              {
            foreach (TvdbEpisode e in _series.Episodes)
            {
              FileInfo file = new FileInfo(root + "\\EpisodeImages\\S" + e.SeasonNumber + "E" + e.EpisodeNumber + ".jpg");
              if (e.Banner != null && e.Banner.IsLoaded && !file.Exists)
              {
            if (!file.Directory.Exists) file.Directory.Create();
            e.Banner.Banner.Save(file.FullName);
              }
            }
              }

              if (_series.TvdbActorsLoaded)
              {
            foreach (TvdbActor a in _series.TvdbActors)
            {
              FileInfo file = new FileInfo(root + "\\actor_" + a.ActorImage.Id + ".jpg");
              if (a.ActorImage.IsLoaded && !file.Exists)
              {
            if (!file.Directory.Exists) file.Directory.Create();
            a.ActorImage.Banner.Save(file.FullName);
              }
            }
              }
        }