Exemplo n.º 1
0
        internal async void  GetTvShowData(string[] fileList, int tvDbId)
        {
            if (tvDbId == -1)
            {
                string tvShowName = null;
                if (fileList.Length > 0)
                {
                    tvShowName = GetTvShowFromFilePath(fileList.First());
                    tvShows shows = await GetTvShowsByNameAsync(tvShowName);

                    foreach (string filePath in fileList)
                    {
                        showEpisode ep = GetEpisodeInfoFromFile(filePath);
                        shows[0].AddEpisode(ep);
                    }
                }
                if (tvShowName != null)
                {
                    TvShows = await GetTvShowsByNameAsync(tvShowName);

                    actualTvDbID = TvShows[0].tvdbID;
                }
            }
            else
            {
                actualTvDbID = tvDbId;
                TvShows      = await GetTvShowsByTvDbIdAsync(tvDbId);
            }
            GetEpisodes();
        }
Exemplo n.º 2
0
        private showEpisode episodeImprove(showEpisode ep, bool prefix) //Take Care that Episode Information is Always in Upper and 2 digit
        {
            string regex       = @"(?i:S)\d*(?i:E)\d*";
            string season      = "";
            string episode     = "";
            string episodename = "";
            string episodepart = Regex.Match(ep.oldFileName, regex).ToString(); //Extract Episode Part from Filename

            episodename = ep.episodeName.Replace(episodepart, "");              //Remove Episode Part from Filename
            if (Regex.IsMatch(episodepart, regex) == true)                      // && episodepart.Length == 6)
            {
                episodepart = episodepart.ToUpper();                            //Bring characters to upper
                string[] seasonepisode = episodepart.Split('E');                //Split Season Part from Episode
                season       = seasonepisode[0].Replace("S", "");               //Only give Season number
                ep.seasonNr  = Convert.ToInt32(season);
                episode      = seasonepisode[1];                                //Only give Episode number
                ep.episodeNr = Convert.ToInt32(episode);
                if (season.Length < 2)                                          //Season is only 1 digit
                {
                    season = "0" + season;                                      //Add 0 before season number
                }
                if (episode.Length < 2)                                         //Episode is only 1 digit
                {
                    episode = "0" + episode;                                    //Add 0 before episode number
                }
                if (prefix == true)
                {
                    ep.episodeNumbering = "S" + season + "E" + episode;
                    ep.newFilename      = "S" + season + "E" + episode + episodename; //Bulid and return full Episode Information String
                }
                else
                {
                    ep.episodeNumbering = "S" + season + "E" + episode;
                }
            }
            else
            {
                episodepart         = episodepart.ToUpper();      //Bring characters to upper
                ep.episodeNumbering = episodepart;
                string[] seasonepisode = episodepart.Split('E');  //Split Season Part from Episode
                season       = seasonepisode[0].Replace("S", ""); //Only give Season number
                ep.seasonNr  = Convert.ToInt32(season);
                episode      = seasonepisode[1];                  //Only give Episode number
                ep.episodeNr = Convert.ToInt32(episode);

                if (prefix == true)
                {
                    ep.episodeName = episodepart.ToUpper() + episodename; //Take care, "S" and "E" are Upper Case
                }
                else
                {
                    ep.episodeName = episodepart.ToUpper();
                }
            }
            return(ep);
        }
Exemplo n.º 3
0
        private showEpisode GetEpisodeInfoFromFile(string filePath)
        {
            showEpisode ep = new showEpisode(filePath);

            string strRegex  = @"(?i:S)\d{1,2}(?i:E)\d{0,1}\w+.*";
            string strRegex1 = @"(?i:)\d{1,2}x(?i:)\d{0,1}\w+";
            string strRegex2 = @"(?i:)\d{1,2}(?i:E)\d{0,1}\w+";

            if (Regex.IsMatch(filePath, strRegex))                                     //Check if s0(0)e0(0) is in Filename
            {
                ep.episodeName = Convert.ToString(Regex.Match(ep.filePath, strRegex)); //Cut Part before matching string
                ep             = episodeImprove(ep, true);                             //Send to Function to improve Episode Information
                return(ep);                                                            //Return Improved and Cutted Filename
            }
            else if (Regex.IsMatch(ep.oldFileName.ToLower(), strRegex1))               //Check for Schema (S)SxEE e.g. 01x01 or 1x01
            {
                string season  = "";
                string episode = "";
                Regex  regex   = new Regex(strRegex1);
                Match  match   = regex.Match(ep.oldFileName);
                var    epinfo  = ExtractEpisodeInfosFromString(match.Value.ToLower().Replace("x", ""));
                season  = epinfo.Item1;
                episode = epinfo.Item2;
                if (season.Length > 0 && episode.Length > 0)
                {
                    ep.seasonNr         = Convert.ToInt32(season);
                    ep.episodeNr        = Convert.ToInt32(episode);
                    ep.episodeNumbering = GetNiceEpisodeInfo(season, episode);
                    return(ep);
                }
            }
            else if (Regex.IsMatch(ep.oldFileName.ToLower(), strRegex2)) //Check for Schema (S)SeEE e.g. 01e01 or 1e01
            {
                string season  = "";
                string episode = "";
                Regex  regex   = new Regex(strRegex2);
                Match  match   = regex.Match(ep.oldFileName);
                var    epinfo  = ExtractEpisodeInfosFromString(match.Value.ToLower().Replace("x", ""));
                season  = epinfo.Item1;
                episode = epinfo.Item2;
                if (season.Length > 0 && episode.Length > 0)
                {
                    ep.seasonNr         = Convert.ToInt32(season);
                    ep.episodeNr        = Convert.ToInt32(episode);
                    ep.episodeNumbering = GetNiceEpisodeInfo(season, episode);
                    return(ep);
                }
            }
            else //We have to guess....
            {
                string[] filechunks = ep.oldFileName.Split('-');

                string season  = "";
                string episode = "";

                foreach (string part in filechunks)
                {
                    part.Replace(" ", "");
                }
                for (int i = 0; i < filechunks.Length; i++)
                {
                    if (helper.IsNumeric(filechunks[i]) == true) //Season and Episode is only numerically
                    {
                        string suspect = filechunks[i];
                        var    epinfo  = ExtractEpisodeInfosFromString(suspect);
                        season  = epinfo.Item1;
                        episode = epinfo.Item2;

                        if (season.Length > 0 && episode.Length > 0)
                        {
                            ep.seasonNr         = Convert.ToInt32(season);
                            ep.episodeNr        = Convert.ToInt32(episode);
                            ep.episodeNumbering = GetNiceEpisodeInfo(season, episode);
                        }
                    }
                }
            }
            return(ep); // Nothing to cut...send back received filename
        }