Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
        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);
        }