import datetime , os
from importlib import import_module
import makeheader
import headerfooter
def eventlist ( local = False ) :
# delete existing file
if os . path . exists ( " build/events/index.html " ) :
os . remove ( " build/events/index.html " )
# write header
headerfooter . headerwrite ( " build/events/index.html " , " Events " , " Events " , " <p>Here’ s a list of the fics I’ ve written for events (exchanges, prompt memes/fests, challenges, etc.). Fics in this section are organised chronologically by year, <b>from oldest to newest</b>.</p> " , False , local )
# get list of events
events = [ ]
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 :
try :
events . append ( { " name " : fileread . eventname , " location " : fileread . eventlocation , " sortname " : fileread . eventname . lower ( ) } )
except :
try :
events . append ( { " name " : fileread . eventname , " location " : " " , " sortname " : fileread . eventname . lower ( ) } )
except :
pass
newlist = [ ]
for event in events :
if event not in newlist :
newlist . append ( event )
eventlist = sorted ( newlist , key = lambda d : d [ " sortname " ] )
for event in eventlist :
evententries = [ ]
theevent = event [ " name " ]
# check all fics in specified 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 :
try :
if fileread . eventname == theevent :
evententries . append ( { " ficno " : ficcount , " year " : ( fileread . datewords [ 0 ] ) [ " date " ] . year , " fandom " : fileread . fandom , " update " : ( fileread . datewords [ - 1 ] ) [ " date " ] } )
except :
pass
eventfandoms = [ ]
for entry in evententries :
eventfandoms . extend ( entry [ " fandom " ] )
eventfandoms = sorted ( list ( dict . fromkeys ( eventfandoms ) ) )
# write details element
output = " build/events/index.html "
filewrite = open ( output , " a " )
filewrite . write ( " <details><summary><b> " )
position = 0
while ( eventlist [ position ] ) [ " name " ] != theevent :
position + = 1
eventlocation = ( eventlist [ position ] ) [ " location " ]
if eventlocation == " dwjournal " :
filewrite . write ( " <span style= \" white-space: nowrap; \" class= \" ljuser \" ><a href= \" https:// " + theevent . replace ( " _ " , " - " ) + " .dreamwidth.org/profile \" ><img src= \" https://www.dreamwidth.org/img/silk/identity/user.png \" alt= \" [personal profile] \" width= \" 17 \" height= \" 17 \" style= \" vertical-align: text-bottom; border: 0; padding-right: 1px; \" ></a><a href= \" https:// " + theevent . replace ( " _ " , " - " ) + " .dreamwidth.org/ \" ><b> " + theevent . replace ( " - " , " _ " ) + " </b></a></span> " )
elif eventlocation == " dwcomm " :
filewrite . write ( " <span style= \" white-space: nowrap; \" class= \" ljuser \" ><a href= \" https:// " + theevent . replace ( " _ " , " - " ) + " .dreamwidth.org/profile \" ><img src= \" https://www.dreamwidth.org/img/silk/identity/community.png \" alt= \" [community profile] \" width= \" 17 \" height= \" 17 \" style= \" vertical-align: text-bottom; border: 0; padding-right: 1px; \" ></a><a href= \" https:// " + theevent . replace ( " _ " , " - " ) + " .dreamwidth.org/ \" ><b> " + theevent . replace ( " - " , " _ " ) + " </b></a></span> " )
elif eventlocation == " ljjournal " :
filewrite . write ( " <span style= \" white-space: nowrap; \" class= \" ljuser \" ><a href= \" https:// " + theevent . replace ( " _ " , " - " ) + " .livejournal.com/profile \" ><img src= \" https://www.dreamwidth.org/img/external/lj-userinfo.gif \" alt= \" [personal profile] \" width= \" 17 \" height= \" 17 \" style= \" vertical-align: text-bottom; border: 0; padding-right: 1px; \" ></a><a href= \" https:// " + theevent . replace ( " _ " , " - " ) + " .livejournal.com/ \" ><b> " + theevent . replace ( " - " , " _ " ) + " </b></a></span> " )
else :
filewrite . write ( theevent )
filewrite . write ( " </b> ( " + str ( len ( evententries ) ) + " : " + " , " . join ( eventfandoms ) + " )</summary> \n " )
filewrite . close ( )
startyear = 2014
thisyear = int ( datetime . datetime . now ( ) . strftime ( " % Y " ) )
while startyear < thisyear :
startyear + = 1
yearlist = [ ]
for entry in evententries :
if int ( entry [ " year " ] ) == startyear :
ficdict = { " thefic " : entry [ " ficno " ] , " thedate " : entry [ " update " ] }
yearlist . append ( ficdict )
if len ( yearlist ) > 0 :
yearlist = sorted ( yearlist , key = lambda d : d [ " thedate " ] )
newyear = [ ]
for fic in yearlist :
newyear . append ( fic [ " thefic " ] )
filewrite = open ( output , " a " )
filewrite . write ( " <h1> " + str ( startyear ) + " </h1> \n " )
filewrite . close ( )
for fic in newyear :
makeheader . ficgen ( fic , False , output , local )
filewrite = open ( output , " a " )
filewrite . write ( " </details> \n " )
filewrite . close ( )
# write footer
headerfooter . footerwrite ( " build/events/index.html " , False , local )
if __name__ == " __main__ " :
eventlist ( )