找回密码
 立即注册
查看: 3452|回复: 18

请问下ass特效字幕开始与结束时间是反的怎么快速修正

6

主题

20

回帖

80

VC币

中级会员

Rank: 3Rank: 3

积分
9222
艾伦沃克1234 发表于 2023-7-26 23:06:04 | 显示全部楼层 |阅读模式
在网上下了一个ass字幕,发现在potplayer里播放有部分的特效字幕不显示,打开字幕文件仔细一开原来是,那段的开始时间超过了结束时间,也就是前后时间相反了,网上搜也没搜到办法,就自己一条条改了一会,倒是能显示出来了,但特效太多了,鼠标点死人,眼睛看的发酸
想问问各位字幕大佬,这种情况有没有快捷的调整方式。跪谢




回复

使用道具 举报

6

主题

20

回帖

80

VC币

中级会员

Rank: 3Rank: 3

积分
9222
艾伦沃克1234  楼主| 发表于 2023-7-26 23:46:16 | 显示全部楼层
顺便请教下,怎么会出现这种情况的,我的水平在小白与大佬之间,还有很多不懂
回复

使用道具 举报

24

主题

772

回帖

3104

VC币

星辰大海

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
648753
sommio 发表于 2023-7-27 05:34:18 | 显示全部楼层
回复

使用道具 举报

2

主题

28

回帖

1001

VC币

荣誉会员

Rank: 14Rank: 14Rank: 14Rank: 14

积分
139487
fuxin052 发表于 2023-7-27 09:05:31 | 显示全部楼层
如果只是反了, 你需要把时间交换下, 用脚本做这个重复的事挺好的

  1. import os
  2. import sys
  3. import time

  4. def run(p):
  5.     bn = os.path.basename(p)
  6.     name, ext=os.path.splitext(bn)
  7.     if not (ext.lower() in ['.ass',]):
  8.         return
  9.     for coding in ["utf-8", "gbk", "big5", "gb2312", "gb18030", "cp1252", "utf-16", "utf-32"]:
  10.         try:
  11.             with open(p, 'r', encoding=coding) as file:
  12.                 lines = file.readlines()
  13.             break
  14.         except (UnicodeDecodeError, UnicodeError):
  15.             print(2)
  16.             continue
  17.         except FileNotFoundError:
  18.             print(3)
  19.             return
  20.     new_lines = []
  21.     for idx, line in enumerate(lines):
  22.         if line.startswith("Dialogue:"):
  23.             fields = line.split(",", 3)
  24.             start_time = fields[1]
  25.             end_time = fields[2]
  26.             if start_time > end_time:
  27.                 fields[1] = end_time
  28.                 fields[2] = start_time
  29.                 new_line = ','.join(fields)
  30.                 new_lines.append(new_line)
  31.                 print(f"L{str(idx+1)} 时间相反 {line}", end="")
  32.             else:
  33.                 new_lines.append(line)
  34.         else:
  35.             new_lines.append(line)
  36.     new_name = os.path.join(os.path.dirname(p), name + '.' + str(int(time.time())) + ext)
  37.     with open(new_name, 'w', encoding="utf-8") as fw:
  38.         fw.writelines(new_lines)
  39.     return new_name

  40. if __name__ == '__main__':
  41.     if sys.argv[1]:
  42.         run(sys.argv[1])
  43.         os.system('pause')
复制代码

代码保存成1.py
命令行执行python c:\文件全路径\1.py c:\文件全路径\1.ass即可
如果没装python就装一个python3
回复

使用道具 举报

6

主题

20

回帖

80

VC币

中级会员

Rank: 3Rank: 3

积分
9222
艾伦沃克1234  楼主| 发表于 2023-7-27 09:58:02 | 显示全部楼层
sommio 发表于 2023-7-27 05:34
aegisub 用 shift 多选改时轴

谢谢回复,能稍微展开说下吗?多选平移时间的我只会,但它们的时间前后相反,间隔又有长有短,这多选怎么该
回复

使用道具 举报

6

主题

20

回帖

80

VC币

中级会员

Rank: 3Rank: 3

积分
9222
艾伦沃克1234  楼主| 发表于 2023-7-27 09:59:09 | 显示全部楼层
fuxin052 发表于 2023-7-27 09:05
如果只是反了, 你需要把时间交换下, 用脚本做这个重复的事挺好的

谢谢大佬,会编程就是好,这种重复枯燥的事就需要自动化编程,我试试
回复

使用道具 举报

9

主题

168

回帖

507

VC币

荣誉会员

Rank: 14Rank: 14Rank: 14Rank: 14

积分
119312
verdurewind 发表于 2023-7-27 10:19:12 | 显示全部楼层
我想趁机问问,有没有单独把时间轴抽出来的方法,就是只保留时间轴,把字幕都去掉
回复

使用道具 举报

6

主题

20

回帖

80

VC币

中级会员

Rank: 3Rank: 3

积分
9222
艾伦沃克1234  楼主| 发表于 2023-7-27 10:37:05 | 显示全部楼层
fuxin052 发表于 2023-7-27 09:05
如果只是反了, 你需要把时间交换下, 用脚本做这个重复的事挺好的

大佬,刚才试了下不行啊,是哪步错了呢


我是先用文档保存代码,然后改成1.py文件

然后路径也是按你给的来的,防止问题,文件名称还都用了阿拉伯数字
回复

使用道具 举报

6

主题

20

回帖

80

VC币

中级会员

Rank: 3Rank: 3

积分
9222
艾伦沃克1234  楼主| 发表于 2023-7-27 10:37:21 | 显示全部楼层
本帖最后由 艾伦沃克1234 于 2023-7-27 10:41 编辑

艾伦沃克1234 发表于 2023-7-27 10:37
大佬,刚才试了下不行啊,是哪步错了呢



SyntaxError: unexpected character after line continuation character
>>> C:\xyz\123\1.py C:\zcc\456\1.ass
  File "<stdin>", line 1
    C:\xyz\123\1.py C:\zcc\456\1.ass
       ^
SyntaxError: unexpected character after line continuation character
回复

使用道具 举报

6

主题

20

回帖

80

VC币

中级会员

Rank: 3Rank: 3

积分
9222
艾伦沃克1234  楼主| 发表于 2023-7-27 10:40:44 | 显示全部楼层
为什么上传不了图片呢

点评

新用户没权限上传可以丢外部链接  发表于 2023-7-27 10:43
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表