-- half_to_full_katakana.lua -- Convert half-width Katakana to full-width Katakana local function half_to_full_katakana(text) print("Debug: Converting half-width Katakana to full-width Katakana...") local result = "" local dakuten = false for char in text:gmatch(".") do local byte = string.byte(char) if byte == 0xFF9E then -- Dakuten marker dakuten = true print("Debug: Found dakuten marker") elseif byte >= 0xFF61 and byte <= 0xFF9F then -- Half-width Katakana if dakuten then -- Convert half-width Katakana with dakuten to full-width if byte == 0xFF8A then -- ハ result = result .. "\xEF\xBD\xA0" -- バ print("Debug: Converted ハ to バ") elseif byte == 0xFF77 then -- き result = result .. "\xEF\xBD\xAE" -- ギ print("Debug: Converted き to ギ") elseif byte == 0xFF78 then -- く result = result .. "\xEF\xBD\xB0" -- グ print("Debug: Converted く to グ") elseif byte == 0xFF7C then -- し result = result .. "\xEF\xBD\xB8" -- ジ print("Debug: Converted し to ジ") elseif byte == 0xFF7D then -- す result = result .. "\xEF\xBD\xBA" -- ズ print("Debug: Converted す to ズ") elseif byte == 0xFF81 then -- ち result = result .. "\xEF\xBD\xC6" -- チ print("Debug: Converted ち to チ") elseif byte == 0xFF82 then -- つ result = result .. "\xEF\xBD\xC5" -- ヅ print("Debug: Converted つ to ヅ") elseif byte == 0xFF8B then -- ふ result = result .. "\xEF\xBD\xD5" -- フ print("Debug: Converted ふ to フ") elseif byte == 0xFF8D then -- へ result = result .. "\xEF\xBD\xD8" -- ヘ print("Debug: Converted へ to ヘ") elseif byte == 0xFF8E then -- ほ result = result .. "\xEF\xBD\xDB" -- ホ print("Debug: Converted ほ to ホ") else result = result .. string.char(byte - 0xFF61 + 0x30A1) print("Debug: Converted half-width Katakana to full-width Katakana") end dakuten = false else result = result .. string.char(byte - 0xFF61 + 0x30A1) print("Debug: Converted half-width Katakana to full-width Katakana") end else result = result .. char print("Debug: Copied non-Katakana character") end end print("Debug: Conversion complete") return result end -- Load the subtitle file local sub_file = mp.get_property("sub-file") if sub_file and sub_file ~= "" then if not io.exists(sub_file) then print("Error: Subtitle file does not exist") return end local subtitle_file = io.open(sub_file, "r") if not subtitle_file then print("Error: Unable to open subtitle file") return end local subtitle_text = subtitle_file:read("*a") subtitle_file:close() -- Check if the subtitle text is empty if not subtitle_text or subtitle_text == "" then print("Error: Subtitle file is empty") return end -- Convert half-width Katakana to full-width Katakana local modified_text, err = pcall(half_to_full_katakana, subtitle_text) if not modified_text then print("Error: Conversion failed: " .. err) return end -- Set the modified subtitle text mp.set_property("sub-text", modified_text) print("Debug: Set modified subtitle text") else print("Error: Subtitle file not set") return end-- half_to_full_katakana.lua -- Convert half-width Katakana to full-width Katakana local function half_to_full_katakana(text) print("Debug: Converting half-width Katakana to full-width Katakana...") local result = "" local dakuten = false for char in text:gmatch(".") do local byte = string.byte(char) if byte == 0xFF9E then -- Dakuten marker dakuten = true print("Debug: Found dakuten marker") elseif byte >= 0xFF61 and byte <= 0xFF9F then -- Half-width Katakana if dakuten then -- Convert half-width Katakana with dakuten to full-width if byte == 0xFF8A then -- ハ result = result .. "\xEF\xBD\xA0" -- バ print("Debug: Converted ハ to バ") elseif byte == 0xFF77 then -- き result = result .. "\xEF\xBD\xAE" -- ギ print("Debug: Converted き to ギ") elseif byte == 0xFF78 then -- く result = result .. "\xEF\xBD\xB0" -- グ print("Debug: Converted く to グ") elseif byte == 0xFF7C then -- し result = result .. "\xEF\xBD\xB8" -- ジ print("Debug: Converted し to ジ") elseif byte == 0xFF7D then -- す result = result .. "\xEF\xBD\xBA" -- ズ print("Debug: Converted す to ズ") elseif byte == 0xFF81 then -- ち result = result .. "\xEF\xBD\xC6" -- チ print("Debug: Converted ち to チ") elseif byte == 0xFF82 then -- つ result = result .. "\xEF\xBD\xC5" -- ヅ print("Debug: Converted つ to ヅ") elseif byte == 0xFF8B then -- ふ result = result .. "\xEF\xBD\xD5" -- フ print("Debug: Converted ふ to フ") elseif byte == 0xFF8D then -- へ result = result .. "\xEF\xBD\xD8" -- ヘ print("Debug: Converted へ to ヘ") elseif byte == 0xFF8E then -- ほ result = result .. "\xEF\xBD\xDB" -- ホ print("Debug: Converted ほ to ホ") else result = result .. string.char(byte - 0xFF61 + 0x30A1) print("Debug: Converted half-width Katakana to full-width Katakana") end dakuten = false else result = result .. string.char(byte - 0xFF61 + 0x30A1) print("Debug: Converted half-width Katakana to full-width Katakana") end else result = result .. char print("Debug: Copied non-Katakana character") end end print("Debug: Conversion complete") return result end -- Load the subtitle file local subtitle_file = io.open(mp.get_property("sub-file"), "r") if not subtitle_file then print("Error: Unable to open subtitle file") return end local subtitle_text = subtitle_file:read("*a") subtitle_file:close() -- Check if the subtitle text is empty if not subtitle_text or subtitle_text == "" then print("Error: Subtitle file is empty") return end -- Convert half-width Katakana to full-width Katakana local modified_text, err = pcall(half_to_full_katakana, subtitle_text) if not modified_text then print("Error: Conversion failed: " .. err) return end -- Set the modified subtitle text mp.set_property("sub-text", modified_text) print("Debug: Set modified subtitle text")