Exemplo n.º 1
0
        public TmdbResult GetByTmdbId(string id)
        {
            if (id == "-1")
            {
                return(null);
            }
            var col = new NameValueCollection
            {
                { "append_to_response", "alternative_titles" }
            };
            var uri      = _uriBuilder.BuildUri($"/movie/{id}", col);
            var response = _webApi.GetRequestBody <MovieDetailsRoot>(uri);

            // parse
            var data = new TmdbResult
            {
                Id     = response.id,
                Genre  = string.Join(", ", response.genres.Select(x => x.name)),
                ImdbId = response.imdb_id,
                Plot   = response.overview,
                Title  = response.title,
                Year   = DateTime.Parse(response.release_date).Year,

                AlternativeNames = ParseAlternatives(response.title, response.alternative_titles.Titles),
                PosterPath       = response.poster_path
            };

            return(data);
        }
Exemplo n.º 2
0
        protected override void InternalRunWorker(object arg)
        {
            _log.Info("Processing: " + arg);
            TmdbResult newData = null;

            try
            {
                var name = _guessit.RealGuessName(Path.GetFileName(arg.ToString()));
                if (name?.ImdbId != null)
                {
                    newData = _tmdb.GetByImdbId(name.ImdbId);
                }
                else if (name?.Title != null)
                {
                    newData = _tmdb.GetByTmdbId(_tmdb.SearchMovies(name.Title, name.Year).First());
                }
            }
            catch (Exception e)
            {
                _log.Error(e, "Process error: " + arg);
            }

            newData = newData ?? _tmdb.GetByFilename(Path.GetFileName(arg.ToString()));
            var result = new MovieEntryFacade(newData, arg.ToString());

            _log.Info("Processed: " + arg);
            IncrementWorkDone();
            OnProgressChanged(this, new ProgressChangedEventArgs(GetPercentage(), new  DirectoryAnalyzeWorkerState
            {
                Entry = result
            }));
        }
Exemplo n.º 3
0
 public MovieExternFilter(string query)
     : base("Other Movies")
 {
     _query      = query;
     _tmdbResult = (TmdbResult)App.MainVm.SearchExtern(_query);
     GetResultCount();
 }
Exemplo n.º 4
0
        public async Task <TmdbResult> GetByTmdbId(string id)
        {
            if (id == "-1")
            {
                return(null);
            }
            var col = new NameValueCollection
            {
                { "append_to_response", "alternative_titles" }
            };

            // get
            var response = await GetRequestBody <MovieDetailsRoot>(string.Format(MoviePath, id), col);

            var data = new TmdbResult
            {
                TmdbId = response.id,
                Genre  = string.Join(", ", response.genres.Select(x => x.name)),
                ImdbId = response.imdb_id,
                Plot   = response.overview,
                Title  = response.title,
                Year   = DateTime.Parse(response.release_date).Year,

                AlternativeNames = ParseAlternatives(response.title, response.alternative_titles.Titles),
                PosterPath       = response.poster_path
            };

            return(data);
        }
Exemplo n.º 5
0
        public void SaveData(TmdbResult entry, string dirPath)
        {
            var persistFile = Path.Combine(dirPath, PersistentFileName);

            File.WriteAllText(persistFile, JsonConvert.SerializeObject(entry));
            if (HidePresistFile)
            {
                File.SetAttributes(persistFile, FileAttributes.Hidden);
            }
        }
Exemplo n.º 6
0
        public async Task <IActionResult> Index(string term)
        {
            string responseBody = await _apiService.SearchAsync(term);

            TmdbResult result = JsonConvert.DeserializeObject <TmdbResult>(responseBody);

            result.Results = result.Results.Where(r => r.Type == SpinningFilmHelper.MovieType || r.Type == SpinningFilmHelper.SeriesType).OrderByDescending(r => r.Popularity).ToList();

            return(View(result));
        }
Exemplo n.º 7
0
        public string GetPosterUri(TmdbResult result, string dir, string filename)
        {
            var posterPath = Path.Combine(dir, filename);

            if (!File.Exists(posterPath))
            {
                _log.Debug("Using remote poster.");
                posterPath = _tmdb.GetPosterUrl(result.PosterPath, PosterSize.w154);
            }
            else
            {
                _log.Debug("Using local poster file.");
            }

            return(posterPath);
        }
Exemplo n.º 8
0
        private async Task <MovieEntry> HelperFetch(string path)
        {
            var tmdb     = _kernel.Get <ITmdb>();
            var guessit  = _kernel.Get <IGuessit>();
            var filename = Path.GetFileName(path);

            // results
            GuessitResult name    = null;
            TmdbResult    newData = null;

            // process
            try
            {
                // guess
                name = await guessit.RealGuessName(filename);

                if (name?.ImdbId != null)
                {
                    // IMDB id detected
                    newData = await tmdb.GetByImdbId(name.ImdbId);
                }
                else if (name?.Title != null)
                {
                    // title detected
                    var movies = await tmdb.SearchMovies(name.Title, name.Year);

                    newData = await tmdb.GetByTmdbId(movies.First());
                }
            }
            catch (Exception e)
            {
                Debug.Print("Unable to fetch: {0}. {1}", filename, e.Message);
            }

            // entry create
            var entry = new MovieEntry();

            entry.SetFullPath(path);
            entry.SetData(newData ?? await tmdb.GetByFilename(filename));
            if (name != null)
            {
                entry.SetData(name);
            }
            return(entry);
        }
Exemplo n.º 9
0
        private string GetNewFileName(TmdbResult movie, string oldFileName, string ext)
        {
            var newFileName = $"{movie.Title} ({movie.ReleaseDate.Year})";

            if (Regex.IsMatch(oldFileName, @"4k|2160|uhd", RegexOptions.IgnoreCase))
            {
                newFileName += " - 4k";
            }

            if (Regex.IsMatch(oldFileName, @"1080", RegexOptions.IgnoreCase))
            {
                newFileName += " - 1080p";
            }

            if (Regex.IsMatch(ext, @"srt|sub", RegexOptions.IgnoreCase))
            {
                newFileName += ".en";
            }

            newFileName += ext;

            return(newFileName.CleanFileName());
        }
Exemplo n.º 10
0
        public async Task <List <Movie> > GetAsync()
        {
            List <TmdbMovie> movies = new List <TmdbMovie>();

            TmdbResult result = await GetResult();

            if (result != null && result.Results.Any())
            {
                movies.AddRange(result.Results);

                if (result.TotalPages > 1)
                {
                    for (int i = 2; i < result.TotalPages; i++)
                    {
                        TmdbResult result2 = await GetResult(i);

                        movies.AddRange(result2.Results);
                    }
                }
            }

            return(_mapper.Map <List <Movie> >(movies));
        }
Exemplo n.º 11
0
        public string GetPosterPath(TmdbResult result, string dir)
        {
            var manager = _kernel.Get <IPersistentDataManager>();

            return(manager.GetPosterUri(result, dir, Settings.Default.PosterFileName + Commons.JpgFileExtension));
        }