From 4be637edff846f95ee151dd6a2c23710d7d3f447 Mon Sep 17 00:00:00 2001 From: "kay.one" Date: Sun, 31 Mar 2013 14:45:16 -0700 Subject: [PATCH] much nicer add new series. --- NzbDrone.Api/Series/SeriesModule.cs | 6 +-- .../TvTests/SeriesProviderTest.cs | Bin 3389 -> 3393 bytes .../Datastore/Migration/Migration20130324.cs | 2 +- NzbDrone.Core/MediaCover/MediaCover.cs | 7 +-- NzbDrone.Core/MediaCover/MediaCoverService.cs | 5 +-- NzbDrone.Core/MetadataSource/TraktProxy.cs | 1 + NzbDrone.Core/Tv/Series.cs | 5 +-- NzbDrone.Core/Tv/SeriesService.cs | 42 ++++++------------ UI/.idea/dictionaries/Keivan.xml | 1 + .../inspectionProfiles/Project_Default.xml | 1 + UI/AddSeries/New/AddNewSeriesView.js | 3 +- UI/AddSeries/New/SearchResultTemplate.html | 25 +++++++---- UI/AddSeries/New/SearchResultView.js | 22 +++------ UI/AddSeries/SearchResultModel.js | 10 +++++ UI/AddSeries/addSeries.css | 24 ++++------ UI/Series/SeriesModel.js | 20 ++++++++- 16 files changed, 87 insertions(+), 87 deletions(-) diff --git a/NzbDrone.Api/Series/SeriesModule.cs b/NzbDrone.Api/Series/SeriesModule.cs index 0adbb5df1..210445953 100644 --- a/NzbDrone.Api/Series/SeriesModule.cs +++ b/NzbDrone.Api/Series/SeriesModule.cs @@ -21,7 +21,7 @@ namespace NzbDrone.Api.Series private readonly ISeriesRepository _seriesRepository; private readonly IJobController _jobProvider; - public SeriesModule(ISeriesService seriesService,ISeriesRepository seriesRepository, IJobController jobProvider) + public SeriesModule(ISeriesService seriesService, ISeriesRepository seriesRepository, IJobController jobProvider) : base("/Series") { _seriesService = seriesService; @@ -53,14 +53,14 @@ namespace NzbDrone.Api.Series private Response AddSeries() { - var request = Request.Body.FromJson(); + var newSeries = Request.Body.FromJson(); //Todo: Alert the user if this series already exists //Todo: We need to create the folder if the user is adding a new series //(we can just create the folder and it won't blow up if it already exists) //We also need to remove any special characters from the filename before attempting to create it - _seriesService.AddSeries(request.Title, request.Path, request.TvDbId, request.QualityProfileId, null); + _seriesService.AddSeries(newSeries); return new Response { StatusCode = HttpStatusCode.Created }; } diff --git a/NzbDrone.Core.Test/TvTests/SeriesProviderTest.cs b/NzbDrone.Core.Test/TvTests/SeriesProviderTest.cs index fe936251ca27b3c12818782e65de8a8af40896b4..8cf08a429e3cb538f7bdf8035c52f7ce51dd587d 100644 GIT binary patch delta 23 ecmdlhbx>+UHWQP+*5+&`DK;i8{mrc$J6Hf$>IT99 delta 29 lcmX>owO49GHq+z=R_@8OIK(&iGyPzlT*WH5c^1cV767JS3Zno3 diff --git a/NzbDrone.Core/Datastore/Migration/Migration20130324.cs b/NzbDrone.Core/Datastore/Migration/Migration20130324.cs index 1fe8418d3..879857db2 100644 --- a/NzbDrone.Core/Datastore/Migration/Migration20130324.cs +++ b/NzbDrone.Core/Datastore/Migration/Migration20130324.cs @@ -118,12 +118,12 @@ namespace NzbDrone.Core.Datastore.Migration .WithColumn("Id").AsInt32().PrimaryKey().Identity() .WithColumn("TvdbId").AsInt32().NotNullable() .WithColumn("Title").AsString().NotNullable() + .WithColumn("TitleSlug").AsString().NotNullable() .WithColumn("CleanTitle").AsString().NotNullable() .WithColumn("Status").AsInt32().NotNullable() .WithColumn("Overview").AsString().Nullable() .WithColumn("AirTime").AsString().Nullable() .WithColumn("Images").AsString() - .WithColumn("Language").AsString().NotNullable() .WithColumn("Path").AsString().NotNullable() .WithColumn("Monitored").AsBoolean().NotNullable() .WithColumn("QualityProfileId").AsString().NotNullable() diff --git a/NzbDrone.Core/MediaCover/MediaCover.cs b/NzbDrone.Core/MediaCover/MediaCover.cs index 93f29100d..8c0df5443 100644 --- a/NzbDrone.Core/MediaCover/MediaCover.cs +++ b/NzbDrone.Core/MediaCover/MediaCover.cs @@ -5,9 +5,10 @@ namespace NzbDrone.Core.MediaCover public enum MediaCoverTypes { - Poster = 0, - Banner = 1, - Fanart = 2 + Unknown = 0, + Poster = 1, + Banner = 2, + Fanart = 3 } public class MediaCover : IEmbeddedDocument diff --git a/NzbDrone.Core/MediaCover/MediaCoverService.cs b/NzbDrone.Core/MediaCover/MediaCoverService.cs index 78276b07e..d3d62e133 100644 --- a/NzbDrone.Core/MediaCover/MediaCoverService.cs +++ b/NzbDrone.Core/MediaCover/MediaCoverService.cs @@ -1,6 +1,5 @@ using System; using System.IO; -using System.Linq; using NLog; using NzbDrone.Common; using NzbDrone.Common.Eventing; @@ -19,8 +18,6 @@ namespace NzbDrone.Core.MediaCover private readonly string _coverRootFolder; - private const string COVER_URL_PREFIX = "http://www.thetvdb.com/banners/"; - public MediaCoverService(HttpProvider httpProvider, DiskProvider diskProvider, EnvironmentProvider environmentProvider, Logger logger) { _httpProvider = httpProvider; @@ -54,7 +51,7 @@ namespace NzbDrone.Core.MediaCover var fileName = GetCoverPath(series.Id, cover.CoverType); _logger.Info("Downloading {0} for {1}", cover.CoverType, series.Title); - _httpProvider.DownloadFile(COVER_URL_PREFIX + cover.Url, fileName); + _httpProvider.DownloadFile(cover.Url, fileName); } catch (Exception e) { diff --git a/NzbDrone.Core/MetadataSource/TraktProxy.cs b/NzbDrone.Core/MetadataSource/TraktProxy.cs index bd24ff274..587648612 100644 --- a/NzbDrone.Core/MetadataSource/TraktProxy.cs +++ b/NzbDrone.Core/MetadataSource/TraktProxy.cs @@ -56,6 +56,7 @@ namespace NzbDrone.Core.MetadataSource series.Runtime = show.runtime; series.Network = show.network; series.AirTime = show.air_time; + series.TitleSlug = show.url.ToLower().Replace("http://trakt.tv/show/", ""); series.Images.Add(new MediaCover.MediaCover { CoverType = MediaCoverTypes.Banner, Url = show.images.banner }); series.Images.Add(new MediaCover.MediaCover { CoverType = MediaCoverTypes.Poster, Url = show.images.poster }); diff --git a/NzbDrone.Core/Tv/Series.cs b/NzbDrone.Core/Tv/Series.cs index b7c93256c..a5c142f13 100644 --- a/NzbDrone.Core/Tv/Series.cs +++ b/NzbDrone.Core/Tv/Series.cs @@ -19,7 +19,7 @@ namespace NzbDrone.Core.Tv { public Series() { - Images =new List(); + Images = new List(); } public int TvDbId { get; set; } @@ -28,7 +28,6 @@ namespace NzbDrone.Core.Tv public SeriesStatusType Status { get; set; } public string Overview { get; set; } public String AirTime { get; set; } - public string Language { get; set; } public string Path { get; set; } public bool Monitored { get; set; } public int QualityProfileId { get; set; } @@ -43,7 +42,7 @@ namespace NzbDrone.Core.Tv public DateTime? CustomStartDate { get; set; } public bool UseSceneNumbering { get; set; } public int TvRageId { get; set; } - public string TvRageTitle { get; set; } + public string TitleSlug { get; set; } //Todo: This should be a double since there are timezones that aren't on a full hour offset public int UtcOffset { get; set; } diff --git a/NzbDrone.Core/Tv/SeriesService.cs b/NzbDrone.Core/Tv/SeriesService.cs index 1e5fc7074..ae9543d61 100644 --- a/NzbDrone.Core/Tv/SeriesService.cs +++ b/NzbDrone.Core/Tv/SeriesService.cs @@ -19,7 +19,7 @@ namespace NzbDrone.Core.Tv bool IsMonitored(int id); Series UpdateSeriesInfo(int seriesId); Series FindSeries(string title); - void AddSeries(string title, string path, int tvDbSeriesId, int qualityProfileId, DateTime? airedAfter); + void AddSeries(Series newSeries); void UpdateFromSeriesEditor(IList editedSeries); Series FindByTvdbId(int tvdbId); void SetSeriesType(int seriesId, SeriesTypes seriesTypes); @@ -67,8 +67,7 @@ namespace NzbDrone.Core.Tv series.AirTime = tvDbSeries.AirTime; series.Overview = tvDbSeries.Overview; series.Status = tvDbSeries.Status; - series.Language = tvDbSeries.Language; - series.CleanTitle = tvDbSeries.CleanTitle; + series.CleanTitle = Parser.NormalizeTitle(tvDbSeries.Title); series.LastInfoSync = DateTime.Now; series.Runtime = tvDbSeries.Runtime; series.Images = tvDbSeries.Images; @@ -95,37 +94,22 @@ namespace NzbDrone.Core.Tv return _seriesRepository.GetByTitle(normalizeTitle); } - public void AddSeries(string title, string path, int tvDbSeriesId, int qualityProfileId, DateTime? airedAfter) + public void AddSeries(Series newSeries) { - _logger.Info("Adding Series [{0}] Path: [{1}]", tvDbSeriesId, path); + Ensure.That(() => newSeries).IsNotNull(); - Ensure.That(() => tvDbSeriesId).IsGreaterThan(0); - Ensure.That(() => title).IsNotNullOrWhiteSpace(); - Ensure.That(() => path).IsNotNullOrWhiteSpace(); + _logger.Info("Adding Series [{0}] Path: [{1}]", newSeries.Title, newSeries.Path); - var repoSeries = new Series(); - repoSeries.TvDbId = tvDbSeriesId; - repoSeries.Path = path; - repoSeries.Monitored = true; - repoSeries.QualityProfileId = qualityProfileId; - repoSeries.Title = title; - repoSeries.CleanTitle = Parser.NormalizeTitle(title); - if (qualityProfileId == 0) - repoSeries.QualityProfileId = _configService.DefaultQualityProfile; + newSeries.Monitored = true; + newSeries.CleanTitle = Parser.NormalizeTitle(newSeries.Title); + if (newSeries.QualityProfileId == 0) + newSeries.QualityProfileId = _configService.DefaultQualityProfile; - repoSeries.QualityProfile = _qualityProfileService.Get(repoSeries.QualityProfileId); - repoSeries.SeasonFolder = _configService.UseSeasonFolder; - repoSeries.BacklogSetting = BacklogSettingType.Inherit; + newSeries.SeasonFolder = _configService.UseSeasonFolder; + newSeries.BacklogSetting = BacklogSettingType.Inherit; - if (airedAfter.HasValue) - repoSeries.CustomStartDate = airedAfter; - - //Todo: Allow the user to set this as part of the addition process. - repoSeries.Language = "en"; - - _seriesRepository.Insert(repoSeries); - - _eventAggregator.Publish(new SeriesAddedEvent(repoSeries)); + _seriesRepository.Insert(newSeries); + _eventAggregator.Publish(new SeriesAddedEvent(newSeries)); } public void UpdateFromSeriesEditor(IList editedSeries) diff --git a/UI/.idea/dictionaries/Keivan.xml b/UI/.idea/dictionaries/Keivan.xml index a60291283..8c116d521 100644 --- a/UI/.idea/dictionaries/Keivan.xml +++ b/UI/.idea/dictionaries/Keivan.xml @@ -8,6 +8,7 @@ rootfolder rootfolders thetvdb + trakt tvdb xlarge yyyy diff --git a/UI/.idea/inspectionProfiles/Project_Default.xml b/UI/.idea/inspectionProfiles/Project_Default.xml index 7165e5520..ac9a2315e 100644 --- a/UI/.idea/inspectionProfiles/Project_Default.xml +++ b/UI/.idea/inspectionProfiles/Project_Default.xml @@ -58,6 +58,7 @@