Implement some common parsing fixes

and remove certain hardcoded ones
This commit is contained in:
Dusk 2024-02-24 00:42:17 +01:00
parent a8b1936a44
commit 991b3db12c
2 changed files with 64 additions and 12 deletions

View File

@ -1,5 +1,7 @@
#!/usr/bin/env python3
import scripter
import config
import hashlib
@ -15,10 +17,10 @@ def open_onikakushi() -> str:
origfile = open(config.get('original_path'), 'r', encoding='shift_jisx0213')
outfile = open(outpath, 'w', encoding='shift_jisx0213')
# Fix opening
opening_range = (21387, 21563)
# opening_range = (21387, 21563)
exclude = [12432, 2415]
replacements = {
# Misc
@ -48,9 +50,9 @@ def open_onikakushi() -> str:
5090: '「セ、センスねぇーッ!!@ なんだよそのネーミングは!!」@',
5300: '「9!@ いないですの?!!w400 !w300 @ あがりでございます!!」/',
5426: '「……撫でた。!w400……これで!w500……いい…」!sd@',
5594: '!s100「あ、………!sdな、なんだ……あははは……は。」@',
# 5594: '!s100「あ、………!sdな、なんだ……あははは……は。」@',
5792: '……くっくっく!!sd うつけ者めッ@',
5966:'「ぎゃぎゃ!s250………!s80ぎゃああぁあぁあぁあぁああッ」!sd¥',
# 5966:'「ぎゃぎゃ!s250………!s80ぎゃああぁあぁあぁあぁああッ」!sd¥',
6224:' とりとめのないおしゃべり。@',
# onik_009
6645:'quakey 5,200',
@ -79,8 +81,8 @@ def open_onikakushi() -> str:
15248:'!s300「………………はい。」!sd@',
15259:'!s500「……………オヤシロさま、!w1000………ですよ。」!sd@',
15261:'「…………オヤシロさまの祟りって、!w500本当にあるのかな!s400……なんて、まぁ…はっはっは…」!sd@',
15696:'!s200「け…圭ちゃん……!sdそんなのって……、」¥',
15748:'!s300「………ぅ………!sdひどいよ………圭ちゃん………、」@',
# 15696:'!s200「け…圭ちゃん……!sdそんなのって……、」¥',
# 15748:'!s300「………ぅ………!sdひどいよ………圭ちゃん………、」@',
15758:' その背後に、ぼそりと。@…本当にぼそりと、その独り言が聞こえた。¥',
16008:'「信じないよね。@!s200あはははははははははははははははは。」!sd¥',
16018:'「……待ってよ圭一くん。@!s100あはははははははははははははははははははははは。」!sd@',
@ -93,8 +95,15 @@ def open_onikakushi() -> str:
16217:'「言ったよ。@…悟史くんは“!w500転校”!sd!w800したの。」@',
16280:'!s200あはははははははははははははははははははははははは。!sd@',
16641:'!s200「……あははははははははははははははははははははは。」!sd@',
16665:'!s200「あはははははははははははははははははははははははははははははははははははははははははははははははははははははは……、」!sd¥',
21545:'!s150…………………………………!s50好きだった。!w3000',
# 16665:'!s200「あはははははははははははははははははははははははははははははははははははははははははははははははははははははは……、」!sd¥',
# 21545:'!s150…………………………………!s50好きだった。!w3000',
# onik_015_2
17172:'「映画の監督とか。@工事現場の監督とか。!w800!s200あははははははははははははははははは。」!sd¥',
17205:'「あはははは。監督は監督さんだよ。!s200あははははははははははははははははは。」!sd@',
# 17208:'!s150「あはははははははははははははははははははははははははははははははは…」!sd¥',
# 17213:'!s150「あははははははははははははははははははははははは。」!sd¥',
# 17235:'!s200「あははははははははははははははははははははははははははは。」!sd¥',
# onik_tips_14
22657:'・歯型から都内歯科へ照合@ > 警視庁へ@',
22658:'・顔写真の送付@ > 警視庁へ@',
@ -102,11 +111,54 @@ def open_onikakushi() -> str:
}
for i, line in enumerate(origfile):
outfile.write(replacements.get(i, line[:-1])+'\n')
if i not in exclude and i not in replacements:
outfile.write(fix_common_displaced_commands(line)+'\n')
else:
outfile.write(replacements.get(i, line[:-1])+'\n')
outfile.close()
origfile.close()
return outpath
# Fix the '「!s*' and '!sd。」@' plague
def fix_common_displaced_commands(line: str) -> str:
ret = ''
tokens = scripter.parse_line(line)
if len(tokens) > 1 and \
tokens[1].type == scripter.TokenType.COMMAND \
and tokens[0].token == ' ':
tokens.pop(0)
# '「!s*'
if len(tokens) > 2 and \
tokens[0].token == '' and tokens[1].token.startswith('!s'):
# !s to beggining
tokens[0] = tokens[1]
# prepend 「 to next token
tokens[2].token = '' + tokens[2].token
# remove 「 token
tokens.pop(1)
# '!sd。」'
if len(tokens) > 3 and \
tokens[-3].token == '!sd' and \
tokens[-2].token in ['。」','','','、」'] and \
tokens[-1].type == scripter.TokenType.COMMAND:
# Prepend to end
quot = tokens.pop(-2).token
excl = tokens.pop(-2).token
tokens[-1].token = excl + tokens[-1].token
tokens[-2].token += quot
for t in tokens:
ret += t.token
return ret

View File

@ -18,7 +18,7 @@ onik = {
'onik_014_02.txt',
'onik_015.txt',
'onik_015_02.txt',
# 'onik_015_03.txt',
'onik_015_03.txt',
],
"Opening" : [ 'onik_op.txt' ],
"Sub_Tips_001" : [ 'onik_tips_01.txt' ],