/// <summary> /// Extract Season/EpNum Format from FilePath (or string) and Return S00E00 Format /// </summary> /// <param name="FilePath">FilePath or String Containing Season/EpNum Info to Parse</param> /// <param name="RenameFile">Option to Replace Unformatted Season/EpNum with Standard S00E00 Naming Convention</param> /// <returns></returns> public string SeasonEpNums(string FilePath, bool RenameFile = false) { _AHK ahk = new _AHK(); bool msgDisp = false; string FileNameNoExt = ""; bool FileFound = false; string dir = ""; string ext = ""; if (RenameFile) { if (File.Exists(FilePath)) { FileNameNoExt = ahk.FileNameNoExt(FilePath); ext = ahk.FileExt(FilePath); dir = ahk.FileDir(FilePath); FileFound = true; } } else { if (FilePath.Contains(":")) { FilePath = FilePath.Replace(":", "-"); FileNameNoExt = ahk.FileNameNoExt(FilePath); } else { FileNameNoExt = FilePath; } } FileNameNoExt = FileNameNoExt.Replace("x264", ""); FileNameNoExt = FileNameNoExt.Replace("x265", ""); FileNameNoExt = FileNameNoExt.Replace("720p", ""); FileNameNoExt = FileNameNoExt.Replace("1080p", ""); FileNameNoExt = FileNameNoExt.ToUpper(); // nothing to do, name already matches format Regex regex = new Regex(@"S\d{2}E\d{2}"); // hawaii.five-0.2010.S08E01 Match match = regex.Match(FileNameNoExt); if (match.Success) { //if (msgDisp) { ahk.MsgBox(match.Value); } return(match.Value); } // find 3 digit season/ep format, rename file to S00E00 Format regex = new Regex(@"(\.|_)\d{3}(\.|_)"); // "hawaii.five-0.2010.805.hdtv-lol" match = regex.Match(FileNameNoExt); if (match.Success) { string MatchText = match.Value; string seasonEp = match.Value.Replace(".", ""); seasonEp = match.Value.Replace("_", ""); string season = ahk.FirstCharacters(seasonEp, 1); string ep = ahk.LastCharacters(seasonEp, 2); seasonEp = "S0" + season + "E" + ep; if (FileFound && RenameFile) { FileNameNoExt = FileNameNoExt.Replace(MatchText, "." + seasonEp + "."); string newName = dir + "\\" + FileNameNoExt + ext; bool renamed = ahk.FileRename(FilePath, newName); if (msgDisp) { ahk.MsgBox("Renamed = " + renamed.ToString() + "\n\n" + FilePath + "\n\n" + newName); } } return(seasonEp); } // find 3 digit season/ep format, rename file to S00E00 Format regex = new Regex(@"\.\d{1,2}X\d{2}(\.|_)"); // .4x23. OR .4x23_ match = regex.Match(FileNameNoExt); if (match.Success) { string MatchText = match.Value; string seasonEp = match.Value.Replace(".", ""); seasonEp = match.Value.Replace("_", ""); string season = ahk.FirstCharacters(seasonEp, 1); string ep = ahk.LastCharacters(seasonEp, 2); seasonEp = "S0" + season + "E" + ep; if (FileFound && RenameFile) { FileNameNoExt = FileNameNoExt.Replace(MatchText, "." + seasonEp + "."); string newName = dir + "\\" + FileNameNoExt + ext; bool renamed = false; renamed = ahk.FileRename(FilePath, newName); if (msgDisp) { ahk.MsgBox("Renamed = " + renamed.ToString() + "\n\n" + FilePath + "\n\n" + newName); } } return(seasonEp); } regex = new Regex(@"\.\d{1-2}X\d{1-2}\."); // 7th_heaven.6x02.teased.dvdrip_xvid-fov match = regex.Match(FileNameNoExt); if (match.Success) { string seasonEp = match.Value.Replace(".", ""); string season = ahk.FirstCharacters(seasonEp, 1); string ep = ahk.LastCharacters(seasonEp, 2); seasonEp = "S0" + season + "E" + ep.AddLeadingZeros(2); if (msgDisp) { ahk.MsgBox(seasonEp); } return(seasonEp); } regex = new Regex(@"\d{4}.\d{2}.d{2}"); // conan.2018.01.18.gerard.butler.720p.web.x264 - tbs match = regex.Match(FileNameNoExt); if (match.Success) { if (msgDisp) { ahk.MsgBox(match.Value); } //string seasonEp = match.Value.Replace(".", ""); string seasonEp = match.Value; return(seasonEp); } regex = new Regex(@"\d{4}\s\d{2}\s\d{2}"); // conan 2018 01 18 gerard butler 720p web x264 - tbs match = regex.Match(FileNameNoExt); if (match.Success) { if (msgDisp) { ahk.MsgBox(match.Value); } return(match.Value); } regex = new Regex(@"\d{4}"); // hap.and.leonard.0304-yestv match = regex.Match(FileNameNoExt); if (match.Success) { string seasonEp = match.Value.Replace(".", ""); string season = ahk.FirstCharacters(seasonEp, 2); string ep = ahk.LastCharacters(seasonEp, 2); seasonEp = "S" + season + "E" + ep.AddLeadingZeros(2); if (msgDisp) { ahk.MsgBox(seasonEp); } return(seasonEp); } return(""); }