-
Notifications
You must be signed in to change notification settings - Fork 0
/
database.py
115 lines (85 loc) · 3.44 KB
/
database.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
import pandas as pd
import re
from config import CONFIG
from constants import convert_damage_jp2en, convert_date_jp2en
class Database:
def __init__(self, filepath: str):
self.filepath = filepath
self.df = pd.read_csv(self.filepath, sep=";")
def retrieve_translation(self, **kwargs):
pass
def insert_translation(self, **kwargs):
pass
@staticmethod
def generalize_string(text):
if text is None:
return
text = Database.generalize_player_variables(text)
text, jp_date = Database.generalize_date(text)
text, jp_damage = Database.generalize_damage(text)
return text, {"date": jp_date, "damage": jp_damage}
@staticmethod
def specify_string(text, metadata):
if text is None:
return
text = Database.specify_player_variables(text)
text = Database.specify_date(text, convert_date_jp2en(metadata["date"]))
text = Database.specify_damage(text, convert_damage_jp2en(metadata["damage"]))
return text
@staticmethod
def generalize_player_variables(text):
config = CONFIG["save"]["player"]
text = text.replace(config["jp_nickname"], "<PNICKNAME>")
text = text.replace(config["jp_name"], "<PNAME>")
text = text.replace(config["jp_surname"], "<PSURNAME>")
text = text.replace(config["jp_nickname_ascii"], "<PNICKNAME>")
text = text.replace(config["jp_name_ascii"], "<PNAME>")
text = text.replace(config["jp_surname_ascii"], "<PSURNAME>")
text = text.replace("<PSURNAME><PNAME>", "<PNAME> <PSURNAME>")
text = text.replace(CONFIG.plbday_jp, "<PLAYER_BIRTHDAY>")
text = text.replace(CONFIG.shbday_jp, "<SHIORI_BIRTHDAY>")
return text
@staticmethod
def specify_player_variables(text):
config = CONFIG["save"]["player"]
text = text.replace("<PNAME>", config["en_name"])
text = text.replace("<PSURNAME>", config["en_surname"])
text = text.replace("<PNICKNAME>", config["en_nickname"])
text = text.replace("<PLAYER_BIRTHDAY>", CONFIG.plbday_en)
text = text.replace("<SHIORI_BIRTHDAY>", CONFIG.shbday_en)
return text
@staticmethod
def generalize_date(text):
date = re.search(r"[0123456789]+月[0123456789]+日", text)
if date:
date = date.group()
text = text.replace(date, "<DATE>")
return text, date
@staticmethod
def specify_date(text, date_en):
if date_en is None:
return text
if "<DATE>" not in text:
return text
return text.replace("<DATE>", date_en)
@staticmethod
def generalize_damage(text):
damage = re.search(r"[0123456789]+のダメージ", text)
if damage:
damage = damage.group()
text = text.replace(damage, "<DAMAGE>")
return text, damage
@staticmethod
def specify_damage(text, damage_en):
if damage_en is None:
return text
if "<DAMAGE>" not in text:
return text
return text.replace("<DAMAGE>", damage_en)
if __name__ == "__main__":
text = "『7月23日に、近所の公園へ行かない?"
text, date = Database.generalize_date(text)
print(text, date)
text = "『に、近所の公園へ行かない?"
text, date = Database.generalize_date(text)
print(text, date)