diff --git a/src/NzbDrone.Core/Datastore/Migration/117_fix_movie_slugs.cs b/src/NzbDrone.Core/Datastore/Migration/117_fix_movie_slugs.cs deleted file mode 100644 index 1f3591b23..000000000 --- a/src/NzbDrone.Core/Datastore/Migration/117_fix_movie_slugs.cs +++ /dev/null @@ -1,72 +0,0 @@ -using System.Data; -using FluentMigrator; -using NzbDrone.Core.Datastore.Migration.Framework; -using System.Text; -using System.Text.RegularExpressions; - -namespace NzbDrone.Core.Datastore.Migration -{ - [Migration(117)] - public class fix_movie_slugs : NzbDroneMigrationBase - { - protected override void MainDbUpgrade() - { - Execute.WithConnection(SetTitleSlug); - } - - private void SetTitleSlug(IDbConnection conn, IDbTransaction tran) - { - using (IDbCommand getSeriesCmd = conn.CreateCommand()) - { - getSeriesCmd.Transaction = tran; - getSeriesCmd.CommandText = @"SELECT Id, Title, Year FROM Movies"; - using (IDataReader seriesReader = getSeriesCmd.ExecuteReader()) - { - while (seriesReader.Read()) - { - var id = seriesReader.GetInt32(0); - var title = seriesReader.GetString(1); - var year = seriesReader.GetString(2); - - var titleSlug = ToUrlSlug(title + "-" + year); - - using (IDbCommand updateCmd = conn.CreateCommand()) - { - updateCmd.Transaction = tran; - updateCmd.CommandText = "UPDATE Movies SET TitleSlug = ? WHERE Id = ?"; - updateCmd.AddParameter(titleSlug); - updateCmd.AddParameter(id); - - updateCmd.ExecuteNonQuery(); - } - } - } - } - } - - public static string ToUrlSlug(string value) - { - - //First to lower case - value = value.ToLowerInvariant(); - - //Remove all accents - var bytes = Encoding.GetEncoding("Cyrillic").GetBytes(value); - value = Encoding.ASCII.GetString(bytes); - - //Replace spaces - value = Regex.Replace(value, @"\s", "-", RegexOptions.Compiled); - - //Remove invalid chars - value = Regex.Replace(value, @"[^a-z0-9\s-_]", "", RegexOptions.Compiled); - - //Trim dashes from end - value = value.Trim('-', '_'); - - //Replace double occurences of - or _ - value = Regex.Replace(value, @"([-_]){2,}", "$1", RegexOptions.Compiled); - - return value; - } - } -} diff --git a/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs b/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs index f0a114d20..318dccbd4 100644 --- a/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs +++ b/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs @@ -13,7 +13,6 @@ using NzbDrone.Core.Tv; using Newtonsoft.Json; using System.Text.RegularExpressions; -using System.Text; namespace NzbDrone.Core.MetadataSource.SkyHook { @@ -30,7 +29,7 @@ public class SkyHookProxy : IProvideSeriesInfo, ISearchForNewSeries, IProvideMov public SkyHookProxy(IHttpClient httpClient, ISonarrCloudRequestBuilder requestBuilder, ITmdbConfigService configService, IMovieService movieService, Logger logger) { _httpClient = httpClient; - _requestBuilder = requestBuilder.SkyHookTvdb; + _requestBuilder = requestBuilder.SkyHookTvdb; _movieBuilder = requestBuilder.TMDB; _configService = configService; _movieService = movieService; @@ -89,7 +88,7 @@ public Movie GetMovieInfo(int TmdbId) movie.TmdbId = TmdbId; movie.ImdbId = resource.imdb_id; movie.Title = resource.title; - movie.TitleSlug = ToUrlSlug(movie.Title); + movie.TitleSlug = movie.Title.ToLower().Replace(" ", "-"); movie.CleanTitle = Parser.Parser.CleanSeriesTitle(movie.Title); movie.SortTitle = Parser.Parser.NormalizeTitle(movie.Title); movie.Overview = resource.overview; @@ -105,21 +104,20 @@ public Movie GetMovieInfo(int TmdbId) { _logger.Debug("Movie with this title slug already exists. Adding year..."); } - //movie.TitleSlug += "-" + movie.Year.ToString(); movie.TitleSlug += "-" + movie.Year.ToString(); movie.Images.Add(_configService.GetCoverForURL(resource.poster_path, MediaCoverTypes.Poster));//TODO: Update to load image specs from tmdb page! movie.Images.Add(_configService.GetCoverForURL(resource.backdrop_path, MediaCoverTypes.Banner)); movie.Runtime = resource.runtime; - foreach (Title title in resource.alternative_titles.titles) + foreach(Title title in resource.alternative_titles.titles) { movie.AlternativeTitles.Add(title.title); } - foreach (ReleaseDates releaseDates in resource.release_dates.results) + foreach(ReleaseDates releaseDates in resource.release_dates.results) { - foreach (ReleaseDate releaseDate in releaseDates.release_dates) + foreach(ReleaseDate releaseDate in releaseDates.release_dates) { if (releaseDate.type == 5 || releaseDate.type == 4) { @@ -142,7 +140,7 @@ public Movie GetMovieInfo(int TmdbId) movie.Ratings.Votes = resource.vote_count; movie.Ratings.Value = (decimal)resource.vote_average; - foreach (Genre genre in resource.genres) + foreach(Genre genre in resource.genres) { movie.Genres.Add(genre.name); } @@ -178,11 +176,10 @@ public Movie GetMovieInfo(string ImdbId) private string StripTrailingTheFromTitle(string title) { - if (title.EndsWith(",the")) + if(title.EndsWith(",the")) { title = title.Substring(0, title.Length - 4); - } - else if (title.EndsWith(", the")) + } else if(title.EndsWith(", the")) { title = title.Substring(0, title.Length - 5); } @@ -205,7 +202,7 @@ public List SearchForNewMovie(string title) { yearTerm = parserResult.Year.ToString(); } - + if (parserResult.ImdbId.IsNotNullOrWhiteSpace()) { return new List { GetMovieInfo(parserResult.ImdbId) }; @@ -301,14 +298,14 @@ public List SearchForNewSeries(string title) } } - + var httpRequest = _requestBuilder.Create() .SetSegment("route", "search") .AddQueryParam("term", title.ToLower().Trim()) .Build(); - + var httpResponse = _httpClient.Get>(httpRequest); @@ -333,8 +330,8 @@ private Movie MapMovie(MovieResult result) { imdbMovie.SortTitle = Parser.Parser.NormalizeTitle(result.title); imdbMovie.Title = result.title; - string titleSlug = ToUrlSlug(result.title); - // imdbMovie.TitleSlug = titleSlug.ToLower().Replace(" ", "-"); + string titleSlug = result.title; + imdbMovie.TitleSlug = titleSlug.ToLower().Replace(" ", "-"); if (result.release_date.IsNotNullOrWhiteSpace()) { @@ -343,16 +340,12 @@ private Movie MapMovie(MovieResult result) - //var slugResult = _movieService.FindByTitleSlug(titleSlug); - //if (slugResult != null) - //{ - // _logger.Debug("Movie with this title slug already exists. Adding year..."); - //} - //imdbMovie.TitleSlug += "-" + imdbMovie.Year.ToString(); - - titleSlug += "-" + imdbMovie.Year.ToString(); ; - - imdbMovie.TitleSlug = titleSlug; + var slugResult = _movieService.FindByTitleSlug(imdbMovie.TitleSlug); + if (slugResult != null) + { + _logger.Debug("Movie with this title slug already exists. Adding year..."); + } + imdbMovie.TitleSlug += "-" + imdbMovie.Year.ToString(); imdbMovie.Images = new List(); imdbMovie.Overview = result.overview; @@ -426,7 +419,7 @@ private static Series MapSeries(ShowResource show) { 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(); @@ -532,30 +525,5 @@ private static MediaCoverTypes MapCoverType(string coverType) return MediaCoverTypes.Unknown; } } - - public static string ToUrlSlug(string value) - { - - //First to lower case - value = value.ToLowerInvariant(); - - //Remove all accents - var bytes = Encoding.GetEncoding("Cyrillic").GetBytes(value); - value = Encoding.ASCII.GetString(bytes); - - //Replace spaces - value = Regex.Replace(value, @"\s", "-", RegexOptions.Compiled); - - //Remove invalid chars - value = Regex.Replace(value, @"[^a-z0-9\s-_]", "", RegexOptions.Compiled); - - //Trim dashes from end - value = value.Trim('-', '_'); - - //Replace double occurences of - or _ - value = Regex.Replace(value, @"([-_]){2,}", "$1", RegexOptions.Compiled); - - return value; - } } } diff --git a/src/NzbDrone.Core/NzbDrone.Core.csproj b/src/NzbDrone.Core/NzbDrone.Core.csproj index c8f72f327..a0221be03 100644 --- a/src/NzbDrone.Core/NzbDrone.Core.csproj +++ b/src/NzbDrone.Core/NzbDrone.Core.csproj @@ -294,7 +294,6 @@ -