mirror of
https://github.com/Radarr/Radarr.git
synced 2025-04-23 14:07:20 -04:00
fixup!
This commit is contained in:
parent
8a3622fd82
commit
a936ab2504
17 changed files with 51 additions and 75 deletions
|
@ -34,7 +34,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
|
|||
|
||||
Db.Insert(collection);
|
||||
|
||||
var movie = Builder<Movie>.CreateNew().With(m => m.CollectionId = collection.Id).BuildNew();
|
||||
var movie = Builder<MovieMetadata>.CreateNew().With(m => m.CollectionId = collection.Id).BuildNew();
|
||||
|
||||
Db.Insert(movie);
|
||||
|
||||
|
|
|
@ -251,7 +251,7 @@ namespace NzbDrone.Core.Extras.Metadata.Consumers.Xbmc
|
|||
|
||||
details.Add(new XElement("country"));
|
||||
|
||||
if (movie.MovieMetadata.Value.Collection?.Name != null)
|
||||
if (movie.MovieMetadata.Value.Collection?.Value.Title != null)
|
||||
{
|
||||
var setElement = new XElement("set");
|
||||
|
||||
|
|
|
@ -510,35 +510,12 @@ namespace NzbDrone.Core.MetadataSource.SkyHook
|
|||
CleanTitle = arg.Name.CleanMovieTitle(),
|
||||
SortTitle = Parser.Parser.NormalizeTitle(arg.Name),
|
||||
Images = arg.Images?.Select(MapImage).ToList() ?? new List<MediaCover.MediaCover>(),
|
||||
Movies = arg.Parts?.Select(x => MapCollectionMovie(x)).ToList() ?? new List<CollectionMovie>()
|
||||
MovieMetadata = arg.Parts?.Select(x => MapMovie(x)).ToList() ?? new List<MovieMetadata>()
|
||||
};
|
||||
|
||||
return collection;
|
||||
}
|
||||
|
||||
private static CollectionMovie MapCollectionMovie(MovieResource movieResult)
|
||||
{
|
||||
var movie = new CollectionMovie
|
||||
{
|
||||
TmdbId = movieResult.TmdbId,
|
||||
ImdbId = movieResult.ImdbId,
|
||||
Overview = movieResult.Overview,
|
||||
Title = movieResult.Title,
|
||||
SortTitle = Parser.Parser.NormalizeTitle(movieResult.Title),
|
||||
Images = movieResult.Images.Select(MapImage).ToList(),
|
||||
Year = movieResult.Year,
|
||||
Ratings = MapRatings(movieResult.MovieRatings) ?? new Ratings(),
|
||||
Genres = movieResult.Genres
|
||||
};
|
||||
|
||||
if (movieResult.Runtime != null)
|
||||
{
|
||||
movie.Runtime = movieResult.Runtime.Value;
|
||||
}
|
||||
|
||||
return movie;
|
||||
}
|
||||
|
||||
private static Credit MapCast(CastResource arg)
|
||||
{
|
||||
var newActor = new Credit
|
||||
|
|
|
@ -26,6 +26,7 @@ namespace NzbDrone.Core.Movies
|
|||
private readonly IMovieService _movieService;
|
||||
private readonly IMovieMetadataService _movieMetadataService;
|
||||
private readonly IAddMovieCollectionService _collectionService;
|
||||
private readonly IRootFolderService _folderService;
|
||||
private readonly IProvideMovieInfo _movieInfo;
|
||||
private readonly IBuildFileNames _fileNameBuilder;
|
||||
private readonly IAddMovieValidator _addMovieValidator;
|
||||
|
@ -34,6 +35,7 @@ namespace NzbDrone.Core.Movies
|
|||
public AddMovieService(IMovieService movieService,
|
||||
IMovieMetadataService movieMetadataService,
|
||||
IAddMovieCollectionService collectionService,
|
||||
IRootFolderService folderService,
|
||||
IProvideMovieInfo movieInfo,
|
||||
IBuildFileNames fileNameBuilder,
|
||||
IAddMovieValidator addMovieValidator,
|
||||
|
@ -42,6 +44,7 @@ namespace NzbDrone.Core.Movies
|
|||
_movieService = movieService;
|
||||
_movieMetadataService = movieMetadataService;
|
||||
_collectionService = collectionService;
|
||||
_folderService = folderService;
|
||||
_movieInfo = movieInfo;
|
||||
_fileNameBuilder = fileNameBuilder;
|
||||
_addMovieValidator = addMovieValidator;
|
||||
|
@ -57,16 +60,16 @@ namespace NzbDrone.Core.Movies
|
|||
|
||||
_logger.Info("Adding Movie {0} Path: [{1}]", newMovie, newMovie.Path);
|
||||
|
||||
_movieMetadataService.Upsert(newMovie.MovieMetadata.Value);
|
||||
newMovie.MovieMetadataId = newMovie.MovieMetadata.Value.Id;
|
||||
|
||||
// add collection
|
||||
if (newMovie.Collection != null)
|
||||
if (newMovie.MovieMetadata.Value.Collection != null)
|
||||
{
|
||||
var newCollection = _collectionService.AddMovieCollection(BuildCollection(newMovie));
|
||||
newMovie.CollectionId = newCollection.Id;
|
||||
newMovie.MovieMetadata.Value.CollectionId = newCollection.Id;
|
||||
}
|
||||
|
||||
_movieMetadataService.Upsert(newMovie.MovieMetadata.Value);
|
||||
newMovie.MovieMetadataId = newMovie.MovieMetadata.Value.Id;
|
||||
|
||||
_movieService.AddMovie(newMovie);
|
||||
|
||||
return newMovie;
|
||||
|
@ -89,10 +92,10 @@ namespace NzbDrone.Core.Movies
|
|||
movie.Added = added;
|
||||
|
||||
// add collection
|
||||
if (movie.Collection != null)
|
||||
if (movie.MovieMetadata.Value.Collection != null)
|
||||
{
|
||||
var newCollection = _collectionService.AddMovieCollection(BuildCollection(movie));
|
||||
movie.CollectionId = newCollection.Id;
|
||||
movie.MovieMetadata.Value.CollectionId = newCollection.Id;
|
||||
}
|
||||
|
||||
moviesToAdd.Add(movie);
|
||||
|
@ -139,7 +142,7 @@ namespace NzbDrone.Core.Movies
|
|||
|
||||
private MovieCollection BuildCollection(Movie newMovie)
|
||||
{
|
||||
var collection = newMovie.Collection.Value;
|
||||
var collection = newMovie.MovieMetadata.Value.Collection.Value;
|
||||
collection.Monitored = newMovie.AddOptions?.Monitor == MonitorTypes.MovieAndCollection;
|
||||
collection.SearchOnAdd = newMovie.AddOptions?.SearchForMovie ?? false;
|
||||
collection.QualityProfileId = newMovie.ProfileId;
|
||||
|
|
|
@ -1,20 +0,0 @@
|
|||
using System.Collections.Generic;
|
||||
using NzbDrone.Core.Datastore;
|
||||
|
||||
namespace NzbDrone.Core.Movies.Collections
|
||||
{
|
||||
public class CollectionMovie : IEmbeddedDocument
|
||||
{
|
||||
public int TmdbId { get; set; }
|
||||
public string ImdbId { get; set; }
|
||||
public string Title { get; set; }
|
||||
public string CleanTitle { get; set; }
|
||||
public string SortTitle { get; set; }
|
||||
public string Overview { get; set; }
|
||||
public int Runtime { get; set; }
|
||||
public List<MediaCover.MediaCover> Images { get; set; }
|
||||
public int Year { get; set; }
|
||||
public Ratings Ratings { get; set; }
|
||||
public List<string> Genres { get; set; }
|
||||
}
|
||||
}
|
|
@ -9,7 +9,7 @@ namespace NzbDrone.Core.Movies.Collections
|
|||
public MovieCollection()
|
||||
{
|
||||
Images = new List<MediaCover.MediaCover>();
|
||||
Movies = new List<CollectionMovie>();
|
||||
MovieMetadataIds = new List<int>();
|
||||
}
|
||||
|
||||
public string Title { get; set; }
|
||||
|
@ -25,7 +25,8 @@ namespace NzbDrone.Core.Movies.Collections
|
|||
public DateTime? LastInfoSync { get; set; }
|
||||
public List<MediaCover.MediaCover> Images { get; set; }
|
||||
public DateTime Added { get; set; }
|
||||
public List<CollectionMovie> Movies { get; set; }
|
||||
public List<int> MovieMetadataIds { get; set; }
|
||||
public List<MovieMetadata> MovieMetadata { get; set; }
|
||||
|
||||
public void ApplyChanges(MovieCollection otherCollection)
|
||||
{
|
||||
|
|
|
@ -21,13 +21,13 @@ namespace NzbDrone.Core.Movies.Collections
|
|||
public class MovieCollectionService : IMovieCollectionService, IHandleAsync<MoviesDeletedEvent>
|
||||
{
|
||||
private readonly IMovieCollectionRepository _repo;
|
||||
private readonly IMovieService _movieService;
|
||||
private readonly IMovieMetadataService _movieMetadataService;
|
||||
private readonly IEventAggregator _eventAggregator;
|
||||
|
||||
public MovieCollectionService(IMovieCollectionRepository repo, IMovieService movieService, IEventAggregator eventAggregator)
|
||||
public MovieCollectionService(IMovieCollectionRepository repo, IMovieMetadataService movieMetadataService, IEventAggregator eventAggregator)
|
||||
{
|
||||
_repo = repo;
|
||||
_movieService = movieService;
|
||||
_movieMetadataService = movieMetadataService;
|
||||
_eventAggregator = eventAggregator;
|
||||
}
|
||||
|
||||
|
@ -92,11 +92,11 @@ namespace NzbDrone.Core.Movies.Collections
|
|||
|
||||
public void HandleAsync(MoviesDeletedEvent message)
|
||||
{
|
||||
var collections = message.Movies.Select(x => x.CollectionId).Distinct();
|
||||
var collections = message.Movies.Select(x => x.MovieMetadata.Value.CollectionId).Distinct();
|
||||
|
||||
foreach (var collectionId in collections)
|
||||
{
|
||||
if (collectionId == 0 || _movieService.GetMoviesByCollectionId(collectionId).Any())
|
||||
if (collectionId == 0 || _movieMetadataService.GetMoviesByCollectionId(collectionId).Any())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -3,7 +3,6 @@ using System.Collections.Generic;
|
|||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Core.Datastore;
|
||||
using NzbDrone.Core.MediaFiles;
|
||||
using NzbDrone.Core.Movies.Collections;
|
||||
using NzbDrone.Core.Profiles;
|
||||
|
||||
namespace NzbDrone.Core.Movies
|
||||
|
@ -25,9 +24,6 @@ namespace NzbDrone.Core.Movies
|
|||
public string Path { get; set; }
|
||||
|
||||
public LazyLoaded<MovieMetadata> MovieMetadata { get; set; }
|
||||
|
||||
public int CollectionId { get; set; }
|
||||
public LazyLoaded<MovieCollection> Collection { get; set; }
|
||||
|
||||
public string RootFolderPath { get; set; }
|
||||
public DateTime Added { get; set; }
|
||||
|
|
|
@ -3,6 +3,7 @@ using System.Collections.Generic;
|
|||
using Equ;
|
||||
using NzbDrone.Core.Languages;
|
||||
using NzbDrone.Core.Movies.AlternativeTitles;
|
||||
using NzbDrone.Core.Movies.Collections;
|
||||
using NzbDrone.Core.Movies.Translations;
|
||||
|
||||
namespace NzbDrone.Core.Movies
|
||||
|
@ -31,7 +32,8 @@ namespace NzbDrone.Core.Movies
|
|||
public int Year { get; set; }
|
||||
public Ratings Ratings { get; set; }
|
||||
|
||||
public MovieCollection Collection { get; set; }
|
||||
public int CollectionId { get; set; }
|
||||
public LazyLoaded<MovieCollection> Collection { get; set; }
|
||||
public DateTime? LastInfoSync { get; set; }
|
||||
public int Runtime { get; set; }
|
||||
public string Website { get; set; }
|
||||
|
|
|
@ -10,6 +10,7 @@ namespace NzbDrone.Core.Movies
|
|||
{
|
||||
MovieMetadata FindByTmdbId(int tmdbId);
|
||||
List<MovieMetadata> FindById(List<int> tmdbIds);
|
||||
List<MovieMetadata> GetMoviesByCollectionId(int collectionId);
|
||||
bool UpsertMany(List<MovieMetadata> data);
|
||||
}
|
||||
|
||||
|
@ -33,6 +34,11 @@ namespace NzbDrone.Core.Movies
|
|||
return Query(x => Enumerable.Contains(tmdbIds, x.TmdbId));
|
||||
}
|
||||
|
||||
public List<MovieMetadata> GetMoviesByCollectionId(int collectionId)
|
||||
{
|
||||
return Query(x => x.CollectionId == collectionId);
|
||||
}
|
||||
|
||||
public bool UpsertMany(List<MovieMetadata> data)
|
||||
{
|
||||
var existingMetadata = FindById(data.Select(x => x.TmdbId).ToList());
|
||||
|
|
|
@ -6,6 +6,7 @@ namespace NzbDrone.Core.Movies
|
|||
{
|
||||
MovieMetadata Get(int id);
|
||||
MovieMetadata FindByTmdbId(int tmdbid);
|
||||
List<MovieMetadata> GetMoviesByCollectionId(int collectionId);
|
||||
bool Upsert(MovieMetadata movie);
|
||||
bool UpsertMany(List<MovieMetadata> movies);
|
||||
}
|
||||
|
@ -24,6 +25,11 @@ namespace NzbDrone.Core.Movies
|
|||
return _movieMetadataRepository.FindByTmdbId(tmdbid);
|
||||
}
|
||||
|
||||
public List<MovieMetadata> GetMoviesByCollectionId(int collectionId)
|
||||
{
|
||||
return _movieMetadataRepository.GetMoviesByCollectionId(collectionId);
|
||||
}
|
||||
|
||||
public MovieMetadata Get(int id)
|
||||
{
|
||||
return _movieMetadataRepository.Get(id);
|
||||
|
|
|
@ -225,7 +225,7 @@ namespace NzbDrone.Core.Movies
|
|||
|
||||
public List<Movie> GetMoviesByCollectionId(int collectionId)
|
||||
{
|
||||
return Query(x => x.CollectionId == collectionId);
|
||||
return Query(x => x.MovieMetadata.Value.CollectionId == collectionId);
|
||||
}
|
||||
|
||||
public void SetFileId(int fileId, int movieId)
|
||||
|
|
|
@ -62,7 +62,7 @@ namespace NzbDrone.Core.Movies
|
|||
collection.SortTitle = collectionInfo.SortTitle;
|
||||
collection.LastInfoSync = DateTime.UtcNow;
|
||||
collection.Images = collectionInfo.Images;
|
||||
collection.Movies = collectionInfo.Movies;
|
||||
collection.MovieMetadataIds = collectionInfo.MovieMetadataIds;
|
||||
|
||||
_logger.Debug("Finished collection refresh for {0}", collection.Title);
|
||||
|
||||
|
@ -94,7 +94,7 @@ namespace NzbDrone.Core.Movies
|
|||
{
|
||||
var existingMovies = _movieService.AllMovieTmdbIds();
|
||||
|
||||
_addMovieService.AddMovies(collection.Movies.Where(m => !existingMovies.Contains(m.TmdbId)).Select(m => new Movie
|
||||
_addMovieService.AddMovies(collection.MovieMetadata.Where(m => !existingMovies.Contains(m.TmdbId)).Select(m => new Movie
|
||||
{
|
||||
TmdbId = m.TmdbId,
|
||||
Title = m.Title,
|
||||
|
|
|
@ -22,13 +22,19 @@ namespace Radarr.Api.V3.Collections
|
|||
{
|
||||
private readonly IMovieCollectionService _collectionService;
|
||||
private readonly IMovieService _movieService;
|
||||
private readonly IMovieMetadataService _movieMetadataService;
|
||||
private readonly IBuildFileNames _fileNameBuilder;
|
||||
|
||||
public CollectionController(IBroadcastSignalRMessage signalRBroadcaster, IMovieCollectionService collectionService, IMovieService movieService, IBuildFileNames fileNameBuilder)
|
||||
public CollectionController(IBroadcastSignalRMessage signalRBroadcaster,
|
||||
IMovieCollectionService collectionService,
|
||||
IMovieService movieService,
|
||||
IMovieMetadataService movieMetadataService,
|
||||
IBuildFileNames fileNameBuilder)
|
||||
: base(signalRBroadcaster)
|
||||
{
|
||||
_collectionService = collectionService;
|
||||
_movieService = movieService;
|
||||
_movieMetadataService = movieMetadataService;
|
||||
_fileNameBuilder = fileNameBuilder;
|
||||
}
|
||||
|
||||
|
@ -90,7 +96,7 @@ namespace Radarr.Api.V3.Collections
|
|||
{
|
||||
var resource = collection.ToResource();
|
||||
|
||||
foreach (var movie in collection.Movies)
|
||||
foreach (var movie in _movieMetadataService.GetMoviesByCollectionId(collection.Id))
|
||||
{
|
||||
var movieResource = movie.ToResource();
|
||||
movieResource.Folder = _fileNameBuilder.GetMovieFolder(new Movie { Title = movie.Title, Year = movie.Year, ImdbId = movie.ImdbId, TmdbId = movie.TmdbId });
|
||||
|
|
|
@ -27,7 +27,7 @@ namespace Radarr.Api.V3.Collections
|
|||
|
||||
public static class CollectionMovieResourceMapper
|
||||
{
|
||||
public static CollectionMovieResource ToResource(this CollectionMovie model)
|
||||
public static CollectionMovieResource ToResource(this MovieMetadata model)
|
||||
{
|
||||
if (model == null)
|
||||
{
|
||||
|
|
|
@ -77,7 +77,7 @@ namespace Radarr.Api.V3.ImportLists
|
|||
Ratings = model.MovieMetadata.Value.Ratings,
|
||||
YouTubeTrailerId = model.MovieMetadata.Value.YouTubeTrailerId,
|
||||
Studio = model.MovieMetadata.Value.Studio,
|
||||
Collection = model.MovieMetadata.Value.CollectionId
|
||||
Collection = model.MovieMetadata.Value.Collection
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -5,7 +5,6 @@ using NzbDrone.Core.DecisionEngine.Specifications;
|
|||
using NzbDrone.Core.Languages;
|
||||
using NzbDrone.Core.MediaCover;
|
||||
using NzbDrone.Core.Movies;
|
||||
using NzbDrone.Core.Movies.Collections;
|
||||
using NzbDrone.Core.Movies.Translations;
|
||||
using NzbDrone.Core.Parser;
|
||||
using Radarr.Api.V3.MovieFiles;
|
||||
|
@ -141,7 +140,7 @@ namespace Radarr.Api.V3.Movies
|
|||
MovieFile = movieFile,
|
||||
YouTubeTrailerId = model.MovieMetadata.Value.YouTubeTrailerId,
|
||||
Studio = model.MovieMetadata.Value.Studio,
|
||||
Collection = model.MovieMetadata.Value.CollectionId,
|
||||
CollectionId = model.MovieMetadata.Value.CollectionId,
|
||||
Popularity = model.MovieMetadata.Value.Popularity
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue