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; }
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); } }
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); }
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; }
protected virtual void OnListMovie(Movie m) { ListMovieHandler handler = ListMovie; if (handler != null) { handler(m); } }
internal void setMovieTitle(ref Movie movie, movieData movieData) { movie.title = movieData.Name; movie.year = movieData.Year; }
public abstract void getMovieData(ref Movie movie);
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); }
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; }
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; }