示例#1
0
        public static Core.Movies.Movie ToModel(this MovieResource resource, Core.Movies.Movie movie)
        {
            var updatedmovie = resource.ToModel();

            movie.ApplyChanges(updatedmovie);

            return(movie);
        }
示例#2
0
        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);
        }
示例#3
0
        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
            });
        }
示例#4
0
        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());
        }