Skip to content

Instantly share code, notes, and snippets.

View snowyegret23's full-sized avatar
❤️

Snowyegret snowyegret23

❤️
View GitHub Profile
import argparse
import csv
import hashlib
import json
import math
import re
import struct
import zlib
from pathlib import Path
import argparse
import hashlib
import json
import struct
from pathlib import Path
WINDOW_SIZE = 0x1000
WINDOW_START = 0xFEE
MAX_MATCH = 18
@snowyegret23
snowyegret23 / CharList_3911.txt
Created January 7, 2026 09:55
개인적으로 한글 출력을 위해 사용하는 기본 문자 목록입니다. (3911자)
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¤§¨ª­°±²³´¶·¸¹º¼½¾¿ÆÐרÞßæð÷øþđĦħıIJijĸĿŀŁłʼnŊŋŒœŦŧˇː˘˙˚˛˝ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψωЁАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяё―‘’“”†‡‥…‰′″※⁴ⁿ₁₂₃₄℃℉ℓ№℡™ΩÅ⅓⅔⅛⅜⅝⅞ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ←↑→↓↔↕↖↗↘↙⇒⇔∀∂∃∇∈∋∏∑√∝∞∠∥∧∨∩∪∫∬∮∴∵∼∽≒≠≡≤≥≪≫⊂⊃⊆⊇⊙⊥⋯⌒①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ─━│┃┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋▒■□▣▤▥▦▧▨▩▲△▶▷▼▽◀◁◆◇◈○◎●◐◑★☆☎☏☜☞♀♂♠♡♣♤♥♧♨♩♪♬♭ 、。〃〈〉《》「」『』【】〓〔〕ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ・ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣㅤㅥㅦㅧㅨㅩㅪㅫㅬㅭㅮㅯㅰㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀㆁㆂㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌㆍㆎ㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌㈍㈎㈏㈐㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛㈜㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻㉿㎀㎁㎂㎃㎄㎈㎉㎊㎋㎌㎍㎎㎏㎐㎑㎒㎓㎔㎕㎖㎗㎘㎙㎚㎛㎜㎝㎞㎟㎠㎡㎢㎣㎤㎥㎦㎧㎨㎩㎪㎫㎬㎭㎮㎯㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎺㎻㎼㎽㎾㎿㏀㏁㏂㏃㏄㏅㏆㏇㏈㏉㏊㏏㏐㏓㏖㏘㏛㏜㏝中了体切取回國変始字定开戻択择换換擇改文日更本束決消漢确確简終結繁结置英言設語设语
@snowyegret23
snowyegret23 / Youtube_UI_Customizer.js
Last active December 29, 2025 11:33
Userscript: 유튜브의 특정 UI 요소를 토글합니다.
// ==UserScript==
// @name YouTube UI Customizer
// @namespace https://github.com/snowyegret23
// @version 1.1
// @description 유튜브의 특정 UI 요소를 토글합니다.
// @author Snowyegret
// @match https://www.youtube.com/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=youtube.com
// @grant none
// @run-at document-start
@snowyegret23
snowyegret23 / Youtube_Custom_Skip_Manager.js
Last active December 29, 2025 11:33
Userscript: 특정 영상의 스킵 구간을 등록해두면 해당 구간을 자동으로 스킵해줍니다.
// ==UserScript==
// @name YouTube Custom Skip Manager
// @namespace https://github.com/snowyegret23
// @version 1.1
// @description 특정 영상의 스킵 구간을 등록해두면 해당 구간을 자동으로 스킵해줍니다.
// @author Snowyegret
// @match https://www.youtube.com/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=youtube.com
// @grant none
// ==/UserScript==
import os
import io
import gzip
import hashlib
import msgpack
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
import json
import base64
187번째 줄: 태그 갯수가 다릅니다. (クロンの挑戦に成功した![R]道具が[CS:H][value_l2_b:0][CR]個 [CS:H]祝福[CR]された! -> 크론의 도전에 성공했다![R]도구 [CS:H][value_l2_b:0][CR]개가 [CS:H]축복받았다!)
558번째 줄: 태그 갯수가 다릅니다. (\[?\] -> [space]\[?\])
602번째 줄: 태그 갯수가 다릅니다. (\[[value_b:0]\] -> [space]\[[value_b:0]\])
1306번째 줄: 태그 갯수가 다릅니다. (\[[value_b:0]\] -> [space]\[[value_b:0]\])
1392번째 줄: 태그 갯수가 다릅니다. (\[[value_b:0]\] -> [space]\[[value_b:0]\])
1904번째 줄: 태그 갯수가 다릅니다. ([M:KYOUTEKI]シハン -> 시한)
7840번째 줄: 태그 갯수가 다릅니다. ([ACT_KEY:B]+[ACT_KEY:A]で その場で足踏み![R]すばやく[CS:H]HP[CR]回復![R]- 風来のゴギョウ - -> [ACT_KEY:B]+[ACT_KEY:A]로 그 자리에서 대쉬! [R]빠르게 [CS:H]HP[CR]를 [CS:H]회복! [R]-풍래인 고규-)
7849번째 줄: 태그 갯수가 다릅니다. (だから‥お願い‥‥[K]ジャ‥カクー‥を‥‥ -> 그러니...[K]제발...[K]자...카쿠...를...)
7926번째 줄: 태그 갯수가 다릅니다. (狐渇って 日照りの神様だよな?[K][R]キミをしばっているのは ジャカクーじゃないのか? -> 코카츠는 가뭄의 신이잖아?[R]자카쿠가 널 잡아온 줄 알았는데?)
8511번째 줄: 태그 갯수가 다릅니다. (ああ‥やっぱり‥‥[K][R]そういうことなんだ‥‥。 -> 역시 이렇게 되는군요...)
import csv
import re
# 1. "[value_l2_b:0]個","[VALUE_L2_B:0]個"같이 대소문자가 다른 경우 알림
# 2. "[item_kind:BRACELET]","[item_kind:BRACELET][item_kind:BRACELET2]"같이 태그의 갯수가 다른 경우 알림
# 3. "[item_kind:BRACELET]","[item_kind:팔찌]" 같이 태그의 갯수가 같지만, 태그 내용이 다른 경우 알림
with open("localize/풍래의 시렌 6 번역 작업 by ㅇㄹㅋ의 사본 - 최종_일본어.csv", "r", encoding="utf-8") as f:
reader = csv.reader(f)
error_count = 0
from Crypto.Cipher import AES
from Crypto.Util import Counter
import hashlib
import glob
import os
import itertools
import sys
ENCRYPT_PASSWORD = b"DtUp!43AZH46@*fj768GCM@ajNvEdBEB"
DEFAULT_XOR_KEY = ".XaksQacnTKoPjBmQFLRBPK6CXpNRRk@YHLNJhNBPuRy-fY!UAnW-p!UfqjMK4JH"
import json
import csv
import os
def extract_text_with_paths(data, current_path=None):
if current_path is None:
current_path = []
result = []
if data is None: