示例#1
0
        private void UpdateSortTitles(IDbConnection conn, IDbTransaction tran)
        {
            using (IDbCommand getSeriesCmd = conn.CreateCommand())
            {
                getSeriesCmd.Transaction = tran;
                getSeriesCmd.CommandText = @"SELECT Id, TvdbId, Title FROM Series";
                using (IDataReader seriesReader = getSeriesCmd.ExecuteReader())
                {
                    while (seriesReader.Read())
                    {
                        var id     = seriesReader.GetInt32(0);
                        var tvdbId = seriesReader.GetInt32(1);
                        var title  = seriesReader.GetString(2);

                        var sortTitle = SeriesTitleNormalizer.Normalize(title, tvdbId);

                        using (IDbCommand updateCmd = conn.CreateCommand())
                        {
                            updateCmd.Transaction = tran;
                            updateCmd.CommandText = "UPDATE Series SET SortTitle = ? WHERE Id = ?";
                            updateCmd.AddParameter(sortTitle);
                            updateCmd.AddParameter(id);

                            updateCmd.ExecuteNonQuery();
                        }
                    }
                }
            }
        }
示例#2
0
        private static Series MapSeries(ShowResource show)
        {
            var series = new Series();

            series.TvdbId = show.TvdbId;

            if (show.TvRageId.HasValue)
            {
                series.TvRageId = show.TvRageId.Value;
            }

            if (show.TvMazeId.HasValue)
            {
                series.TvMazeId = show.TvMazeId.Value;
            }

            series.ImdbId     = show.ImdbId;
            series.Title      = show.Title;
            series.CleanTitle = Parser.Parser.CleanSeriesTitle(show.Title);
            series.SortTitle  = SeriesTitleNormalizer.Normalize(show.Title, show.TvdbId);

            if (show.FirstAired != null)
            {
                series.FirstAired = DateTime.Parse(show.FirstAired).ToUniversalTime();
                series.Year       = series.FirstAired.Value.Year;
            }

            series.Overview = show.Overview;

            if (show.Runtime != null)
            {
                series.Runtime = show.Runtime.Value;
            }

            series.Network = show.Network;

            if (show.TimeOfDay != null)
            {
                series.AirTime = string.Format("{0:00}:{1:00}", show.TimeOfDay.Hours, show.TimeOfDay.Minutes);
            }

            series.TitleSlug = show.Slug;
            series.Status    = MapSeriesStatus(show.Status);
            series.Ratings   = MapRatings(show.Rating);
            series.Genres    = show.Genres;

            if (show.ContentRating.IsNotNullOrWhiteSpace())
            {
                series.Certification = show.ContentRating.ToUpper();
            }

            series.Actors    = show.Actors.Select(MapActors).ToList();
            series.Seasons   = show.Seasons.Select(MapSeason).ToList();
            series.Images    = show.Images.Select(MapImage).ToList();
            series.Monitored = true;

            return(series);
        }
示例#3
0
 private void ValidateSeries(Series series)
 {
     series.Should().NotBeNull();
     series.Title.Should().NotBeNullOrWhiteSpace();
     series.CleanTitle.Should().Be(Parser.Parser.CleanSeriesTitle(series.Title));
     series.SortTitle.Should().Be(SeriesTitleNormalizer.Normalize(series.Title, series.TvdbId));
     series.Overview.Should().NotBeNullOrWhiteSpace();
     series.AirTime.Should().NotBeNullOrWhiteSpace();
     series.FirstAired.Should().HaveValue();
     series.FirstAired.Value.Kind.Should().Be(DateTimeKind.Utc);
     series.Images.Should().NotBeEmpty();
     series.ImdbId.Should().NotBeNullOrWhiteSpace();
     series.Network.Should().NotBeNullOrWhiteSpace();
     series.Runtime.Should().BeGreaterThan(0);
     series.TitleSlug.Should().NotBeNullOrWhiteSpace();
     //series.TvRageId.Should().BeGreaterThan(0);
     series.TvdbId.Should().BeGreaterThan(0);
 }
