import os
from fifteen_api import FifteenAPI
import csv
import re

tts_api = FifteenAPI()

mwhscharacters = [['c','Twilight Sparkle'],['i','Rise Kujikawa'],['a','Adagio Dazzle'],['h','Lyra'],['n','Maud Pie']]

previous_character = ''

def ChooseCharacter(char):
	global previous_character
	if char == 'extend':
		return previous_character
	else:
		for character in mwhscharacters:
			if char[0] == character[0]:
				current_character = character[1]
				previous_character = current_character
				break			

	return current_character

def TextCorrector(txt):
	result = txt.replace("{w}","...")
	result = result.replace("{i}","")
	result = result.replace("[player]","Player")
	result = result.replace("[pronoun[1]]","them")
	result = result.replace("[pronoun[2]]","their")
	result = result.replace("[pronoun[4]]","they're")
	result = result.replace("[pronoun[5]]","they're")
	result = result.replace("[pronoun[0]]","they")
	result = result.replace("[is_conj]","are")
	result = result.replace("[s_conj]","") #I don't like to force pronouns like this, but the empty gaps are too much
	result = re.sub(r"\s*{.*}\s*", " ", result)
	result = re.sub(r"\s*\[.*\]\s*", " ", result)
	print(result)
	return result

with open('dialogue.tab', newline='') as dialogue:
	dialogue_reader = csv.reader(dialogue, delimiter='\t')

	firstline = True
	i = 0

	for line in dialogue_reader:

		if firstline:
			firstline = False
			continue

		#If Its from the promo material, skip. Those dont happen in the game.
		if line[0].find('trailer') != -1 or line[0].find('screenshots') != -1 or line[0].find('letsplayers') != -1:
			continue

		#Get the character
		if line[1] != 'centered' and line[1] != '':

			final_character = ChooseCharacter(line[1])
		else: 

			continue

		#Correct the text

		if re.search('[a-zA-Z]',line[2]):

			final_text = TextCorrector(line[2])
		else:

			continue

		tts_api.save_to_file(final_character,"Neutral",final_text,line[0] + '.wav')
		'''
		os.system("ffmpeg -i " + line[0] + ".wav " + line[0] + ".ogg")
		os.remove(line[0] + ".wav")
		'''
		i = i + 1
		print(str(i) + '/' + str(3252))