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