Esempio n. 1
0
        public SubtitleInfo ParseFile(string path)
        {
            if (string.IsNullOrEmpty(path))
            {
                throw new ArgumentNullException(nameof(path));
            }

            var extension = Path.GetExtension(path);

            if (!_options.SubtitleFileExtensions.Contains(extension, StringComparer.OrdinalIgnoreCase))
            {
                return(null);
            }

            var flags = GetFlags(path);
            var info  = new SubtitleInfo
            {
                Path      = path,
                IsDefault = _options.SubtitleDefaultFlags.Any(i => flags.Contains(i, StringComparer.OrdinalIgnoreCase)),
                IsForced  = _options.SubtitleForcedFlags.Any(i => flags.Contains(i, StringComparer.OrdinalIgnoreCase))
            };

            var parts = flags.Where(i => !_options.SubtitleDefaultFlags.Contains(i, StringComparer.OrdinalIgnoreCase) && !_options.SubtitleForcedFlags.Contains(i, StringComparer.OrdinalIgnoreCase))
                        .ToList();

            // Should have a name, language and file extension
            if (parts.Count >= 3)
            {
                info.Language = parts[^ 2];
Esempio n. 2
0
        /// <summary>
        /// Parse file to determine if is subtitle and <see cref="SubtitleInfo"/>.
        /// </summary>
        /// <param name="path">Path to file.</param>
        /// <returns>Returns null or <see cref="SubtitleInfo"/> object if parsing is successful.</returns>
        public SubtitleInfo?ParseFile(string path)
        {
            if (path.Length == 0)
            {
                return(null);
            }

            var extension = Path.GetExtension(path);

            if (!_options.SubtitleFileExtensions.Contains(extension, StringComparer.OrdinalIgnoreCase))
            {
                return(null);
            }

            var flags = GetFlags(path);
            var info  = new SubtitleInfo(
                path,
                _options.SubtitleDefaultFlags.Any(i => flags.Contains(i, StringComparer.OrdinalIgnoreCase)),
                _options.SubtitleForcedFlags.Any(i => flags.Contains(i, StringComparer.OrdinalIgnoreCase)));

            var parts = flags.Where(i => !_options.SubtitleDefaultFlags.Contains(i, StringComparer.OrdinalIgnoreCase) &&
                                    !_options.SubtitleForcedFlags.Contains(i, StringComparer.OrdinalIgnoreCase))
                        .ToList();

            // Should have a name, language and file extension
            if (parts.Count >= 3)
            {
                info.Language = parts[^ 2];