Esempio n. 1
0
        internal movieData chooseMovie(Movie m, List<movieData> movies)
        {
            movieData md = new movieData();
            md.Name = m.title;
            md.Year = m.year;
            if (movies.Count == 0) return md;
            if (movies.Count == 1) return movies[0];

            foreach (movieData movie in movies) {
                if (m.compareTitles(movie)) return movie;
            }

            SelectMovie movieDlg = new SelectMovie();
            movieDlg.Text = String.Format("Select movie for {0} ({1})", m.title, m.year);
            movieDlg.setMovieData(m);

            foreach (movieData movie in movies) {
                movieDlg.addMovie(movie);
            }

            if (movieDlg.ShowDialog() == DialogResult.OK) {
                md = movieDlg.selectedMovie;
            }
            movieDlg.Dispose();
            return md;
        }
Esempio n. 2
0
        public override void getMovieData(ref Movie movie)
        {
            movieCache = String.Format(baseCache, MD5.createHash(movie.title), movie.year);
            WebClient cli = new WebClient();

            if (!File.Exists(movieCache)) {
                cli.DownloadFile(String.Format(searchUrl, movie.title), movieCache);
            }

            if (File.Exists(movieCache)) {
                XmlDocument xml = new XmlDocument();
                List<movieData> movies = new List<movieData>();
                DateTime dt = File.GetLastWriteTime(movieCache);
                if (DateTime.Now.Subtract(dt).TotalDays > 3) {
                    // Log.Add( i18n.t( "oparse_older", ep.series) );
                    File.Delete(movieCache);
                    cli.DownloadFile(String.Format(searchUrl, movie.title), movieCache);
                }
                xml.Load(movieCache);

                XmlNodeList nodes = xml.GetElementsByTagName("movie");
                foreach (XmlNode node in nodes) {
                    Int32 year = 0;
                    XmlNode release = node.SelectSingleNode("release");
                    if (release != null && release.InnerText.Length > 0) {
                        year = Int32.Parse(release.InnerText.Substring(0, 4));
                    }
                    else {
                        year = movie.year;
                    }
                    movieData md = null;

                    md = new movieData();
                    md.Year = year;
                    md.Name = node.SelectSingleNode("title").InnerText;
                    movies.Add(md);

                    if (node.SelectSingleNode("alternative_title").InnerText != string.Empty) {
                        md = new movieData();
                        md.Year = year;
                        md.Name = node.SelectSingleNode("alternative_title").InnerText;
                        movies.Add(md);
                    }
                }

                movieData selectedMovie = this.chooseMovie(movie, movies);
                setMovieTitle(ref movie, selectedMovie);
            }
        }
Esempio n. 3
0
        public override void getMovieData(ref Movie movie)
        {
            String data = loadMovieData(ref movie);

            if (data == null) return;

            String pat = "<a href=\"/title/tt([0-9]*)/\">([^<]*)</a>[^<]+<span class=\"year_type\">([^<]+)</span>";
            Regex reg = new Regex(pat);
            MatchCollection mcol = null;
            mcol = reg.Matches(data);
            List<movieData> movieNames = new List<movieData>();
            if (mcol.Count > 0) {
                foreach (Match m in mcol) {
                    movieNames.Add(parseMovie(m.Groups[2].Captures[0].Value, m.Groups[3].Captures[0].Value));
                }
            }

            movieData selectedMovie = this.chooseMovie(movie, movieNames);
            setMovieTitle(ref movie, selectedMovie);
        }
