/// <summary> /// Saves movie quotes to an xml file /// </summary> /// <param name="movie">IIMDbMovie object</param> /// <param name="xmlPath">path to save xml file to</param> /// <param name="overwrite">set to true to overwrite existing xml file</param> public static void SaveQuotes( IIMDbMovie movie, string xmlPath, bool overwrite) { System.Xml.XmlTextWriter xmlWr; try { if (File.Exists(xmlPath) == false || overwrite) if (movie.Quotes.Count > 0) { xmlWr = new System.Xml.XmlTextWriter(xmlPath, Encoding.Default) {Formatting = System.Xml.Formatting.Indented}; xmlWr.WriteStartDocument(); xmlWr.WriteStartElement("Quotes"); foreach (IList<IIMDbQuote> quoteBlock in movie.Quotes) { xmlWr.WriteStartElement("QuoteBlock"); foreach (IIMDbQuote quote in quoteBlock) { xmlWr.WriteStartElement("Quote"); xmlWr.WriteElementString("Character", quote.Character); xmlWr.WriteElementString("QuoteText", quote.Text); xmlWr.WriteEndElement(); } xmlWr.WriteEndElement(); } xmlWr.WriteEndElement(); xmlWr.WriteEndDocument(); xmlWr.Flush(); xmlWr.Close(); } } catch (Exception ex) { throw ex; } }
internal static void GetRuntime (IIMDbMovie movie, string trimmedHTML, IMDbRegEx imDbRegEx) { Debugger.LogMessageToFile ("[IMDb film details downloader]" + " Extracting Runtime..."); Match match = imDbRegEx.GetRegExMatch (trimmedHTML, imDbRegEx.RuntimePattern); string runtime = imDbRegEx.GetMatchValue (match, "Runtime", true); runtime = IMDbMovieDetailsDownloaderHelpers.FixRuntime(runtime); movie.Runtime = runtime; Debugger.LogMessageToFile("IMDb returned Runtime: " + movie.Runtime); //MessageBox.Show("IMDb returned Runtime: " + movie.Runtime); }
internal static void GetRating (IIMDbMovie movie, string trimmedHtml, IMDbRegEx imDbRegEx) { if (!ImdbFilmDetailsIndividualChoices.GetIMDbMovieRatings) return; Debugger.LogMessageToFile ("[IMDb film details downloader]" + " Extracting Rating..."); Match match = imDbRegEx.GetRegExMatch (trimmedHtml, imDbRegEx.RatingPattern); movie.Rating = imDbRegEx.GetMatchValue (match, "Rating", true); Debugger.LogMessageToFile("IMDb returned Rating: " + movie.Rating); }
internal static void GetTagline (IIMDbMovie movie, string trimmedHTML, IMDbRegEx imDbRegEx) { if (!ImdbFilmDetailsIndividualChoices.GetIMDbMovieTaglines) return; Debugger.LogMessageToFile("Extracting Tagline..."); Match match = imDbRegEx.GetRegExMatch (trimmedHTML, imDbRegEx.TaglinePattern); movie.Tagline = imDbRegEx.GetMatchValue (match, "Tagline", true); Debugger.LogMessageToFile("IMDb returned Tagline: " + movie.Tagline); //MessageBox.Show("IMDb returned Tagline: " + movie.Tagline); }
internal static void MineProductionYearUsingRegex (IIMDbMovie movie, string trimmedHtml, IMDbRegEx imDbRegEx) { Debugger.LogMessageToFile("[IMDb film details downloader]" + " Extracting Year..."); Match match = imDbRegEx.GetRegExMatch (trimmedHtml, imDbRegEx.YearPattern); movie.Year = imDbRegEx.GetMatchValue (match, "Year", true); movie.Year = movie.Year.TrimEnd('/'); Debugger.LogMessageToFile ("[IMDb film details downloader] " + "IMDb returned Year: " + movie.Year); //MessageBox.Show // ("IMDb returned Year: " + movie.Year); }
internal static void MineProductionYearUsingXpath (IIMDbMovie movie, string trimmedHTML) { Debugger.LogMessageToFile ("[IMDb film details downloader]" + " Extracting Year..."); const string yearXpathExpression = @"//div[@id='ratingWidget']/p[1]"; string filmProductionYear = Code.Metadata_Scrapers.XPathDataMiners .MatchXpathExpressionReturnFirstMatch (trimmedHTML, yearXpathExpression); MessageBox.Show("fim prod: " + filmProductionYear); filmProductionYear = Code.RegEx_Matchers.RegExDataMiners .MatchRegexExpressionReturnFirstMatchFirstGroup (filmProductionYear, @"</strong>\s*\((?<Title>.*)\)"); Debugger.LogMessageToFile ("[IMDb film details downloader]" + " IMDb returned Year: " + filmProductionYear); MessageBox.Show("IMDb returned Year: " + filmProductionYear); }
internal static void GetReleaseDate (IIMDbMovie movie, string trimmedHTML, IMDbRegEx imDbRegEx) { if (!ImdbFilmDetailsIndividualChoices.GetIMDbMovieReleaseDate) return; Debugger.LogMessageToFile("[IMDb film details downloader]" + " Extracting Release Date..."); Match match = imDbRegEx.GetRegExMatch (trimmedHTML, imDbRegEx.ReleaseDatePattern); movie.Release_Date = imDbRegEx.GetMatchValue (match, "ReleaseDate", true); Debugger.LogMessageToFile("[IMDb film details downloader]" + " IMDb returned Release Date: " + movie.Release_Date); //MessageBox.Show("IMDb returned Release Date: " + movie.Release_Date); }
private void SaveAdittionalIMDbDetails (IMLItem item, IIMDbMovie movie) { ImdbMovie = movie; if (!Settings.FilmIMDbDetailsDownloaderIsEnabled) return; if ( !String.IsNullOrEmpty(ImdbMovie.People.GetActorsString(false).Trim() ) ) item.Tags[_actorField] = ImdbMovie.People.GetActorsString(false); if ( !String.IsNullOrEmpty(ImdbMovie.People.GetRolesString().Trim() ) ) item.Tags[_actorRolesField] = ImdbMovie.People.GetRolesString(); if ( !String.IsNullOrEmpty(ImdbMovie.People.GetDirectorString().Trim() ) ) item.Tags[_directorField] = ImdbMovie.People.GetDirectorString(); if ( !String.IsNullOrEmpty(ImdbMovie.GetGenresString().Trim() ) ) item.Tags[_genreField] = ImdbMovie.GetGenresString(); if ( !String.IsNullOrEmpty(ImdbMovie.OverviewLong.Trim() ) ) item.Tags[_longOverviewField] = ImdbMovie.OverviewLong; var rating = ImdbMovie.Rating; //MessageBox.Show(rating); rating = FixRating(rating); //MessageBox.Show(rating); item.Tags[_ratingField] = rating; if (!String.IsNullOrEmpty(ImdbMovie.RatingDescription.Trim())) item.Tags[_ratingDescriptionField] = ImdbMovie.RatingDescription; if (!String.IsNullOrEmpty(ImdbMovie.Review.Trim())) { if (System.Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator == ",") item.Tags[_reviewField] = ImdbMovie.Review.Replace(".", ","); else item.Tags[_reviewField] = ImdbMovie.Review; } if ( !String.IsNullOrEmpty(ImdbMovie.Runtime.Trim() ) ) item.Tags[_runtimeField] = ImdbMovie.Runtime; if ( !String.IsNullOrEmpty(ImdbMovie.OverviewShort.Trim()) ) item.Tags[_shortOverviewField] = ImdbMovie.OverviewShort; if ( !String.IsNullOrEmpty(ImdbMovie.Tagline.Trim()) ) item.Tags[_taglineField] = ImdbMovie.Tagline; if (!String.IsNullOrEmpty(ImdbMovie.Release_Date.Trim())) item.Tags[_releaseDateField] = ImdbMovie.Release_Date; if (!String.IsNullOrEmpty(ImdbMovie.Studio.Trim())) item.Tags[_studioField] = ImdbMovie.Studio; if (!String.IsNullOrEmpty(ImdbMovie.GetTriviaString().Trim())) item.Tags[_triviaField] = ImdbMovie.GetTriviaString(); if (!String.IsNullOrEmpty(ImdbMovie.GetGoofsString().Trim())) item.Tags[_goofsField] = ImdbMovie.GetGoofsString(); #region custom title if (IsCustom) { IsCustom = false; if (!String.IsNullOrEmpty(Title.Trim())) { if (_titleField.ToLower().Trim() == "name" | _titleField.ToLower().Trim() == "<name>" | _titleField.ToLower().Trim() == "{name}") item.Name = Title; else item.Tags[_titleField] = Title; } } else { if (!String.IsNullOrEmpty(ImdbMovie.Title.Trim())) if (_titleField.ToLower().Trim() == "name" | _titleField.ToLower().Trim() == "<name>" | _titleField.ToLower().Trim() == "{name}") item.Name = ImdbMovie.Title; else item.Tags[_titleField] = ImdbMovie.Title; } #endregion if (!String.IsNullOrEmpty(ImdbMovie.People.GetWriterString().Trim())) item.Tags[_writerField] = ImdbMovie.People.GetWriterString(); if (IsCustom) item.Tags["SearchTypeUsed"] = "---imdb-custom---"; else item.Tags["SearchTypeUsed"] = "---imdb---"; item.Tags["UpdateStatus"] = string.Empty; }
//TODO: Should remove this function! public bool SearchIMDbMovies() { #region Item variables ImdbResult = null; ImdbMovie = null; ImdbId = String.Empty; IsCustom = false; NotListed = false; #endregion try { ImdbList = IMDbConventionalFilmSearchEngine.SearchForTitleReturnResults(Title); Debugger.LogMessageToFile("IMDb results found: " + ImdbList.Count); return ImdbList.Count > 0; } catch (Exception e) { Debugger.LogMessageToFile("An error occured while performing IMDb search by title. The error was: " + e); return false; } }
public void SaveIMDbMovieDetails(IMLItem item, IMLSection section, IMDbOperations imdbOp) { ImdbMovie = imdbOp.ImdbMovie; if (ImdbMovie == null) return; SetFieldNames(); try { section.BeginUpdate(); SavePrimaryIMDbDetails(item); SaveAdittionalIMDbDetails(item); item.SaveTags(); section.EndUpdate(); } catch (Exception e) { Debugger.LogMessageToFile("An unexpected error occured trying to save film details from IMDb to library. The error was: " + e ); StatusForm.statusForm.TrayIcon.ShowBalloonTip(5000, "Error trying to save film details to library", "MediaFairy encountered an error trying to save the details of a film to library. Please see Debug.log for details.", ToolTipIcon.Error); MainImportingEngine.GeneralStatus = "Updating Movies section..."; MainImportingEngine.SpecialStatus = "An error occured trying to save film details from IMDb to library."; Helpers.UpdateProgress(MainImportingEngine.GeneralStatus, MainImportingEngine.SpecialStatus, null); Thread.Sleep(5000); return; } return; }
internal static void GetRating(IIMDbMovie movie, string trimmedHTML) { if (!Settings.GetIMDbMovieRatings) return; Debugger.LogMessageToFile("[IMDb film details downloader]" + " Extracting Rating..."); Match match = IMDbMovieDetailsDownloader._IMDbRegex.GetRegExMatch (trimmedHTML, IMDbMovieDetailsDownloader._IMDbRegex._ratingPattern); movie.Rating = IMDbMovieDetailsDownloader._IMDbRegex.GetMatchValue (match, "Rating", true); Debugger.LogMessageToFile("IMDb returned Rating: " + movie.Rating); }
internal static void GetTagline(IIMDbMovie movie, string trimmedHTML) { if (!Settings.GetIMDbMovieTaglines) return; Debugger.LogMessageToFile("Extracting Tagline..."); Match match = IMDbMovieDetailsDownloader._IMDbRegex.GetRegExMatch (trimmedHTML, IMDbMovieDetailsDownloader._IMDbRegex._taglinePattern); movie.Tagline = IMDbMovieDetailsDownloader._IMDbRegex.GetMatchValue (match, "Tagline", true); Debugger.LogMessageToFile("IMDb returned Tagline: " + movie.Tagline); //MessageBox.Show("IMDb returned Tagline: " + movie.Tagline); }
internal static void GetProductionYear(IIMDbMovie movie, string trimmedHTML) { Debugger.LogMessageToFile("[IMDb film details downloader]" + " Extracting Year..."); Match match = IMDbMovieDetailsDownloader._IMDbRegex.GetRegExMatch(trimmedHTML, IMDbMovieDetailsDownloader._IMDbRegex._yearPattern); movie.Year = IMDbMovieDetailsDownloader._IMDbRegex.GetMatchValue (match, "Year", true); movie.Year = movie.Year.TrimEnd('/'); Debugger.LogMessageToFile("[IMDb film details downloader] IMDb returned Year: " + movie.Year); //MessageBox.Show("IMDb returned Year: " + movie.Year); }
internal static void GetReleaseDate(IIMDbMovie movie, string trimmedHTML) { if (!Settings.GetIMDbMovieReleaseDate) return; Debugger.LogMessageToFile("[IMDb film details downloader]" + " Extracting Release Date..."); Match match = IMDbMovieDetailsDownloader._IMDbRegex.GetRegExMatch (trimmedHTML, IMDbMovieDetailsDownloader._IMDbRegex._releaseDatePattern); movie.Release_Date = IMDbMovieDetailsDownloader._IMDbRegex.GetMatchValue (match, "ReleaseDate", true); Debugger.LogMessageToFile("[IMDb film details downloader]" + " IMDb returned Release Date: " + movie.Release_Date); //MessageBox.Show("IMDb returned Release Date: " + movie.Release_Date); }
/// <summary> /// Saves movie goofs to an xml file /// </summary> /// <param name="movie">IIMDbMovie object</param> /// <param name="xmlPath">path to save xml file to</param> /// <param name="overwrite">set to true to overwrite existing xml file</param> public void SaveGoofs( IIMDbMovie movie, string xmlPath, bool overwrite) { System.Xml.XmlTextWriter xmlWr; try { if (System.IO.File.Exists(xmlPath) == false || overwrite) if (movie.Goofs.Count > 0) { xmlWr = new System.Xml.XmlTextWriter(xmlPath, Encoding.Default); xmlWr.Formatting = System.Xml.Formatting.Indented; xmlWr.WriteStartDocument(); xmlWr.WriteStartElement("Goofs"); foreach (IIMDbGoof goof in movie.Goofs) { xmlWr.WriteStartElement("Goof"); xmlWr.WriteElementString("Category", goof.Category); xmlWr.WriteElementString("Description", goof.Description); xmlWr.WriteEndElement(); } xmlWr.WriteEndElement(); xmlWr.WriteEndDocument(); xmlWr.Flush(); xmlWr.Close(); xmlWr = null; } } catch (Exception ex) { throw ex; } }
//TODO: Should remove this function! public IIMDbMovie GetIMDbMovieDetails(string imdbid, bool showProgress) { try { //Debugger.LogMessageToFile("Entered GetIMDbMovieDetails"); ImdbMovie = _imdbLib.GetMovieDetails(imdbid, showProgress); //Debugger.LogMessageToFile("Returned from GetMovieDetails"); if (ImdbMovie == null) { Debugger.LogMessageToFile("Returned movie result was empty"); return null; } ImdbMovie.Year = ImdbMovie.Year.TrimEnd('/'); //Debugger.LogMessageToFile("Trimmed Year"); return ImdbMovie; } catch (Exception e) { Debugger.LogMessageToFile(e.ToString()); return null; } }
/// <summary> /// Saves movie trivia to an xml file /// </summary> /// <param name="movie">IIMDbMovie object</param> /// <param name="xmlPath">path to save xml file to</param> /// <param name="overwrite">set to true to overwrite existing xml file</param> public void SaveTrivia( IIMDbMovie movie, string xmlPath, bool overwrite) { System.Xml.XmlTextWriter xmlWr; try { if (System.IO.File.Exists(xmlPath) == false || overwrite) if (movie.Trivia.Count > 0) { xmlWr = new System.Xml.XmlTextWriter(xmlPath, Encoding.Default); xmlWr.Formatting = System.Xml.Formatting.Indented; xmlWr.WriteStartDocument(); xmlWr.WriteStartElement("Trivias"); foreach (string trivia in movie.Trivia) { xmlWr.WriteElementString("Trivia", trivia); } xmlWr.WriteEndElement(); xmlWr.WriteEndDocument(); xmlWr.Flush(); xmlWr.Close(); xmlWr = null; } } catch (Exception ex) { throw ex; } }
private void SavePrimaryIMDbDetails (IMLItem item, IIMDbMovie movie) { ImdbMovie = movie; if (ImdbMovie.IMDb_ID.Trim() != string.Empty) item.Tags["ImdbID"] = ImdbMovie.IMDb_ID; if (ImdbMovie.Year.Trim() != string.Empty) item.Tags[_yearField] = ImdbMovie.Year; if (ImdbMovie.Title.Trim() == string.Empty) return; if (!ImdbMovie.Title.StartsWith("\"")) //for movies { item.Name = ImdbMovie.Title; item.Tags["Title"] = ImdbMovie.Title; item.SaveTags(); } else //for tv shows { var closingQuoteIndex = ImdbMovie.Title.IndexOf('"', 1); if (closingQuoteIndex > 2) { var seriesName = ImdbMovie.Title.Substring(1, closingQuoteIndex - 1); item.Name = seriesName; if (String.IsNullOrEmpty(Helpers.GetTagValueFromItem(item, "SeriesName"))) item.Tags["SeriesName"] = seriesName; } } item.SaveTags(); }