/// <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);

        }
Exemplo n.º 15
0
        /// <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;
            }

        }
Exemplo n.º 17
0
        /// <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();
        }