示例#4
0
        private static Series MapSeries(Show show)
        {
            var series = new Series();

            series.TvdbId        = show.tvdb_id;
            series.TvRageId      = show.tvrage_id;
            series.ImdbId        = show.imdb_id;
            series.Title         = show.title;
            series.CleanTitle    = Parser.Parser.CleanSeriesTitle(show.title);
            series.SortTitle     = SeriesTitleNormalizer.Normalize(show.title, show.tvdb_id);
            series.Year          = GetYear(show.year, show.first_aired);
            series.FirstAired    = FromIso(show.first_aired_iso);
            series.Overview      = show.overview;
            series.Runtime       = show.runtime;
            series.Network       = show.network;
            series.AirTime       = show.air_time;
            series.TitleSlug     = GetTitleSlug(show.url);
            series.Status        = GetSeriesStatus(show.status, show.ended);
            series.Ratings       = GetRatings(show.ratings);
            series.Genres        = show.genres;
            series.Certification = show.certification;
            series.Actors        = GetActors(show.people);
            series.Seasons       = GetSeasons(show);

            series.Images.Add(new MediaCover.MediaCover {
                CoverType = MediaCoverTypes.Banner, Url = show.images.banner
            });
            series.Images.Add(new MediaCover.MediaCover {
                CoverType = MediaCoverTypes.Poster, Url = GetPosterThumbnailUrl(show.images.poster)
            });
            series.Images.Add(new MediaCover.MediaCover {
                CoverType = MediaCoverTypes.Fanart, Url = show.images.fanart
            });

            return(series);
        }
示例#5
0
 public void should_normalize_title(String title, String expected)
 {
     SeriesTitleNormalizer.Normalize(title, 0).Should().Be(expected);
 }
示例#6
0
 public void should_use_precomputed_title(string title, int tvdbId, string expected)
 {
     SeriesTitleNormalizer.Normalize(title, tvdbId).Should().Be(expected);
 }
示例#7
0
文件: TvDbProxy.cs 项目: z00nx/Sonarr
        private static Series MapSeries(TVDBSharp.Models.Show show)
        {
            var series = new Series();

            series.TvdbId = show.Id;
            //series.TvRageId = show.tvrage_id;
            series.ImdbId     = show.ImdbId;
            series.Title      = show.Name;
            series.CleanTitle = Parser.Parser.CleanSeriesTitle(show.Name);
            series.SortTitle  = SeriesTitleNormalizer.Normalize(show.Name, show.Id);

            if (show.FirstAired != null)
            {
                series.Year       = show.FirstAired.Value.Year;
                series.FirstAired = show.FirstAired.Value.ToUniversalTime();
            }

            series.Overview = show.Description;

            if (show.Runtime != null)
            {
                series.Runtime = show.Runtime.Value;
            }

            series.Network = show.Network;

            if (show.AirTime != null)
            {
                series.AirTime = show.AirTime.Value.ToString();
            }

            series.TitleSlug     = GenerateSlug(show.Name);
            series.Status        = GetSeriesStatus(show.Status);
            series.Ratings       = GetRatings(show.RatingCount, show.Rating);
            series.Genres        = show.Genres;
            series.Certification = show.ContentRating.ToString().ToUpper();
            series.Actors        = new List <Tv.Actor>();
            series.Seasons       = GetSeasons(show);

            if (show.Banner != null)
            {
                series.Images.Add(new MediaCover.MediaCover {
                    CoverType = MediaCoverTypes.Banner, Url = show.Banner.ToString()
                });
            }

            if (show.Poster != null)
            {
                series.Images.Add(new MediaCover.MediaCover {
                    CoverType = MediaCoverTypes.Poster, Url = show.Poster.ToString()
                });
            }

            if (show.Fanart != null)
            {
                series.Images.Add(new MediaCover.MediaCover {
                    CoverType = MediaCoverTypes.Fanart, Url = show.Fanart.ToString()
                });
            }

            return(series);
        }
示例#8
0
 public void should_use_precomputed_title_for_a_to_z()
 {
     SeriesTitleNormalizer.Normalize("A to Z", 281588).Should().Be("a to z");
 }