예제 #1
0
        static void Main(string[] args)
        {
            if (args.Length == 0)
            {
                Console.WriteLine("请输入要转换的 srt 文件.");
                return;
            }

            var fileName = args[0];

            if (!File.Exists(fileName))
            {
                Console.WriteLine("文件不存在");
                return;
            }

            var vtt = VTTHelper.GetVTTFromFile(fileName);

            var bilibili = new BilibiliSrtFile();

            bilibili.font_size        = 0.4;
            bilibili.font_color       = "#FFFFFF";
            bilibili.background_alpha = 0.5;
            bilibili.background_color = "#9C27B0";
            bilibili.Stroke           = "none";
            bilibili.body             = new List <BilibiliSrtFile.Battuta>();

            foreach (var item in vtt.Lines)
            {
                bilibili.body.Add(new BilibiliSrtFile.Battuta
                {
                    from     = item.FromSec,
                    to       = item.ToSec,
                    content  = item.Text,
                    location = 2,
                });
            }
            var fi            = new FileInfo(fileName);
            var ex            = fi.Extension;
            var writeFileName = fileName.Replace(ex, ".bcc");

            var json  = JsonConvert.SerializeObject(bilibili, Formatting.Indented);
            var bytes = Encoding.UTF8.GetBytes(json);

            File.WriteAllBytes(writeFileName, bytes);
        }
예제 #2
0
        /// <summary>
        /// youtube字幕重建功能
        /// 会按照行文的段落,重新对字幕做重组
        /// </summary>
        /// <param name="args"></param>
        private static void Main(string[] args)
        {
            var path = @"W:\zb\t16";
            var file = @"So you want to be a Code Reviewer #3 - Code Review-5D6IAKebZSQ.en.vtt";

            // DoFile(Path.Combine(path, file));
            //foreach (var fileName in Directory.GetFiles(path, "*.vvt"))
            //{
            //}

            var fileName = Path.Combine(path, file);

            if (args.Length > 0)
            {
                fileName = args[0];
            }

            Vtt vtt = VTTHelper.GetVTTFromFile(fileName);

            // 将 vtt 合并到一个厂的列表里,再逐个拆开

            vtt = VvtRebuild.Rebuild(vtt);

            int           id     = 1;
            StringBuilder writer = new StringBuilder();

            foreach (var item in vtt.Lines)
            {
                var srtItem = new Dogvane.Srt.Battuta()
                {
                    Id   = id++,
                    From = item.From,
                    Text = item.Text,
                    To   = item.To,
                };
                writer.AppendLine(srtItem.GetData());
                writer.AppendLine();
            }

            Console.WriteLine($"id: {id}");

            var newFileName = fileName.Replace(".vvt", "") + ".srt";

            File.WriteAllText(newFileName, writer.ToString(), Encoding.UTF8);
        }
예제 #3
0
        /// <summary>
        /// 上传一个vtt文件
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="fileName"></param>
        /// <param name="context"></param>
        /// <param name="ismerge">是否合并弹幕</param>
        /// <returns></returns>
        public SrtFile UploadVttFile(int userId, string fileName, byte[] context, bool ismerge = true)
        {
            var saveFile = Path.Combine("upfiles/", userId + "_" + fileName);

            File.WriteAllBytes(saveFile, context);

            // 加载vtt文件
            var vtt = VTTHelper.GetVTTFromFile(saveFile);

            var jsonObj = new SrtJsonFile();

            if (ismerge)
            {
                vtt = VvtRebuild.Rebuild(vtt);
            }

            jsonObj.Battutas = ConverVttToSubtitles(vtt.Lines);
            jsonObj.FileName = fileName;
            jsonObj.Version  = 1;

            var jsonSaveFile = Path.Combine("jsonfiles/", userId + "_" + fileName + ".json");

            File.WriteAllText(jsonSaveFile, JsonConvert.SerializeObject(jsonObj, Formatting.Indented));

            var srtItem = new SrtFile()
            {
                UserId              = userId,
                LastUpdate          = DateTime.Now,
                UploadTime          = DateTime.Now,
                SourceLocalFileName = saveFile,
                SrtFileName         = fileName,
                JsonSrtFileName     = jsonSaveFile
            };

            using (var db = DbSet.GetDb())
            {
                db.Insert(srtItem);
            }

            return(srtItem);
        }
예제 #4
0
        static void Main(string[] args)
        {
            if (args.Length == 0)
            {
                Console.WriteLine("请输入要转换的 srt 文件.");
                return;
            }

            var fileName = args[0];

            if (!File.Exists(fileName))
            {
                Console.WriteLine("文件不存在");
                return;
            }

            var vtt = VTTHelper.GetVTTFromFile(fileName);

            int           id     = 1;
            StringBuilder writer = new StringBuilder();

            foreach (var item in vtt.Lines)
            {
                var srtItem = new Dogvane.Srt.Battuta()
                {
                    Id   = id++,
                    From = item.From,
                    Text = item.Text,
                    To   = item.To,
                };
                writer.AppendLine(srtItem.GetData());
                writer.AppendLine();
            }

            var newFileName = fileName.Replace(".vvt", "") + ".srt";

            File.WriteAllText(newFileName, writer.ToString(), Encoding.UTF8);
        }