import datetime, os
from importlib import import_module
def classgen(string):
return string.replace(" ","").replace("#","").replace("-","").replace("ç","c").replace("’","").replace("é","e").replace("(","").replace(")","").replace(":","").lower()
def stringno(theno):
if theno < 10:
return "00" + str(theno)
elif theno < 100:
return "0" + str(theno)
else:
return str(theno)
ficcount = 999
ficlist = []
while ficcount > 0:
ficcount -= 1
ficcountstring = stringno(ficcount)
if os.path.exists("files/originalsmeta/" + ficcountstring + ".py"):
ficfile = "files.originalsmeta." + ficcountstring
fileread = import_module(ficfile)
try:
if fileread.revealdate <= datetime.datetime.now():
goahead = True
else:
goahead = False
except:
goahead = True
if goahead == True:
ficdict = {}
ficdict["id"] = ficcount
if fileread.showtitle:
ficdict["title"] = fileread.title
if fileread.language == "fr":
ficdict["french"] = "original"
else:
ficdict["french"] = False
sumwords = 0
for instalment in fileread.datewords:
sumwords = sumwords + instalment["words"]
ficdict["totalwords"] = sumwords
ficdict["startdate"] = fileread.datewords[0]["date"]
ficdict["latestdate"] = fileread.datewords[-1]["date"]
try:
ficdict["approxdate"] = fileread.approxdate
except:
pass
if len(fileread.datewords) > 1:
ficdict["chaptered"] = True
else:
ficdict["chaptered"] = False
try:
ficdict["completion"] = fileread.status
except:
ficdict["completion"] = "complete"
ficdict["fandoms"] = []
for fandom in fileread.fandom:
if fandom == "FF15":
ficdict["fandoms"].append("Final Fantasy XV")
elif fandom == "FF16":
ficdict["fandoms"].append("Final Fantasy XVI")
elif fandom == "FF4":
ficdict["fandoms"].append("Final Fantasy IV")
elif fandom == "FF6":
ficdict["fandoms"].append("Final Fantasy VI")
elif fandom == "FF7":
ficdict["fandoms"].append("Final Fantasy VII")
elif fandom == "FF8":
ficdict["fandoms"].append("Final Fantasy VIII")
elif fandom == "FF9":
ficdict["fandoms"].append("Final Fantasy IX")
elif fandom == "FFX":
ficdict["fandoms"].append("Final Fantasy X")
elif fandom == "LOTR":
ficdict["fandoms"].append("Lord Of The Rings")
else:
ficdict["fandoms"].append(fandom)
ficlist.append(ficdict)
ficdict["charmain"] = []
try:
for character in fileread.charpov:
ficdict["charmain"].append(character)
except:
pass
try:
for character in fileread.charmain:
ficdict["charmain"].append(character)
except:
pass
ficdict["charsec"] = []
try:
for character in fileread.charsecondary:
ficdict["charsec"].append(character)
except:
pass
try:
ficdict["ships"] = []
for ship in fileread.ship:
if ship != None:
ficdict["ships"].append(ship.replace("/"," × "))
except:
pass
if fileread.genre[0] == "slash" or fileread.genre[0] == "bl" or fileread.genre[0] == "yaoi":
ficdict["type"] = "BL"
elif fileread.genre[0] == "femslash" or fileread.genre[0] == "gl" or fileread.genre[0] == "yuri":
ficdict["type"] = "GL"
elif fileread.genre[0] == "het":
ficdict["type"] = "hetero"
else:
ficdict["type"] = "gen"
try:
if len(fileread.genre) > 1 and fileread.genre[1] != "slash":
ficdict["genre"] = fileread.genre[1]
else:
if fileread.time == "pre-canon" or fileread.time == "mid-canon" or fileread.time == "post-canon" or fileread.time == "AU":
ficdict["genre"] = fileread.time
except:
pass
try:
ficdict["summary"] = fileread.summary
except:
pass
try:
ficdict["event"] = fileread.eventname
ficdict["eventtype"] = fileread.event
except:
pass
try:
ficdict["prompt"] = fileread.prompt
except:
ficdict["prompt"] = False
if fileread.locked:
ficdict["locked"] = True
else:
ficdict["locked"] = False
if fileread.epub:
ficdict["epub"] = True
else:
ficdict["epub"] = False
if fileread.pdf:
ficdict["pdf"] = True
else:
ficdict["pdf"] = False
try:
transid = stringno(fileread.translation)
if os.path.exists("files/translationsmeta/" + transid + ".py"):
transfile = "files.translationsmeta." + transid
transread = import_module(transfile)
ficdict["transid"] = int(transid)
if transread.showtitle:
ficdict["transtitle"] = transread.title
if transread.language == "fr":
ficdict["french"] = "translation"
transwords = 0
for instalment in transread.datewords:
transwords = transwords + instalment["words"]
ficdict["transwords"] = transwords
ficdict["transstartdate"] = transread.datewords[0]["date"]
ficdict["translatestdate"] = transread.datewords[-1]["date"]
ficdict["transsummary"] = transread.summary
except:
pass
ficlist = sorted(ficlist,key=lambda d: d["latestdate"],reverse=True)
fandoms = []
challenges = []
exchanges = []
promptmemes = []
for fic in ficlist:
for fandom in fic["fandoms"]:
fandoms.append(fandom)
try:
if fic["eventtype"] == "challenge":
challenges.append(fic["event"])
elif fic["eventtype"] == "exchange" or fic["eventtype"] == "ao3exchange":
exchanges.append(fic["event"])
elif fic["eventtype"] == "prompt":
promptmemes.append(fic["event"])
except:
pass
fandoms = sorted(list(dict.fromkeys(fandoms)))
challenges = sorted(list(dict.fromkeys(challenges)))
exchanges = sorted(list(dict.fromkeys(exchanges)))
promptmemes = sorted(list(dict.fromkeys(promptmemes)))
output = open("index.html", "w")
output.write("\n\n
\n \n \n praze • Fanfiction \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Menu \n \n Fundamentals\n \n \n Projects\n \n \n Fan content\n \n \n Misc.\n \n \n \n \n \n
\n \n Fanfiction \n I’m partway through redesigning my fic archive and plan to gradually reinstate some of the features it used to have; for now, here’s a filterable masterlist. Warnings and ratings are not currently implemented, browse at your own risk. Some fics will have slight inaccuracies in metadata for the time being!
\n \n \n
\n \n \n \n \n \n \n \n ")
for fic in ficlist:
output.write("\n 1:
output.write(" fandom-crossover")
three = False
if fic["pdf"] == False:
output.write(" format-unusual") # ok for now …
elif fic["chaptered"]:
output.write(" format-chaptered")
else:
try:
if fic["event"] == "threesentenceficathon":
output.write(" format-three")
three = True
except:
pass
if three == False:
if fic["totalwords"] == 100:
output.write(" format-drabble")
elif fic["totalwords"] % 100 == 0:
output.write(" format-drabblefam")
else:
output.write(" format-oneshot")
try:
output.write(" event-" + classgen(fic["event"]))
except:
output.write(" unprompted")
if fic["locked"]:
output.write(" locked")
output.write("\">\n
no. " + stringno(fic["id"]) + " ")
try:
output.write("/" + stringno(fic["transid"]) + " ")
except:
pass
titles = 0
try:
if fic["title"]:
titles += 1
except:
pass
try:
if fic["transtitle"]:
titles += 1
except:
pass
if titles > 0:
output.write(": ")
try:
output.write(fic["title"])
except:
pass
if titles > 1:
output.write("/")
try:
output.write(fic["transtitle"])
except:
pass
output.write(" \n
\n")
try:
if fic["transid"]:
if fic["french"] == "original":
output.write("French: ")
elif fic["french"] == "translation":
output.write("English: ")
except:
pass
thewords = fic["totalwords"]
output.write(str(f"{thewords:,}" + " words, "))
# output.write(str(fic["totalwords"]) + " words, ")
try:
output.write(fic["approxdate"])
except:
output.write("" + datetime.datetime.strftime(fic["startdate"],"%Y-%m-%d") + "
")
if fic["completion"] == "incomplete":
output.write("–present")
elif fic["latestdate"] != fic["startdate"]:
output.write("–" + datetime.datetime.strftime(fic["latestdate"],"%Y-%m-%d") + "
")
if fic["completion"] == "abandoned":
output.write(" (abandoned)")
output.write(" ")
try:
if fic["transid"]:
output.write("\n")
if fic["french"] == "original":
output.write("English: ")
elif fic["french"] == "translation":
output.write("French: ")
output.write(str(fic["transwords"]) + " words, " + datetime.datetime.strftime(fic["transstartdate"],"%Y-%m-%d") + "
")
if fic["translatestdate"] != fic["transstartdate"]:
output.write("–" + datetime.datetime.strftime(fic["translatestdate"],"%Y-%m-%d") + "
")
output.write(" ")
except:
pass
output.write("\n" + " , ".join(fic["fandoms"]) + " ")
if len(fic["charmain"]) > 0:
output.write(", " + ", ".join(fic["charmain"]))
if len(fic["charsec"]) > 0:
output.write(", " + ", ".join(fic["charsec"]) + " ")
output.write(" \n" + fic["type"] + " ")
try:
output.write(", " + fic["genre"])
except:
pass
output.write(" ")
try:
output.write("\nWritten for " + fic["event"] + " .")
if fic["prompt"]:
output.write(" Prompt: " + fic["prompt"] + " .")
output.write(" ")
except:
pass
output.write("")
try:
if fic["transid"]:
if fic["french"] == "original":
output.write("French: ")
elif fic["french"] == "translation":
output.write("English: ")
except:
pass
output.write("HTML ")
if fic["pdf"]:
output.write(" • PDF ")
if fic["epub"]:
output.write(" • EPUB ")
output.write(" ")
try:
if fic["transid"]:
output.write("")
if fic["french"] == "original":
output.write("English: ")
elif fic["french"] == "translation":
output.write("French: ")
output.write("HTML ")
if fic["pdf"]:
output.write(" • PDF ")
if fic["epub"]:
output.write(" • EPUB ")
output.write(" ")
except:
pass
output.write("\n ")
thesummary = ""
try:
thesummary += fic["summary"]
except:
pass
try:
thesummary += " " + fic["transsummary"]
except:
pass
if len(thesummary) > 0:
output.write("\n
\n" + thesummary + "
\n ")
output.write("\n
")
output.write("\n \n \n
\n
\n \n")