//------------------------------------------------------------------------------------------- // Dowload backdrops on theMovieDB.org //------------------------------------------------------------------------------------------- public static void Download_Backdrops_Fanart(string wtitle, string wttitle, string wftitle, string director, string imdbid, string year, bool choose, int wGetId, string savetitle, string personartworkpath, bool loadFanart, bool loadPersonImages, GUIAnimation searchanimation) { new Thread(delegate() { var grab = new GrabberUrlClass(); int wyear = 0; try { wyear = Convert.ToInt32(year); } catch { } try { SetProcessAnimationStatus(true, searchanimation); // GUIWaitCursor.Init(); GUIWaitCursor.Show(); List<DbMovieInfo> listemovies = grab.GetFanart(wtitle, savetitle, wyear, director, imdbid, MyFilms.conf.StrPathFanart, true, choose, MyFilms.conf.StrTitle1, personartworkpath); SetProcessAnimationStatus(false, searchanimation); //GUIWaitCursor.Hide(); //System.Collections.Generic.List<grabber.DBMovieInfo> listemovies = Grab.GetFanart(wtitle, wttitle, wyear, director, MyFilms.conf.StrPathFanart, true, choose); LogMyFilms.Debug("(DownloadBackdrops) - listemovies: '" + wtitle + "', '" + wttitle + "', '" + wyear + "', '" + director + "', '" + MyFilms.conf.StrPathFanart + "', 'true', '" + choose + "', '" + MyFilms.conf.StrTitle1 + "'"); int listCount = listemovies.Count; LogMyFilms.Debug("(DownloadBackdrops) - listemovies: Result Listcount: '" + listCount + "'"); if (choose) listCount = 2; switch (listCount) { case 0: break; case 1: LogMyFilms.Debug("Fanart " + listemovies[0].Name.Substring(listemovies[0].Name.LastIndexOf("\\") + 1) + " downloaded for " + wttitle); if (listemovies[0].Persons.Count > 0) { LogMyFilms.Debug("PersonArtwork: " + listemovies[0].Persons.Count + " Persons checked for " + wttitle); foreach (DbPersonInfo person in listemovies[0].Persons) { LogMyFilms.Debug("PersonArtwork: " + person.Images.Count + " images found for " + person.Name); } } break; default: const int MinChars = 2; const bool Filter = true; // no "der die das" GUIDialogMenu dlg = (GUIDialogMenu)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_MENU); if (dlg == null) return; dlg.Reset(); dlg.SetHeading(loadFanart ? GUILocalizeStrings.Get(1079862) : GUILocalizeStrings.Get(1079900)); // Load fanart (online) // Download person images (selected film) dlg.Add(" ***** " + GUILocalizeStrings.Get(1079860) + " ***** "); //manual selection foreach (DbMovieInfo t in listemovies) { string dialoginfoline = t.Name + " (" + t.Year + ")"; if (loadFanart) dialoginfoline += " - Fanarts: " + t.Backdrops.Count; if (loadPersonImages) dialoginfoline += " - Persons: " + t.Persons.Count.ToString(); dlg.Add(dialoginfoline); LogMyFilms.Debug("TMDB listemovies: " + t.Name + " (" + t.Year + ") - Fanarts: " + t.Backdrops.Count + " - TMDB-Id: " + t.Identifier + " - Persons: " + t.Persons.Count); } if (!(dlg.SelectedLabel > -1)) { dlg.SelectedLabel = -1; dlg.DoModal(wGetId); } if (dlg.SelectedLabel == 0) { #region Get SubTitles and Subwords from otitle and ttitle //First Show Dialog to choose Otitle, Ttitle or substrings - or Keyboard to manually enter searchstring!!! var dlgSearchFilm = (GUIDialogMenu)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_MENU); if (dlgSearchFilm == null) return; dlgSearchFilm.Reset(); dlgSearchFilm.SetHeading(GUILocalizeStrings.Get(1079859)); // choose search expression dlgSearchFilm.Add(" ***** " + GUILocalizeStrings.Get(1079858) + " ***** "); //manual selection with keyboard //dlgs.Add(wtitle); //Otitle dlgSearchFilm.Add(savetitle); //Otitle = savetitle dlgSearchFilm.Add(wttitle); //Ttitle foreach (string t in MyFilms.SubTitleGrabbing(wtitle).Where(t => t.Length > 1)) dlgSearchFilm.Add(t); foreach (string t in MyFilms.SubTitleGrabbing(wttitle).Where(t => t.Length > 1)) dlgSearchFilm.Add(t); foreach (string t in MyFilms.SubWordGrabbing(wtitle, MinChars, Filter).Where(t => t.Length > 1)) dlgSearchFilm.Add(t); foreach (string t in MyFilms.SubWordGrabbing(wttitle, MinChars, Filter).Where(t => t.Length > 1)) dlgSearchFilm.Add(t); //Now all titles and Substrings listed in dialog ! //dlgs.Add(" ***** " + GUILocalizeStrings.Get(1079860) + " ***** "); //manual selection if (!(dlgSearchFilm.SelectedLabel > -1)) { dlgSearchFilm.SelectedLabel = -1; dlgSearchFilm.DoModal(wGetId); } if (dlgSearchFilm.SelectedLabel == 0) // enter manual searchstring via VK { VirtualKeyboard keyboard = (VirtualKeyboard)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_VIRTUAL_KEYBOARD); if (null == keyboard) return; keyboard.Reset(); keyboard.SetLabelAsInitialText(false); // set to false, otherwise our intial text is cleared keyboard.Text = wtitle; keyboard.DoModal(wGetId); if (keyboard.IsConfirmed && (keyboard.Text.Length > 0)) { //Remove_Backdrops_Fanart(wtitle, true); //Remove_Backdrops_Fanart(wttitle, true); //Remove_Backdrops_Fanart(wftitle, true); Download_Backdrops_Fanart(keyboard.Text, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, true, wGetId, savetitle, personartworkpath, loadFanart, loadPersonImages, searchanimation); } break; } if (dlgSearchFilm.SelectedLabel > 0 && dlgSearchFilm.SelectedLabel < 3) // if one of otitle or ttitle selected, keep year and director { Download_Backdrops_Fanart(dlgSearchFilm.SelectedLabelText, wttitle, wftitle, year, director, string.Empty, true, wGetId, savetitle, personartworkpath, loadFanart, loadPersonImages, searchanimation); //Download_Backdrops_Fanart(string wtitle, string wttitle, string director, string year, bool choose,int wGetID, string savetitle) break; } if (dlgSearchFilm.SelectedLabel > 2) // For subitems, search without year and director ! { Download_Backdrops_Fanart(dlgSearchFilm.SelectedLabelText, wttitle, wftitle, string.Empty, string.Empty, string.Empty, true, wGetId, savetitle, personartworkpath, loadFanart, loadPersonImages, searchanimation); //Download_Backdrops_Fanart(string wtitle, string wttitle, string director, string year, bool choose,int wGetID, string savetitle) break; } #endregion } if (dlg.SelectedLabel > 0) { // Load Fanart -> show progress dialog ! var dlgPrgrs = (GUIDialogProgress)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_PROGRESS); if (dlgPrgrs != null) { dlgPrgrs.Reset(); dlgPrgrs.DisplayProgressBar = true; dlgPrgrs.ShowWaitCursor = false; dlgPrgrs.DisableCancel(true); dlgPrgrs.SetHeading("MyFilms Artwork Download"); dlgPrgrs.StartModal(GUIWindowManager.ActiveWindow); dlgPrgrs.SetLine(1, "Loading Artwork ..."); dlgPrgrs.Percentage = 0; #region load fanarts ... bool first = true; string filename = string.Empty; string filename1 = string.Empty; //if (MyFilms.conf.StrTitle1 == "OriginalTitle") // wttitle = savetitle; // Was wttitle = wtitle; int i = 0; if (loadFanart) // Download Fanart { if (dlgPrgrs != null) dlgPrgrs.SetLine(1, "Loading Fanart for '" + savetitle + "'"); foreach (string backdrop in listemovies[dlg.SelectedLabel - 1].Backdrops) { filename1 = Grabber.GrabUtil.DownloadBacdropArt(MyFilms.conf.StrPathFanart, backdrop, savetitle, true, first, out filename); if (dlgPrgrs != null) dlgPrgrs.SetLine(2, "loading '" + System.IO.Path.GetFileName(filename) + "'"); if (dlgPrgrs != null) dlgPrgrs.Percentage = i * 100 / listemovies[dlg.SelectedLabel - 1].Backdrops.Count; LogMyFilms.Debug("Fanart " + filename1.Substring(filename1.LastIndexOf("\\") + 1) + " downloaded for " + savetitle); if (filename == string.Empty) filename = filename1; if (!(filename == "already" && filename1 == "already")) filename = "added"; first = false; i++; } } #endregion listemovies[0].Name = filename; if (loadPersonImages) // Download PersonArtwork { string filenameperson = string.Empty; string filename1person = string.Empty; LogMyFilms.Debug("Person Artwork - " + listemovies[0].Persons.Count + " persons found - now loading artwork"); if (!string.IsNullOrEmpty(personartworkpath) && listemovies[0].Persons != null && listemovies[0].Persons.Count > 0) { if (dlgPrgrs != null) dlgPrgrs.SetLine(1, "Loading person images for '" + wttitle + "'"); if (dlgPrgrs != null) dlgPrgrs.SetLine(2, ""); foreach (DbPersonInfo person in listemovies[0].Persons) { bool firstpersonimage = true; bool onlysinglepersonimage = true; var persondetails = new DbPersonInfo(); var theMoviedb = new TheMoviedb(); persondetails = theMoviedb.GetPersonsById(person.Id, string.Empty); LogMyFilms.Debug("Person Artwork: found '" + persondetails.Images.Count + "' TMDB images for '" + persondetails.Name + "' in movie '" + savetitle + "'"); if (dlgPrgrs != null) dlgPrgrs.SetLine(2, "loading '" + persondetails.Name + "'"); if (dlgPrgrs != null) dlgPrgrs.Percentage = 0; if (persondetails.Images.Count > 0) { i = 0; foreach (var image in persondetails.Images) { filename1person = Grabber.GrabUtil.DownloadPersonArtwork(personartworkpath, image, persondetails.Name, true, firstpersonimage, out filenameperson); if (dlgPrgrs != null) dlgPrgrs.SetLine(2, "loading '" + persondetails.Name + "' (TMDB - #" + i + ")"); if (dlgPrgrs != null) dlgPrgrs.Percentage = i * 100 / persondetails.Images.Count; LogMyFilms.Debug("Person Artwork " + filename1person.Substring(filename1person.LastIndexOf("\\") + 1) + " downloaded for '" + persondetails.Name + "' in movie '" + savetitle + "', path='" + filename1person + "'"); if (filenameperson == string.Empty) filenameperson = filename1person; if (!(filenameperson == "already" && filename1person == "already")) filenameperson = "added"; firstpersonimage = false; i++; if (onlysinglepersonimage) break; } } } } else if (string.IsNullOrEmpty(personartworkpath)) LogMyFilms.Debug("No Personartwork loaded - Personartworkpath is not set in setup!"); } if (dlgPrgrs != null) dlgPrgrs.Percentage = 100; dlgPrgrs.ShowWaitCursor = false; dlgPrgrs.SetLine(1, GUILocalizeStrings.Get(1079846)); dlgPrgrs.SetLine(2, ""); Thread.Sleep(50); dlgPrgrs.Close(); // Done... return; } } break; } } catch (Exception ex) { LogMyFilms.Debug(ex, "Thread 'MyFilmsTMDBLoader' - exception!"); } GUIWindowManager.SendThreadCallbackAndWait((p1, p2, data) => { //dlgPrgrs.ShowWaitCursor = false; // enter here what to load after background thread has finished ! if (DetailsUpdated != null) DetailsUpdated(true); return 0; }, 0, 0, null); }) { Name = "MyFilmsTMDBLoader", IsBackground = true }.Start(); }
private static void GrabArtwork(string title, string ttitle, int year, string director, string imdbid, string StrTitle1, GUIDialogProgress dlgPrgrs) { try { if (dlgPrgrs != null) dlgPrgrs.SetLine(1, "Now loading Fanart ..."); if (dlgPrgrs != null && !dlgPrgrs.ShouldRenderLayer()) return; if (dlgPrgrs != null) dlgPrgrs.Percentage = 10; var grab = new GrabberUrlClass(); List<DbMovieInfo> listemovies = grab.GetFanart(title, ttitle, year, director, imdbid, MyFilms.conf.StrPathFanart, true, false, StrTitle1, string.Empty); } catch (Exception ex) { LogMyFilms.Debug("GrabArtwork() - Error getting fanart: " + ex.Message); } finally { if (dlgPrgrs != null) { dlgPrgrs.Percentage = 100; dlgPrgrs.SetLine(1, "Finished loading Fanart !"); dlgPrgrs.ShowWaitCursor = false; Thread.Sleep(500); dlgPrgrs.Close(); } } }