private void ParseAnnotated(DirectoryInfo dir) { if (ScoreRegex.IsMatch(dir.Name)) { Match mYear; if (!YearRegex.TryGetMatch(dir.Name, out mYear)) { Error($"No year match found for {dir.Name}"); return; } Year = mYear.Groups[1].Value; // Year = MatchInt(YearRegex, true); Match mTime; if (!TimeRegex.TryGetMatch(dir.Name, out mTime)) { Error($"No year match found for {dir.Name}"); return; } RunTime = mTime.Value; // RunTime = TimeRegex.Match(Name).Value; ParseRatings(); Regex spaceReg = new Regex(@"\s+"); string tmpTitle = Name.ReplaceWithString(Year).ReplaceWithString(RunTime); tmpTitle = tmpTitle.ReplaceWithString(OtherRegex.Match(tmpTitle).Value); Title = spaceReg.ReplaceWithString(tmpTitle, " "); return; } ParseStd(dir); GetMetaWithoutScore(dir); }
private void ParseStd(DirectoryInfo dir) { var match = AnnotationRegex.Match(dir.Name); var groups = match.Groups; Title = groups["title"].Value; Match mYear; if (!YearRegex.TryGetMatch(dir.Name, out mYear)) { Error($"No year match found for {dir.Name}"); return; } Year = mYear.Groups[1].Value;//groups["year"].Value; RunTime = match.Groups["time"].Value; ParseRatings(); }
public static async Task <List <MediaFileInfo> > Create(string path, bool useParentFolderName, MediaType mediaType) { List <MediaFileInfo> mediaFileInfoList = new List <MediaFileInfo>(); await Task.Run(() => { DirectoryInfo directoryInfo = new DirectoryInfo(path); FileInfo[] files = directoryInfo.GetFiles("*.*", SearchOption.AllDirectories); string[] extensions = mediaType == MediaType.Person ? FileHelper.ImageFiles : FileHelper.VideoFiles; files = files.Where(x => extensions.Contains(x.Extension.ToUpperInvariant())).ToArray(); for (int i = 0; i < files.Length; i++) { FileInfo file = files[i]; string fileName = Path.GetFileNameWithoutExtension(file.FullName); MediaFileInfo mediaFileInfo = ViewModelSource.Create <MediaFileInfo>(); mediaFileInfo.FileName = fileName; mediaFileInfo.FilePath = file.FullName; mediaFileInfo.FolderName = file.Directory.Name; mediaFileInfo.FolderPath = file.Directory.FullName; mediaFileInfo.MediaItemName = useParentFolderName ? mediaFileInfo.FolderName : mediaFileInfo.FileName; List <Match> matchList = new List <Match> { YearRegex.Match(mediaFileInfo.MediaItemName), DiscRegex.Match(mediaFileInfo.MediaItemName), SeasonRegex.Match(mediaFileInfo.MediaItemName), EpisodeRegex.Match(mediaFileInfo.MediaItemName), SeasonEpisodeRegex.Match(mediaFileInfo.MediaItemName), LabelRegex.Match(mediaFileInfo.MediaItemName), SourceRegex.Match(mediaFileInfo.MediaItemName), WholeWordRegex.Match(mediaFileInfo.MediaItemName), ResolutionRegex.Match(mediaFileInfo.MediaItemName) }; matchList.Sort((x, y) => x.Index.CompareTo(y.Index)); foreach (Match match in matchList) { if (match.Index > 3) { mediaFileInfo.MediaItemName = mediaFileInfo.MediaItemName.Remove(match.Index); break; } } mediaFileInfo.MediaItemName = Regex.Replace(mediaFileInfo.MediaItemName, @"[\W_]", " "); mediaFileInfo.MediaItemName = Regex.Replace(mediaFileInfo.MediaItemName, @"\s+", " "); mediaFileInfo.MediaItemName = mediaFileInfo.MediaItemName.Trim(); if (mediaFileInfoList.FirstOrDefault(x => x.MediaItemName == mediaFileInfo.MediaItemName) == null) { mediaFileInfoList.Add(mediaFileInfo); } mediaFileInfo.PersonalInfo = new PersonalInfo(); mediaFileInfo.PersonalInfo.LocalPath = mediaFileInfo.FolderPath; } }); return(mediaFileInfoList); }