public static Core.Movies.Movie ToModel(this MovieResource resource, Core.Movies.Movie movie) { var updatedmovie = resource.ToModel(); movie.ApplyChanges(updatedmovie); return(movie); }
public static Core.Movies.Movie ToModel(this MovieResource resource, Core.Movies.Movie movie) { movie.ImdbId = resource.ImdbId; movie.TmdbId = resource.TmdbId; movie.Path = resource.Path; movie.ProfileId = resource.ProfileId; movie.PathState = resource.PathState; movie.Monitored = resource.Monitored; movie.MinimumAvailability = resource.MinimumAvailability; movie.RootFolderPath = resource.RootFolderPath; movie.Tags = resource.Tags; movie.AddOptions = resource.AddOptions; return(movie); }
public static MovieResource ToResource(this Core.Movies.Movie model) { if (model == null) { return(null); } long size = model.MovieFile?.Size ?? 0; bool downloaded = model.MovieFile != null; MovieFileResource movieFile = model.MovieFile?.ToResource(); /*if(model.MovieFile != null) * { * model.MovieFile.LazyLoad(); * } * * if (model.MovieFile != null && model.MovieFile.IsLoaded && model.MovieFile.Value != null) * { * size = model.MovieFile.Value.Size; * downloaded = true; * movieFile = model.MovieFile.Value.ToResource(); * }*/ //model.AlternativeTitles.LazyLoad(); return(new MovieResource { Id = model.Id, TmdbId = model.TmdbId, Title = model.Title, //AlternateTitles SortTitle = model.SortTitle, InCinemas = model.InCinemas, PhysicalRelease = model.PhysicalRelease, HasFile = model.HasFile, Downloaded = downloaded, //TotalEpisodeCount //EpisodeCount //EpisodeFileCount SizeOnDisk = size, Status = model.Status, Overview = model.Overview, //NextAiring //PreviousAiring Images = model.Images, Year = model.Year, SecondaryYear = model.SecondaryYear, Path = model.Path, ProfileId = model.ProfileId, Monitored = model.Monitored, MinimumAvailability = model.MinimumAvailability, IsAvailable = model.IsAvailable(), FolderName = model.FolderName(), //SizeOnDisk = size, Runtime = model.Runtime, LastInfoSync = model.LastInfoSync, CleanTitle = model.CleanTitle, ImdbId = model.ImdbId, TitleSlug = model.TitleSlug, RootFolderPath = model.RootFolderPath, Certification = model.Certification, Website = model.Website, Genres = model.Genres, Tags = model.Tags, Added = model.Added, AddOptions = model.AddOptions, AlternativeTitles = model.AlternativeTitles.ToResource(), Ratings = model.Ratings, MovieFile = movieFile, YouTubeTrailerId = model.YouTubeTrailerId, Studio = model.Studio }); }
private Response Search() { if (Request.Query.Id == 0) { //Todo error handling } RootFolder rootFolder = _rootFolderService.Get(Request.Query.Id); int page = Request.Query.page; int per_page = Request.Query.per_page; int min = (page - 1) * per_page; int max = page * per_page; var unmapped = rootFolder.UnmappedFolders.OrderBy(f => f.Name).ToList(); int total_count = unmapped.Count; if (Request.Query.total_entries.HasValue) { total_count = Request.Query.total_entries; } max = total_count >= max ? max : total_count; var paged = unmapped.GetRange(min, max - min); var mapped = paged.Select(f => { Core.Movies.Movie m = null; var mappedMovie = _mappedMovies.Find(f.Name); if (mappedMovie != null) { return(mappedMovie); } var parsedTitle = _parsingService.ParseMinimalPathMovieInfo(f.Name); parsedTitle.ImdbId = Parser.ParseImdbId(parsedTitle.SimpleReleaseTitle); if (parsedTitle == null) { m = new Core.Movies.Movie { Title = f.Name.Replace(".", " ").Replace("-", " "), Path = f.Path, }; } else { m = new Core.Movies.Movie { Title = parsedTitle.MovieTitle, Year = parsedTitle.Year, ImdbId = parsedTitle.ImdbId, Path = f.Path }; } var files = _diskScanService.GetVideoFiles(f.Path); var decisions = _importDecisionMaker.GetImportDecisions(files.ToList(), m, true); var decision = decisions.Where(d => d.Approved && !d.Rejections.Any()).FirstOrDefault(); if (decision != null) { var local = decision.LocalMovie; m.MovieFile = new MovieFile { Path = local.Path, Edition = local.ParsedMovieInfo.Edition, Quality = local.Quality, MediaInfo = local.MediaInfo, ReleaseGroup = local.ParsedMovieInfo.ReleaseGroup, RelativePath = f.Path.GetRelativePath(local.Path) }; } mappedMovie = _searchProxy.MapMovieToTmdbMovie(m); if (mappedMovie != null) { mappedMovie.Monitored = true; _mappedMovies.Set(f.Name, mappedMovie, TimeSpan.FromDays(2)); return(mappedMovie); } return(null); }); return(new PagingResource <MovieResource> { Page = page, PageSize = per_page, SortDirection = SortDirection.Ascending, SortKey = Request.Query.sort_by, TotalRecords = total_count - mapped.Where(m => m == null).Count(), Records = MapToResource(mapped.Where(m => m != null)).ToList() }.AsResponse()); }