Esempio n. 4
0
        private String loadMovieData(ref Movie movie)
        {
            String movieName = movie.title;
            if (movie.year > 0) {
                movieName += " (" + movie.year.ToString() + ")";
            }
            movieName = movieName.Replace(" &", "");
            movieName = movieName.Replace(" And", "");
            movieName = movieName.Replace(" and", "");
            movieCache = String.Format(baseCache, movie.title, movie.year);
            String data = null;

            if (!File.Exists(String.Format(movieCache, movieName))) {
                //Log.Add( i18n.t("oparse_search", movieName) );
                String movieEnc = movieName;
                movieEnc = movieEnc.Replace("-", "+");
                movieEnc = movieEnc.Replace(" ", "+");
                movieEnc = movieEnc.Replace(movie.year.ToString(), "");

                String url = "http://akas.imdb.com/search/title?";
                url += String.Format("release_date={0},", movie.year.ToString());
                url += String.Format("&title={0}", movieEnc);
                url += "&title_type=feature,tv_movie,tv_series,mini_series";
                WebClient cli = new WebClient();
                cli.Headers.Add(HttpRequestHeader.AcceptLanguage, "en-US");
                data = cli.DownloadString(url);
                StreamWriter swr = new StreamWriter(movieCache, false);
                swr.Write(data);
                swr.Close();
            }

            if (File.Exists(String.Format(movieCache, movieName))) {
                StreamReader sreader = new StreamReader(movieCache, System.Text.Encoding.Default, true);
                data = sreader.ReadToEnd();
                sreader.Close();
            }
            return data;
        }
Esempio n. 5
0
 protected virtual void OnListMovie(Movie m)
 {
     ListMovieHandler handler = ListMovie;
     if (handler != null) {
         handler(m);
     }
 }
Esempio n. 6
0
 internal void setMovieTitle(ref Movie movie, movieData movieData)
 {
     movie.title = movieData.Name;
     movie.year = movieData.Year;
 }
Esempio n. 7
0
 public abstract void getMovieData(ref Movie movie);
Esempio n. 8
0
        void movie_ListMovie(Movie m)
        {
            if (InvokeRequired) {
                Invoke(new ListMovieHandler(movie_ListMovie), m);
                return;
            }
            ListViewItem node = new ListViewItem(m.title);
            node.SubItems.Add(m.year.ToString());
            FileInfo fi = new FileInfo(m.filename);
            node.SubItems.Add(fi.Name);
            node.SubItems.Add(m.modifiedName());
            node.Tag = m;

            scanMovieList.Items.Add(node);
        }
Esempio n. 9
0
 public void setMovieData(Movie m)
 {
     labelMovie.Text = String.Format("{0} ({1})", m.title, m.year);
     FileInfo fi = new FileInfo(m.filename);
     labelFile.Text = fi.Name;
 }
