| import csv
|
| import random
|
| import os
|
| import shutil
|
|
|
| def random_read_from_csv(filename):
|
| script_dir = os.path.dirname(os.path.abspath(__file__))
|
| full_path = os.path.join(script_dir, "./csvfiles/" )
|
| with open(full_path + filename + ".csv", "r",encoding="utf8") as csv_file:
|
| csv_reader = csv.reader(csv_file)
|
| output = (random.choice([line[0] for line in csv_reader]))
|
| return output
|
|
|
| def add_from_csv(completeprompt, csvfilename, addcomma, prefix, suffix):
|
| randomreadfromcsv = random_read_from_csv(csvfilename)
|
|
|
| addtoprompt = prefix + " " + randomreadfromcsv + " " + suffix
|
| if(addcomma == 1):
|
| return ", ".join([completeprompt,addtoprompt])
|
| return " ".join([completeprompt,addtoprompt])
|
|
|
| def csv_to_list(csvfilename, antilist=[], directory="./csvfiles/", lowerandstrip=0, delimiter=";", listoflistmode = False, skipheader = False, gender = "all", insanitylevel = -1):
|
| replacing = False
|
| userfilesdirectory = "./userfiles/"
|
| userfileaddonname = csvfilename + "_addon.csv"
|
| userfilereplacename = csvfilename + "_replace.csv"
|
| lightfilename = csvfilename + "_light.csv"
|
| mediumfilename = csvfilename + "_medium.csv"
|
| csvlist = []
|
| script_dir = os.path.dirname(os.path.abspath(__file__))
|
| full_path = os.path.join(script_dir, directory )
|
| userfilesfolder = os.path.join(script_dir, userfilesdirectory )
|
| directoryfilesfolder = os.path.join(script_dir, directory )
|
|
|
|
|
| if(directory=="./csvfiles/" or directory=="./csvfiles/special_lists/" or directory=="./csvfiles/templates/"):
|
| for filename in os.listdir(userfilesfolder):
|
| if(filename == userfilereplacename):
|
|
|
| full_path = os.path.join(script_dir, userfilesdirectory )
|
| csvfilename = csvfilename + "_replace"
|
| replacing = True
|
|
|
|
|
|
|
| if(replacing == False and insanitylevel > 0):
|
| if(insanitylevel < 4):
|
| for filename in os.listdir(directoryfilesfolder):
|
| if(filename == mediumfilename):
|
|
|
| full_path = os.path.join(script_dir, directory )
|
| csvfilename = csvfilename + "_light"
|
| replacing = True
|
|
|
| if(insanitylevel < 7 and random.randint(0,13) < 12 and replacing == False):
|
| for filename in os.listdir(directoryfilesfolder):
|
| if(filename == lightfilename):
|
|
|
| full_path = os.path.join(script_dir, directory )
|
| csvfilename = csvfilename + "_medium"
|
| replacing = True
|
|
|
|
|
|
|
|
|
| if(os.path.isfile(full_path + csvfilename + ".csv")):
|
| with open(full_path + csvfilename + ".csv", "r", newline="",encoding="utf8") as file:
|
| reader = csv.reader(file, delimiter=delimiter)
|
| if(skipheader==True):
|
| next(reader)
|
| if(listoflistmode==True):
|
| csvlist = list(reader)
|
| else:
|
| for row in reader:
|
| value = row[0]
|
| if(
|
| gender != "all" and (row[1] == gender or row[1] == "genderless" or row[1] == "both")
|
| or gender == "all"
|
| ):
|
| if(value.lower().strip() not in antilist):
|
| if(lowerandstrip == 1):
|
| csvlist.append(row[0].lower().strip())
|
| else:
|
| csvlist.append(row[0])
|
|
|
| if(os.path.isfile(full_path + csvfilename + ".txt")):
|
| with open(full_path + csvfilename + ".txt", "r", newline="",encoding="utf8") as file:
|
| reader = csv.reader(file, delimiter=delimiter)
|
| if(skipheader==True):
|
| next(reader)
|
| if(listoflistmode==True):
|
| csvlist = list(reader)
|
| else:
|
| for row in reader:
|
| value = row[0]
|
| if(
|
| gender != "all" and (row[1] == gender or row[1] == "genderless" or row[1] == "both")
|
| or gender == "all"
|
| ):
|
| if(value.lower().strip() not in antilist):
|
| if(lowerandstrip == 1):
|
| csvlist.append(row[0].lower().strip())
|
| else:
|
| csvlist.append(row[0])
|
|
|
|
|
| if(directory=="./csvfiles/" or directory=="./csvfiles/special_lists/"):
|
| if(os.path.isfile(userfilesfolder + csvfilename + "_addon" + ".csv")):
|
| with open(userfilesfolder + csvfilename + "_addon" + ".csv", "r", newline="",encoding="utf8") as file:
|
| reader = csv.reader(file, delimiter=delimiter)
|
| if(skipheader==True):
|
| next(reader)
|
| if(listoflistmode==True):
|
| csvlist.append(list(reader))
|
| else:
|
| for row in reader:
|
| value = row[0]
|
| if(
|
| gender != "all" and (row[1] == gender or row[1] == "genderless" or row[1] == "both")
|
| or gender == "all"
|
| ):
|
| if(value.lower().strip() not in antilist):
|
| if(lowerandstrip == 1):
|
| csvlist.append(row[0].lower().strip())
|
| else:
|
| csvlist.append(row[0])
|
|
|
|
|
|
|
| deduplicated_list = []
|
| lowercase_elements = set()
|
| if(listoflistmode==False):
|
| for element in csvlist:
|
| lowercase_element = element.lower()
|
| if lowercase_element not in lowercase_elements:
|
| lowercase_elements.add(lowercase_element)
|
| deduplicated_list.append(element)
|
| else:
|
| deduplicated_list = csvlist
|
|
|
| return deduplicated_list
|
|
|
| def artist_category_by_category_csv_to_list(csvfilename,artist):
|
| csvlist = []
|
| mediumlist = []
|
| descriptionlist = []
|
| script_dir = os.path.dirname(os.path.abspath(__file__))
|
| full_path = os.path.join(script_dir, "./csvfiles/" )
|
| with open(full_path + csvfilename + ".csv", "r", newline="",encoding="utf8") as file:
|
| reader = csv.DictReader(file, delimiter=",")
|
| for row in reader:
|
| if(row["Artist"] == artist):
|
| csvlist.append(row["Tags"])
|
| mediumlist.append(row["Medium"])
|
| descriptionlist.append(row["Description"])
|
| return csvlist, mediumlist, descriptionlist
|
|
|
| def artist_category_csv_to_list(csvfilename,category):
|
| csvlist = []
|
| script_dir = os.path.dirname(os.path.abspath(__file__))
|
| full_path = os.path.join(script_dir, "./csvfiles/" )
|
| with open(full_path + csvfilename + ".csv", "r", newline="",encoding="utf8") as file:
|
| reader = csv.DictReader(file, delimiter=",")
|
| for row in reader:
|
| if(row[category] == "1"):
|
| csvlist.append(row["Artist"])
|
| return csvlist
|
|
|
| def artist_descriptions_csv_to_list(csvfilename):
|
| csvlist = []
|
| script_dir = os.path.dirname(os.path.abspath(__file__))
|
| full_path = os.path.join(script_dir, "./csvfiles/" )
|
| with open(full_path + csvfilename + ".csv", "r", newline="",encoding="utf8") as file:
|
| reader = csv.DictReader(file, delimiter=",")
|
| for row in reader:
|
| csvlist.append(row["Description"])
|
| return csvlist
|
|
|
| def load_config_csv(suffix=""):
|
| csvlist = []
|
| script_dir = os.path.dirname(os.path.abspath(__file__))
|
| full_path_config_file = os.path.join(script_dir, "./userfiles/" )
|
| full_path_default_config_file = os.path.join(script_dir, "./csvfiles/config/" )
|
| if(suffix != ""):
|
| config_file = full_path_config_file + 'config_' + suffix + '.csv'
|
| default_config_file = full_path_default_config_file + 'default_config_' + suffix + '.csv'
|
| else:
|
| config_file = full_path_config_file + 'config.csv'
|
| default_config_file = full_path_default_config_file + 'default_config.csv'
|
|
|
| if not os.path.exists(config_file):
|
| shutil.copy2(default_config_file, config_file)
|
| print("Config file created.")
|
|
|
|
|
| with open(config_file, "r", newline="",encoding="utf8") as file:
|
| reader = csv.DictReader(file, delimiter=";")
|
| csvlist = [list(row.values()) for row in reader if not any(value.startswith('#') for value in row.values())]
|
| return csvlist
|
|
|
| def load_negative_list():
|
| primerlist = []
|
| negativelist = []
|
| primeraddonlist = []
|
| negativeaddonlist = []
|
|
|
| script_dir = os.path.dirname(os.path.abspath(__file__))
|
|
|
| full_path_default_negative_file = os.path.join(script_dir, "./csvfiles/special_lists/" )
|
| negative_file = full_path_default_negative_file + 'negativewords.csv'
|
|
|
| full_path_replace_negative_file = os.path.join(script_dir, "./userfiles/" )
|
| replace_negative_file = full_path_replace_negative_file + 'negativewords_replace.csv'
|
|
|
| full_path_addon_negative_file = os.path.join(script_dir, "./userfiles/" )
|
| addon_negative_file = full_path_addon_negative_file + 'negativewords_addon.csv'
|
|
|
|
|
| if(os.path.isfile(replace_negative_file)):
|
| negative_file = replace_negative_file
|
|
|
| with open(negative_file, "r", newline="",encoding="utf8") as file:
|
| reader = csv.DictReader(file, delimiter=";")
|
| primerlist = [row["primer"] for row in reader]
|
| with open(negative_file, "r", newline="",encoding="utf8") as file:
|
| reader = csv.DictReader(file, delimiter=";")
|
| negativelist = [row["negative"] for row in reader]
|
|
|
|
|
| if(os.path.isfile(addon_negative_file)):
|
| with open(addon_negative_file, "r", newline="",encoding="utf8") as file:
|
| reader = csv.DictReader(file, delimiter=";")
|
| primeraddonlist = [row["primer"] for row in reader]
|
| with open(addon_negative_file, "r", newline="",encoding="utf8") as file:
|
| reader = csv.DictReader(file, delimiter=";")
|
| negativeaddonlist = [row["negative"] for row in reader]
|
|
|
| primerlist += primeraddonlist
|
| negativelist += negativeaddonlist
|
|
|
|
|
| return primerlist, negativelist
|
|
|
| def load_all_artist_and_category():
|
| artistlist = []
|
| categorylist = []
|
| script_dir = os.path.dirname(os.path.abspath(__file__))
|
|
|
| full_path_default_artist_file = os.path.join(script_dir, "./csvfiles/" )
|
| artist_file = full_path_default_artist_file + 'artists_and_category.csv'
|
|
|
| with open(artist_file, "r", newline="",encoding="utf8") as file:
|
| reader = csv.DictReader(file, delimiter=",")
|
| artistlist = [row["Artist"] for row in reader]
|
| with open(artist_file, "r", newline="",encoding="utf8") as file:
|
| reader = csv.DictReader(file, delimiter=",")
|
| categorylist = [row["Tags"] for row in reader]
|
|
|
| return artistlist, categorylist
|
|
|
| def sort_and_dedupe_csv_file():
|
| tokenlist = csv_to_list(csvfilename="tokens",skipheader=False)
|
| tokenlist = sorted(set(tokenlist))
|
| newlist = []
|
| for i in tokenlist:
|
| j = i.lower()
|
| result = all(c == i[0] for c in i)
|
| if result:
|
| print("String {} have all characters same".format(i))
|
| else:
|
| newlist.append(j)
|
|
|
|
|
| newlist = sorted(set(newlist))
|
|
|
| script_dir = os.path.dirname(os.path.abspath(__file__))
|
|
|
| full_path = os.path.join(script_dir, "./csvfiles/special_lists/tokenwriter.csv" )
|
| with open(full_path, 'w', encoding="utf8") as fp:
|
| for item in newlist:
|
|
|
| fp.write("%s\n" % item)
|
|
|
|
|
|
|
|
|
|
|