Beispiel #1
0
 public TvEpisode(TvSeries series, int seasonNumber, int episodeNumber, string title)
 {
     m_Series = series;
     m_SeasonNumber = seasonNumber;
     m_EpisodeNumber = episodeNumber;
     m_Title = title;
 }
Beispiel #2
0
        private ObservableCollection<TvSeries> CreateRuntimeData()
        {
            var results = new ObservableCollection<TvSeries>();
            IOrderedEnumerable<IGrouping<string, MGFile>> seriesList = from f in m_DataStore.Files
                                                                       group f by f.Tags.GetString(TVShowDataStoreTemplate.SeriesTitle)
                                                                           into asdf
                                                                           orderby asdf.Key
                                                                           select asdf;

            foreach (IGrouping<string, MGFile> seriesGroup in seriesList) {
                var series = new TvSeries(seriesGroup.Key);
                series.SeriesBannerPath = seriesGroup.Select(f => f.Tags.GetString(TVShowDataStoreTemplate.SeriesBanner)).Coalesce();
                series.SeriesPosterPath = seriesGroup.Select(f => f.Tags.GetString(TVShowDataStoreTemplate.SeriesPoster)).Coalesce();
                series.SeriesDescription = seriesGroup.Select(f => f.Tags.GetString(TVShowDataStoreTemplate.SeriesDescription)).Coalesce();

                var episodeGroups = from f in seriesGroup
                                    group f by
                                        new {
                                            EpisodeNumber = f.Tags.GetInt(TVShowDataStoreTemplate.EpisodeNumber),
                                            SeasonNumber = f.Tags.GetInt(TVShowDataStoreTemplate.SeasonNumber)
                                        }
                                        into grp
                                        select new {
                                            grp.Key.SeasonNumber,
                                            grp.Key.EpisodeNumber,
                                            Episodes = grp,
                                            FirstAired = grp.Select(file => file.Tags.GetDateTime(TVShowDataStoreTemplate.EpisodeFirstAired)).Coalesce(),
                                            EpisodeBannerPath = grp.Select(file => file.Tags.GetString(TVShowDataStoreTemplate.EpisodeBanner)).Coalesce(),
                                            Length = grp.Select(file => file.Tags.GetTimeSpan(TVShowDataStoreTemplate.PlayTime)).Coalesce(),
                                            Title = grp.Select(file => file.Tags.GetString(TVShowDataStoreTemplate.EpisodeTitle)).Coalesce(),
                                            Ipod = grp.Any(file => true == file.Tags.GetBool(TVShowDataStoreTemplate.iPodClassicCompatible)),
                                            Iphone = grp.Any(file => true == file.Tags.GetBool(TVShowDataStoreTemplate.iPhoneCompatible)),
                                            Computer = grp.Any(),
                                        };

                IEnumerable<TvEpisode> episodes = from ep in episodeGroups
                                                  where ep.SeasonNumber.HasValue && ep.EpisodeNumber.HasValue
                                                  select new TvEpisode(series, ep.SeasonNumber.Value, ep.EpisodeNumber.Value, ep.Title) {
                                                      AirDate = ep.FirstAired,
                                                      EpisodeBannerPath = ep.EpisodeBannerPath,
                                                      Length = ep.Length,
                                                      HasComputerVersion = ep.Computer,
                                                      HasIphoneVersion = ep.Iphone,
                                                      HasIpodVersion = ep.Ipod,
                                                  };
                episodes = from ep in episodes orderby ep.SeasonNumber, ep.EpisodeNumber select ep;

                series.Episodes.AddRange(episodes);
                results.Add(series);
            }
            return results;
        }