Esempio n. 10
0
        public static Movie parseFile(String file)
        {
            Movie movie = new Movie(file);
            FileInfo fi = new FileInfo(file);
            movie.baseDir = fi.DirectoryName;
            Regex reg = null;
            Match m = null;
            MatchCollection mcol = null;

            try {
                String name = file;
                if (name.Contains("Heavy")) {
                    name = fi.FullName;
                }
                name = name.Remove(0, movie.baseDir.Length);
                if (name.IndexOf(@"\") > 0) {
                    name = name.Substring(0, name.IndexOf(@"\"));
                }

                String[] getDisk = { "cd([0-9]+)", "cd ([0-9]+)", "part ([0-9]+)", "part([0-9]+)", "disk([0-9]+)" };
                foreach (String pat in getDisk) {
                    reg = new Regex(pat, RegexOptions.IgnoreCase);
                    m = null;
                    m = reg.Match(name);
                    if (m.Success) {
                        movie.disk = Int32.Parse(m.Groups[1].Captures[0].Value);
                        name = name.Replace(m.Groups[0].Captures[0].Value, "");
                        break;
                    }
                }

                if (Directory.Exists(file)) {
                    name = eregi_replace("-([a-zA-Z0-9!]*)", "", name);
                }
                else if (File.Exists(file)) {
                    FileInfo fname = new FileInfo(name);
                    name = eregi_replace("-([a-zA-Z0-9!]*)" + fname.Extension, "", name);
                    if (fname.Extension.Length > 0) {
                        name = name.Replace(fname.Extension, "");
                    }
                }

                reg = new Regex("([0-9]{4})");
                mcol = null;
                mcol = reg.Matches(name);
                if (mcol.Count > 0) {
                    m = mcol[mcol.Count - 1];
                    movie.year = Int32.Parse(m.Groups[1].Captures[0].Value);
                    name = name.Remove(name.LastIndexOf(movie.year.ToString()));

                    // Don't use 1080 from 1080p for the year.
                    if (movie.year == 1080) {
                        movie.year = 0;
                        if (mcol.Count > 1) {
                            m = mcol[mcol.Count - 2];
                            movie.year = Int32.Parse(m.Groups[1].Captures[0].Value);
                            name = name.Remove(name.LastIndexOf(movie.year.ToString()));
                        }
                    }
                }

                if (name.IndexOf("[") > 0) name = name.Substring(0, name.IndexOf("["));
                if (name.IndexOf("[") > 0) name = name.Substring(0, name.IndexOf("["));
                if (name.IndexOf("(") > 0) name = name.Substring(0, name.IndexOf("("));
                if (name.IndexOf(")") > 0) name = name.Substring(0, name.IndexOf(")"));

                name = name.Replace("[", " ");
                name = name.Replace("]", " ");
                name = name.Replace("(", " ");
                name = name.Replace(")", " ");

                reg = new Regex("([0-9]{1})\\.([0-9]{1})");
                m = null;
                m = reg.Match(name);
                if (m.Success) {
                    name = name.Replace(m.Groups[0].Captures[0].Value,
                                         m.Groups[1].Captures[0].Value + "|" + m.Groups[2].Captures[0].Value);
                }

                //name = name.Replace(".", " ");
                name = eregi_replace("([a-zA-Z0-9]{1})([.]{1})([a-zA-Z0-9]{2})", "\\1 \\3", name);
                name = eregi_replace("([a-zA-Z0-9]{2})([.]{1})([a-zA-Z0-9]{1})", "\\1 \\3", name);
                name = name.Replace("|", ".");
                //name = name.Replace(",", " ");
                name = name.Replace("_", " ");
                name = name.Replace("- ", " ");

                int wordstart = name.Length;
                foreach (String word in words) {
                    int wpos = name.ToLower().IndexOf(word.ToLower());
                    if (wpos != -1 && wpos < wordstart) {
                        wordstart = wpos;
                    }
                }
                name = name.Substring(0, wordstart);

                String getLan = name.ToLower();
                if (
                    getLan.IndexOf("german") > 0 ||
                    getLan.IndexOf("deutsch") > 0
                    ) {
                    movie.language = "german";
                }

                int start = -1;
                int end = -1;
                while (name.IndexOf("[") > 0) {
                    start = name.IndexOf("[");
                    end = name.IndexOf("]", start);
                    if (start > 0 && end > start) {
                        name = name.Remove(start, end - start);
                    }
                }
                name = eregi_replace(@"\(([^)]*)\)", " ", name);
                name = eregi_replace("(cd)([0-9]+)", " ", name);
                name = eregi_replace("(part)([0-9]+)", " ", name);
                //name = eregi_replace("([0-9]{4})", " ", name);
                name = eregi_replace("([0-9]{1,})of([0-9]{1,})", " ", name);
                name = eregi_replace("www.([a-zA-Z0-9]+).([a-zA-Z]{2,3})", " ", name);

                /*
                for (int i=name.Length-2; i>0; i--)
                {
                    if (Char.IsLower(name[i]) && Char.IsUpper(name[i+1]))
                    {
                        name = name.Insert(i+1, " ");
                        continue;
                    }
                }
                */

                while (name.IndexOf("  ") > 0) {
                    name = name.Replace("  ", " ");
                }
                name = name.Trim();
                movie.title = name;

                // find title using online parser
                OnlineParserBase parser = null;
                String selectedParser = Settings.GetValueAsString(SettingKeys.MoviesParser);
                if (selectedParser == OnlineParserIMDB.parserName) {
                    parser = new OnlineParserIMDB();
                }
                else if (selectedParser == OnlineParserTMDB.parserName) {
                    parser = new OnlineParserTMDB();
                }
                else {
                    parser = new OnlineParserIMDB();
                }
                parser.getMovieData(ref movie);
            }
            catch (Exception E) {
                Log.Error("Error Parsing file" + movie.filename, E);
            }
            return movie;
        }