找回密码
 立即注册
查看: 303|回复: 3

后知后觉:没想到chatgpt还能写aegi的Lua脚本,写得挺好的

  • TA的每日心情
    开心
    2017-1-12 20:16
  • 签到天数: 1 天

    [LV.1]初来乍到

    26

    主题

    97

    回帖

    97

    VC币

    至尊会员

    Rank: 16Rank: 16Rank: 16Rank: 16

    积分
    223783
    leonvent 发表于 2025-8-5 22:32:29 | 显示全部楼层 |阅读模式
    本帖最后由 leonvent 于 2025-8-6 08:49 编辑

    按照自己喜好改一点字幕,像删除双语字幕中的外语,给样式对应字幕行增加语句,或者删除什么的。
    例如想要一个选中样式,自动删除对应的字幕行什么的
    之前做这类事情扔给excel/记事本,用正则这一类的处理
    不过想想很多年前有看到这类的脚本自动化,跳个对话框更快,但又懒得去找了。
    找AI写一个,没想到还真能写

    1. script_name = "选择删除样式及字幕"
    2. script_description = "弹出对话框,选择你想删除的样式,然后自动删除这些样式和对应的字幕行"
    3. script_author = "ChatGPT"
    4. script_version = "1.3"

    5. include("karaskel.lua")

    6. function get_all_styles(subs)
    7.     local style_set = {}
    8.     for i = 1, #subs do
    9.         local line = subs[i]
    10.         if line.class == "style" then
    11.             table.insert(style_set, line.name)
    12.         end
    13.     end
    14.     return style_set
    15. end

    16. function build_dialog(style_names)
    17.     local dialog = {
    18.         {class = "label", label = "Select styles to delete (will also remove associated dialogue lines)", x = 0, y = 0, width = 2, height = 1}
    19.     }
    20.     for i, name in ipairs(style_names) do
    21.         table.insert(dialog, {
    22.             class = "checkbox",
    23.             name = name,
    24.             label = name,
    25.             value = false,
    26.             x = 0,
    27.             y = i,
    28.             width = 2,
    29.             height = 1
    30.         })
    31.     end
    32.     return dialog
    33. end

    34. function delete_selected_styles(subs, sel)
    35.     local all_styles = get_all_styles(subs)
    36.     if #all_styles == 0 then
    37.         aegisub.dialog.display({{class = "label", label = "No styles found.", x = 0, y = 0}}, {"OK"})
    38.         return
    39.     end

    40.     local dialog = build_dialog(all_styles)
    41.     local buttons, result = aegisub.dialog.display(dialog, {"Delete", "Cancel"})

    42.     if buttons ~= "Delete" then return end

    43.     local to_delete = {}
    44.     for _, name in ipairs(all_styles) do
    45.         if result[name] then
    46.             to_delete[name] = true
    47.         end
    48.     end

    49.     local i = #subs
    50.     while i > 0 do
    51.         local line = subs[i]
    52.         if line.class == "style" and to_delete[line.name] then
    53.             subs:delete(i)
    54.         elseif line.class == "dialogue" and to_delete[line.style] then
    55.             subs:delete(i)
    56.         end
    57.         i = i - 1
    58.     end
    59. end

    60. aegisub.register_macro("选择删除样式及字幕", "选择样式并删除样式及其字幕行", delete_selected_styles)
    复制代码



    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    1 小时前
  • 签到天数: 508 天

    [LV.9]以坛为家II

    18

    主题

    114

    回帖

    20

    VC币

    至尊会员

    Rank: 16Rank: 16Rank: 16Rank: 16

    积分
    169231
    op200 发表于 7 天前 | 显示全部楼层
    其实 Aegisub 自带根据样式选择所有行的功能(
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2017-1-12 20:16
  • 签到天数: 1 天

    [LV.1]初来乍到

    26

    主题

    97

    回帖

    97

    VC币

    至尊会员

    Rank: 16Rank: 16Rank: 16Rank: 16

    积分
    223783
    leonvent  楼主| 发表于 7 天前 | 显示全部楼层
    本帖最后由 leonvent 于 2025-8-6 08:45 编辑
    op200 发表于 2025-8-6 04:06
    其实 Aegisub 自带根据样式选择所有行的功能(

    我太懒了,剪贴板里重复按了几遍,正则又忘了想不起来,找AI回忆,但想想弄个多选框好像可以做更多复杂的事情,没想到AI能写lua
    回复

    使用道具 举报

    该用户从未签到

    7

    主题

    9

    回帖

    0

    VC币

    新手上路

    Rank: 1

    积分
    132
    insuaaaaa 发表于 5 天前 | 显示全部楼层
    可惜现阶段gemini和gpt都写不出卡拉ok模板 感觉aeg里面的写法ai死活都理解不了
    回复

    使用道具 举报

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

    本版积分规则

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