Adds Emotion Conversion Script (#2600)

* Simple scripts which replaces the old emotion script constants to new constants
* Follow up to ea88ea50546fd140bda875056f83a60b6b0bef96
This commit is contained in:
Jeybla 2017-11-13 16:39:14 +01:00 committed by GitHub
parent da0883572d
commit 576d48865d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

146
tools/convert_emotions.py Executable file
View File

@ -0,0 +1,146 @@
#!/bin/python3
"""
Simple scripts which replaces the old emotion script constants to the new
script constants.
The actual replacement list is in 'emotion_dict'.
Related pull request: https://github.com/rathena/rathena/pull/2527
Note: This only applies the constant changes. You still have to check your scripts
for 'unitemote' (command was removed) and 'emotion' using the third parameter ('target name').
"""
import fileinput
import re
import os
convert_folders = ["../npc", "../src"]
wl_file_extensions = ['.hpp', '.h', '.cpp', '.c', '.txt' ]
bl_files = ['script_constants.hpp']
BACKUP_EXT = '.bak'
emotion_dict = {
'E_GASP': 'ET_SURPRISE',
'E_WHAT': 'ET_QUESTION',
'E_HO': 'ET_DELIGHT',
'E_LV': 'ET_THROB',
'E_SWT': 'ET_SWEAT',
'E_IC': 'ET_AHA',
'E_AN': 'ET_FRET',
'E_AG': 'ET_ANGER',
'E_CASH': 'ET_MONEY',
'E_DOTS': 'ET_THINK',
'E_SCISSORS': 'ET_SCISSOR',
'E_ROCK': 'ET_ROCK',
'E_PAPER': 'ET_WRAP',
'E_KOREA': 'ET_FLAG',
'E_LV2': 'ET_BIGTHROB',
'E_THX': 'ET_THANKS',
'E_WAH': 'ET_KEK',
'E_SRY': 'ET_SORRY',
'E_HEH': 'ET_SMILE',
'E_SWT2': 'ET_PROFUSELY_SWEAT',
'E_HMM': 'ET_SCRATCH',
'E_NO1': 'ET_BEST',
'E_NO': 'ET_STARE_ABOUT',
'E_OMG': 'ET_HUK',
'E_OH': 'ET_O',
'E_X': 'ET_X',
'E_HLP': 'ET_HELP',
'E_GO': 'ET_GO',
'E_SOB': 'ET_CRY',
'E_GG': 'ET_KIK',
'E_KIS': 'ET_CHUP',
'E_KIS2': 'ET_CHUPCHUP',
'E_PIF': 'ET_HNG',
'E_OK': 'ET_OK',
'E_MUTE': 'ET_CHAT_PROHIBIT',
'E_INDONESIA': 'ET_INDONESIA_FLAG',
'E_BZZ': 'ET_STARE',
'E_RICE': 'ET_HUNGRY',
'E_AWSM': 'ET_COOL',
'E_MEH': 'ET_MERONG',
'E_SHY': 'ET_SHY',
'E_PAT': 'ET_GOODBOY',
'E_MP': 'ET_SPTIME',
'E_SLUR': 'ET_SEXY',
'E_COM': 'ET_COMEON',
'E_YAWN': 'ET_SLEEPY',
'E_GRAT': 'ET_CONGRATULATION',
'E_HP': 'ET_HPTIME',
'E_PHILIPPINES': 'ET_PH_FLAG',
'E_MALAYSIA': 'ET_MY_FLAG',
'E_SINGAPORE': 'ET_SI_FLAG',
'E_BRAZIL': 'ET_BR_FLAG',
'E_FLASH': 'ET_SPARK',
'E_SPIN': 'ET_CONFUSE',
'E_SIGH': 'ET_OHNO',
'E_DUM': 'ET_HUM',
'E_LOUD': 'ET_BLABLA',
'E_OTL': 'ET_OTL',
'E_DICE1': 'ET_DICE1',
'E_DICE2': 'ET_DICE2',
'E_DICE3': 'ET_DICE3',
'E_DICE4': 'ET_DICE4',
'E_DICE5': 'ET_DICE5',
'E_DICE6': 'ET_DICE6',
'E_INDIA': 'ET_INDIA_FLAG',
'E_LUV': 'ET_LUV',
'E_RUSSIA': 'ET_FLAG8',
'E_VIRGIN': 'ET_FLAG9',
'E_MOBILE': 'ET_MOBILE',
'E_MAIL': 'ET_MAIL',
'E_CHINESE': 'ET_ANTENNA0',
'E_ANTENNA1': 'ET_ANTENNA1',
'E_ANTENNA2': 'ET_ANTENNA2',
'E_ANTENNA3': 'ET_ANTENNA3',
'E_HUM': 'ET_HUM2',
'E_ABS': 'ET_ABS',
'E_OOPS': 'ET_OOPS',
'E_SPIT': 'ET_SPIT',
'E_ENE': 'ET_ENE',
'E_PANIC': 'ET_PANIC',
'E_WHISP': 'ET_WHISP',
'E_YUT1': 'ET_YUT1',
'E_YUT2': 'ET_YUT2',
'E_YUT3': 'ET_YUT3',
'E_YUT4': 'ET_YUT4',
'E_YUT5': 'ET_YUT5',
'E_YUT6': 'ET_YUT6',
'E_YUT7': 'ET_YUT7',
'E_MAX': 'ET_MAX'
}
pattern = re.compile(r'\b(' + '|'.join(emotion_dict.keys()) + r')\b', re.IGNORECASE)
def revert_to_backup(filename):
os.rename(filename+BACKUP_EXT, filename)
def replace_emoticons_in_file(filename):
remove_backup = True # only keep backup if the original file changed
with fileinput.FileInput(filename, inplace=True, backup=BACKUP_EXT) as fiFile:
try:
for line in fiFile:
new_line, rpl_cnt = pattern.subn(lambda x: emotion_dict[x.group().upper()], line)
print(new_line, end='')
if rpl_cnt > 0:
remove_backup = False
if remove_backup:
os.remove(filename+BACKUP_EXT)
except UnicodeDecodeError:
# Encoding error, reapply the backup
revert_to_backup(filename)
fileiter = (os.path.join(root, f)
for conv_folder in convert_folders
for root, _, files in os.walk(conv_folder)
for f in files
if any([f.endswith(wl) for wl in wl_file_extensions])
if not any([bl in f for bl in bl_files])
)
for f in fileiter:
print("Updating file", f)
replace_emoticons_in_file(f)