示例#1
0
        public void Constructor_NullSubtitleParser_Throws()
        {
            ISubtitleParser nullSubtitleParser = null;

            Assert.Throws <ArgumentNullException>(
                () => new SubtitlesParser(nullSubtitleParser));
        }
        public SubtitlesParser(ISubtitleParser subtitleParser)
        {
            if (subtitleParser == null)
            {
                throw new ArgumentNullException(nameof(Subtitle));
            }

            this.subtitleParser = subtitleParser;
        }
示例#3
0
 public FileParser(
     ZipFileService zipFileProcessor,
     ISubtitleParser subtitleParser,
     LanguageIdentifier languageIdentifier,
     IFileReader fileReader)
 {
     _zipFileService     = zipFileProcessor;
     _subtitleParser     = subtitleParser;
     _languageIdentifier = languageIdentifier;
     _fileReader         = fileReader;
 }
示例#4
0
        static void Main(string[] args)
        {
            try
            {
                var options = new SubbedOptionParser(args);
                if (options.ActionVerb == Verbs.Help)
                {
                    options.WriteHelp();
                    return;
                }

                var                     parserFactory = new SubtitleParserFactory();
                ISubtitleParser         reader        = parserFactory.GetReaderFor(options.InputFile);
                IEnumerable <ISubtitle> subs          = reader.Read(options.InputFile);

                var subManager = new SubtitleManager(subs);

                switch (options.ActionVerb)
                {
                case Verbs.Extrapolate:
                    ISubtitle targetSub = subs.FirstOrDefault(options.SubtitleSelector);
                    subManager.Extrapolate(targetSub, options.TimeDiff);
                    break;

                case Verbs.StretchBy:
                    subManager.StretchBy(options.Factor);
                    break;

                case Verbs.TransposeBy:
                    subManager.TransposeBy(options.TimeDiff);
                    break;
                }

                subs = subManager.Subtitles;

                ISubtitleParser writer = parserFactory.GetWriterFor(options.OutputFile);
                writer.Write(subs, options.OutputFile);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
示例#5
0
        private CuesMap FillCuesMap(ISubtitleParser parser, Stream stream, string encoding)
        {
            if (string.IsNullOrEmpty(encoding))
            {
                encoding = parser.DefaultEncoding;
            }

            var cuesMap = new CuesMap();

            using (var reader = new StreamReader(stream, Encoding.GetEncoding(encoding)))
            {
                foreach (var cue in parser.Parse(reader))
                {
                    cuesMap.Put(cue);
                }
            }

            return(cuesMap);
        }
示例#6
0
        public static List <LineInfo> ParseSubtitle(Settings settings, string filename, Dictionary <String, String> properties)
        {
            string mimeType = UtilsCommon.GetMimetypeByFilename(filename);

            // find right parser
            ISubtitleParser parser = null;

            switch (mimeType)
            {
            case "text/x-ass":
            case "text/x-ssa":
                parser = new SubtitleParserASS();
                break;

            case "application/x-subrip":
                parser = new SubtitleParserSRT();
                break;

            case "video/x-matroska":
                return(ParseSubtitleInVideoFile(settings, filename, properties));

            case "":
                throw new Exception("File type/mime type could not be recognized for file \"" + filename + "\"!");

            default:
                throw new Exception("Unsupportet format (" + mimeType + ") for subtitle \"" + filename + "\"!");
            }

            // read encoding string from properties
            String encodingString = "utf-8";

            if (properties.ContainsKey("enc"))
            {
                encodingString = properties["enc"];
            }

            // read all lines
            using (var fileStream = new FileStream(filename, FileMode.Open)) {
                return(parser.parse(settings, fileStream, Encoding.GetEncoding(encodingString)));
            }
        }
示例#7
0
 public SrtCleaner(ISubtitleParser inner, ILogger <SrtCleaner> logger)
 {
     _inner  = inner;
     _logger = logger;
 }
示例#8
0
 private SubtitlesParser CreateParser(ISubtitleParser subtitleParser)
 {
     return(new SubtitlesParser(subtitleParser));
 }