示例#1
0
        /// <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("");
        }