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); }
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 })); }
public MovieExternFilter(string query) : base("Other Movies") { _query = query; _tmdbResult = (TmdbResult)App.MainVm.SearchExtern(_query); GetResultCount(); }
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); }
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); } }
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)); }
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); }
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); }
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()); }
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)); }
public string GetPosterPath(TmdbResult result, string dir) { var manager = _kernel.Get <IPersistentDataManager>(); return(manager.GetPosterUri(result, dir, Settings.Default.PosterFileName + Commons.JpgFileExtension)); }