veekun_pokedex/scripts/add-sm-flavortext.py

56 lines
1.6 KiB
Python

# Generates SQL to add flavor text from the text dump to the database.
#
# Usage: python add-sm-flavortext.py path/to/text | psql pokedex
import os.path
import sys
import re
textdir = sys.argv[1]
#VERSION = 'sun'
#FILE = '119'
VERSION = 'ultra-moon'
FILE = '125'
NUM_SPECIES = 807
lang_idents = {
'ja-kana': 'ja-Hrkt',
'ja-kanji': 'ja',
}
flavor_texts = []
for lang in 'ja-kana', 'ja-kanji', 'en', 'fr', 'it', 'de', 'es', 'ko', 'zh-Hant', 'zh-Hans':
f = open(os.path.join(textdir, lang, FILE))
flavor_texts.append((lang_idents.get(lang, lang), f))
print("BEGIN;")
for lang, text in flavor_texts:
print("\echo '%s'" % lang)
print("WITH lang AS (SELECT id FROM languages WHERE identifier = '%s')," % lang)
print(" version AS (SELECT id FROM versions WHERE identifier = '%s')" % VERSION)
print("INSERT INTO pokemon_species_flavor_text (species_id, version_id, language_id, flavor_text) VALUES");
first = True
for i, line in enumerate(text):
if i == 0:
continue
if i > NUM_SPECIES:
break
if line == '\n':
continue
line = line.strip('\n')
line = line.replace("\\ue07f", "\\u202f") # nbsp
if '\\x' in line or '\\r' in line or '\\u' in line.replace("\\u202f",""):
print("warning: %s %d: %r" % (lang, i, line), file=sys.stderr)
if first:
first = False
else:
print(",\n", end="")
print(" (%d, (select id from version), (select id from lang), E'%s')" % (i, line), end="")
print(";")
print("COMMIT;")
#print("ROLLBACK;")