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