Example #1
0
        internal static void PrintYears(string directory, int level = 2, Action <string>?log = null)
        {
            log ??= TraceLog;
            EnumerateDirectories(directory, level)
            .ToArray()
            .ForEach(movie =>
            {
                XDocument metadata    = XDocument.Load(Directory.GetFiles(movie, XmlMetadataSearchPattern, SearchOption.TopDirectoryOnly).First());
                string movieDirectory = Path.GetFileName(movie);
                if (movieDirectory.StartsWith("0."))
                {
                    movieDirectory = movieDirectory.Substring("0.".Length);
                }

                VideoDirectoryInfo videoDirectoryInfo = new(movieDirectory);
                string directoryYear = videoDirectoryInfo.Year;
                string metadataYear  = metadata.Root?.Element("year")?.Value ?? throw new InvalidOperationException($"{metadata} has no year.");
                string videoName     = string.Empty;
                if (!(directoryYear == metadataYear &&
                      Directory.GetFiles(movie, PathHelper.AllSearchPattern, SearchOption.TopDirectoryOnly)
                      .Where(file => AllVideoExtensions.Any(extension => file.EndsWith(extension, StringComparison.InvariantCultureIgnoreCase)))
                      .All(video => (videoName = Path.GetFileName(video) ?? throw new InvalidOperationException($"{video} is invalid.")).Contains(directoryYear))))
                {
                    log($"Directory: {directoryYear}, Metadata {metadataYear}, Video: {videoName}, {movie}");
                }
            });
        }
Example #2
0
 static Globals()
 {
     AllUnprocessedVideoExtensions = new[] { ".AVI", ".MOV", ".MP4", ".3GP", ".3G2", ".MPG", ".MTS", ".WMV" };
     AllImageExtensions            = new[] { ".JPG", ".THM", ".PNG" };
     AllVideoExtensions            = AllUnprocessedVideoExtensions.Concat(new[] { ".M4V" }).ToArray();
     AllExtensionsToProcess        = AllVideoExtensions.Concat(AllImageExtensions).ToArray();
 }
Example #3
0
 internal static void PrintVideosWithErrors(string directory, bool isNoAudioAllowed = false, SearchOption searchOption = SearchOption.TopDirectoryOnly, Func <string, bool>?predicate = null, Action <string>?is720 = null, Action <string>?is1080 = null, Action <string>?log = null)
 {
     PrintVideosWithErrors(
         Directory
         .EnumerateFiles(directory, PathHelper.AllSearchPattern, searchOption)
         .Where(file => predicate?.Invoke(file) ?? AllVideoExtensions
                .Where(extension => !string.Equals(extension, ".iso", StringComparison.InvariantCultureIgnoreCase))
                .Any(extension => file.EndsWith(extension, StringComparison.InvariantCultureIgnoreCase))),
         isNoAudioAllowed,
         is720,
         is1080,
         log);
 }