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 )