130 lines
5.4 KiB
Python
130 lines
5.4 KiB
Python
import datetime, os
|
||
from importlib import import_module
|
||
|
||
import makeheader
|
||
import headerfooter
|
||
|
||
def fandomlist(local=False):
|
||
# delete existing file
|
||
if os.path.exists("build/byfandom/index.html"):
|
||
os.remove("build/byfandom/index.html")
|
||
# write header
|
||
headerfooter.headerwrite("build/byfandom/index.html","Fics by fandom","Fics by fandom","<p>On this page, you’ll find basically everything I’ve ever written that is a. fanfiction and b. extant, grouped by fandom and then sorted newest to oldest; quality may vary. Some fics, such as things I wrote before 2020, require a username and password to access.</p>",False,local)
|
||
# get list of fandoms
|
||
fandoms = []
|
||
ficcount = 500
|
||
while ficcount > 0:
|
||
ficcount -= 1
|
||
if ficcount < 10:
|
||
ficcountstring = "00" + str(ficcount)
|
||
elif ficcount < 100:
|
||
ficcountstring = "0" + str(ficcount)
|
||
else:
|
||
ficcountstring = str(ficcount)
|
||
if os.path.exists("files/originalsmeta/" + ficcountstring + ".py"):
|
||
ficfile = "files.originalsmeta." + ficcountstring
|
||
fileread = import_module(ficfile)
|
||
try:
|
||
if fileread.revealdate > datetime.datetime.now():
|
||
revealed = False
|
||
else:
|
||
revealed = True
|
||
except:
|
||
revealed = True
|
||
if revealed == True:
|
||
for fandom in fileread.fandom:
|
||
fandoms.append(fandom)
|
||
newlist = []
|
||
for fandom in fandoms:
|
||
if fandom not in newlist:
|
||
newlist.append(fandom)
|
||
fandomlist = []
|
||
for fandom in newlist:
|
||
if "FF" in fandom:
|
||
if fandom == "FFX":
|
||
newfandom = "FF10"
|
||
elif len(fandom) == 3:
|
||
newfandom = "FF0" + fandom[-1]
|
||
else:
|
||
newfandom = fandom
|
||
fandomlist.append({"searchname":fandom,"sortname":newfandom.replace("FF","Final Fantasy ").lower(),"displayname":fandom.replace("FF","Final Fantasy ")})
|
||
else:
|
||
fandomlist.append({"searchname":fandom,"sortname":fandom.lower(),"displayname":fandom})
|
||
fandomlist = sorted(fandomlist, key=lambda d: d["sortname"])
|
||
for fandom in fandomlist:
|
||
fandomfics = []
|
||
fandomwords = 0
|
||
sortfics = []
|
||
# check which fics are in the fandom
|
||
ficcount = 500
|
||
while ficcount > 0:
|
||
ficcount -= 1
|
||
if ficcount < 10:
|
||
ficcountstring = "00" + str(ficcount)
|
||
elif ficcount < 100:
|
||
ficcountstring = "0" + str(ficcount)
|
||
else:
|
||
ficcountstring = str(ficcount)
|
||
if os.path.exists("files/originalsmeta/" + ficcountstring + ".py"):
|
||
countfile = "files.originalsmeta." + ficcountstring
|
||
fileread = import_module(countfile)
|
||
try:
|
||
if fileread.revealdate > datetime.datetime.now():
|
||
revealed = False
|
||
else:
|
||
revealed = True
|
||
except:
|
||
revealed = True
|
||
if revealed == True:
|
||
if fandom["searchname"] in fileread.fandom:
|
||
sumwords = 0
|
||
for instalment in fileread.datewords:
|
||
sumwords = sumwords + instalment["words"]
|
||
ficdict = {"thefic":ficcount,"thedate":(fileread.datewords[-1])["date"],"totalwords":sumwords}
|
||
sortfics.append(ficdict)
|
||
thefics = sorted(sortfics,key=lambda d: d["thedate"],reverse=True)
|
||
for fic in thefics:
|
||
fandomfics.append(fic["thefic"])
|
||
fandomwords = fandomwords + fic["totalwords"]
|
||
firstfic = fandomfics[-1]
|
||
if firstfic < 10:
|
||
firstficstring = "00" + str(firstfic)
|
||
elif firstfic < 100:
|
||
firstficstring = "0" + str(firstfic)
|
||
else:
|
||
firstficstring = str(firstfic)
|
||
firstfile = "files.originalsmeta." + firstficstring
|
||
firstread = import_module(firstfile)
|
||
firstyear = (firstread.datewords[0])["date"].year
|
||
lastfic = fandomfics[0]
|
||
if lastfic < 10:
|
||
lastficstring = "00" + str(lastfic)
|
||
elif lastfic < 100:
|
||
lastficstring = "0" + str(lastfic)
|
||
else:
|
||
lastficstring = str(lastfic)
|
||
lastfile = "files.originalsmeta." + lastficstring
|
||
lastread = import_module(lastfile)
|
||
lastyear = (lastread.datewords[0])["date"].year
|
||
if lastyear == firstyear:
|
||
yearstring = str(firstyear)
|
||
else:
|
||
yearstring = str(firstyear) + "–" + str(lastyear)
|
||
# write details element
|
||
output = "build/byfandom/index.html"
|
||
filewrite = open(output, "a")
|
||
filewrite.write("<details><summary><b>" + fandom["displayname"] + "</b> (" + str(len(fandomfics)) + " fic")
|
||
if len(fandomfics) > 1:
|
||
filewrite.write("s")
|
||
filewrite.write(", " + f"{fandomwords:,}" + " total words, " + yearstring + ")</summary>\n")
|
||
filewrite.close()
|
||
for fic in fandomfics:
|
||
makeheader.ficgen(fic,False,output,local)
|
||
filewrite = open(output, "a")
|
||
filewrite.write("</details>\n")
|
||
filewrite.close()
|
||
# write footer
|
||
headerfooter.footerwrite("build/byfandom/index.html",False,local)
|
||
|
||
if __name__ == "__main__":
|
||
fandomlist(True)
|