The Lurker's Guide to Babylon 5
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

343 lines
7.7 KiB

# Figure out which other elements of an episode page are available.
import os, string
# Check for the existence of a file.
def exists(filename):
try:
os.stat(filename)
return 1
except:
return 0
#
# Input: integer episode number
# Output: (guide, background, synopsis, credits, prev, next)
#
def getneighbors(which, page = 'guide'):
whichstr = '%03d' % which
prev = '%03d' % (which - 1)
next = '%03d' % (which + 1)
hasg = exists('../guide/' + whichstr + '.html')
hasb = exists('../background/' + whichstr + '.shtml')
hass = exists('../synops/' + whichstr + '.html')
hasc = exists('../credits/' + whichstr + '.html')
if exists(prev + '.html') or exists(prev + '.shtml'):
hasp = 1
else:
hasp = 0
if exists(next + '.html') or exists(next + '.shtml'):
hasn = 1
else:
hasn = 0
if page == 'comic' or page == 'novels':
hasb = 0
hass = 0
hasc = 0
return (hasg, hasb, hass, hasc, hasp, hasn)
#
# Generate a trio of navigational buttons for headers and footers.
#
def navbuttons(num, align = 'middle', which = 'guide'):
(hasg, hasb, hass, hasc, hasp, hasn) = getneighbors(num, which)
if which == 'background':
extension = '.shtml'
else:
extension = '.html'
curep = num
cureplong = '%03d' % (curep)
prevep = '%03d' % (curep - 1)
nextep = '%03d' % (curep + 1)
if which == 'comic' or which == 'novels':
output = """<a
href="index.html"><img
align=""" + align + """ border=0
src="/lurk/nav/dark/gu-index.gif" width=34 height=24
alt="[Index] "></a>"""
else:
output = """<a
href="../eplist.html"><img
align=""" + align + """ border=0
src="/lurk/nav/dark/gu-index.gif" width=34 height=24
alt="[Episode List] "></a>"""
if hasp:
output=output+ """<a
href=""" + '"' + prevep + extension + '"' + """><img
align=""" + align + """ border=0
src="/lurk/nav/dark/gu-prev.gif" width=33 height=24
alt="[Previous] "></a>"""
else:
output = output + """<img
align=""" + align + """ border=0
src="/lurk/nav/dark/gu-blanksmall.gif" width=33 height=24
alt="">"""
if hasn:
output=output+ """<a
href=""" + '"' + nextep + extension + '"' + """><img
align=""" + align + """ border=0
src="/lurk/nav/dark/gu-next.gif" width=33 height=24
alt="[Next] "></a>"""
else:
output = output + """<img
align=""" + align + """ border=0
src="/lurk/nav/dark/gu-blanksmall.gif" width=33 height=24
alt="">"""
return output
#
# Devise a page header based on the current episode number and which page
# we're making.
#
def pageheader(num, page, do_jpeg = 0):
(hasg, hasb, hass, hasc, hasp, hasn) = getneighbors(num, page)
curep = num
cureplong = '%03d' % (curep)
prevep = '%03d' % (curep - 1)
nextep = '%03d' % (curep + 1)
if page == 'comic':
titleprefix = 'c'
titlewidth = 422
picname = 'comic/' + cureplong
elif page == 'novels':
titleprefix = 'n'
titlewidth = 427
picname = 'novels/' + cureplong
else:
titleprefix = 'e'
titlewidth = 340
pix = open('../internal/picnames', 'r')
for i in range(0, curep + 1):
picname = pix.readline()[:-1]
pix.close()
if picname == '':
picname = 'XXX'
if picname == 'none':
picname = 'tv-blank'
else:
picname = cureplong + '/' + picname
curep = `curep`
picwidth = 500 - titlewidth
output = """
<p align=center nowrap><nobr><img
align=middle border=0 usemap="#titlebar"
src="/lurk/nav/titlebar.gif" width=500 height=32
alt="[Home]">
<br>"""
if page == 'comic' or page == 'novels':
output = output + '<a href="/lurk/gif/' + picname + '.jpg">'
if do_jpeg and picname != 'tv-blank':
extension = '.jpeg'
else:
extension = '.gif'
output = output + """<img
align=middle width=""" + `picwidth` + """ height=120 border=0
src="/lurk/gif/""" + picname + extension + '" alt="">'
if page == 'comic' or page == 'novels':
output = output + '</a>'
output = output + """<img
align=middle width=""" + `titlewidth` + """ height=120
src="/lurk/gif/titles/""" + titleprefix + curep + """.gif"
alt="">
<br>"""
if page == 'guide' or page == 'novels' or page == 'comic':
output = output + """<img
align=middle border=0
src="/lurk/nav/lit/gu-guide.gif" width=100 height=24
alt=" ### GUIDE ### ">"""
else:
if hasg:
output = output + """<a
href="../guide/""" +cureplong+ """.html"><img
align=middle border=0
src="/lurk/nav/dark/gu-guide.gif" width=100 height=24
alt="[Guide] "></a>"""
else:
output = output + """<img
align=middle border=0
src="/lurk/nav/dark/gu-blank.gif" width=100 height=24
alt="">"""
if page == 'background':
output = output + """<img
align=middle border=0
src="/lurk/nav/lit/gu-background.gif" width=100 height=24
alt=" ### BACKGROUND ### ">"""
else:
if hasb:
output=output+ """<a
href="../background/""" + cureplong + """.shtml"><img
align=middle border=0
src="/lurk/nav/dark/gu-background.gif" width=100 height=24
alt="[Background] "></a>"""
else:
output = output + """<img
align=middle border=0
src="/lurk/nav/dark/gu-blank.gif" width=100 height=24
alt="">"""
if page == 'synopsis':
output = output + """<img
align=middle border=0
src="/lurk/nav/lit/gu-synopsis.gif" width=100 height=24
alt=" ### SYNOPSIS ### ">"""
else:
if hass:
output=output + """<a
href="../synops/""" +cureplong+ """.html"><img
align=middle border=0
src="/lurk/nav/dark/gu-synopsis.gif" width=100 height=24
alt="[Synopsis] "></a>"""
else:
output = output + """<img
align=middle border=0
src="/lurk/nav/dark/gu-blank.gif" width=100 height=24
alt="">"""
if page == 'credits':
output = output + """<img
align=middle border=0
src="/lurk/nav/lit/gu-credits.gif" width=100 height=24
alt=" ### CREDITS ### ">"""
else:
if hasc:
output=output+ """<a
href="../credits/""" +cureplong+ """.html"><img
align=middle border=0
src="/lurk/nav/dark/gu-credits.gif" width=100 height=24
alt="[Credits] "></a>"""
else:
output = output + """<img
align=middle border=0
src="/lurk/nav/dark/gu-blank.gif" width=100 height=24
alt="">"""
output = output + navbuttons(num, 'middle', page) + "\n</nobr>\n"
return output
def pagefooter(num, page = 'guide'):
output = """<p nowrap>
<nobr><a href="/lurk/lurker.html"><img
align=bottom border=0
width=64 height=24 src="/lurk/nav/foot-station.gif"
alt="[Home] "></a><a
href="#"><img
align=bottom border=0
width=72 height=13 src="/lurk/nav/foot-pagetop.gif"
alt="[Top] "></a><a
href="mailto:koreth+lgfeedback@midwinter.com"><img
align=bottom border=0
width=80 height=13 src="/lurk/nav/foot-comments.gif"
alt="[Comments] "></a><img
align=bottom
width=184 height=13 src="/lurk/nav/foot-bare-short.gif"
alt="">"""
output = output + navbuttons(num, 'bottom', page) + '\n</nobr>\n'
return output
#
# Given an image path, generate the full path to the corresponding file.
#
def normalize_path(path):
if path[0:6] == '/lurk/':
curdir = os.getcwd()
if (not os.path.exists(curdir + '/lurker.html')):
curdir = curdir + '/..'
path = os.path.abspath(curdir) + path[5:]
elif path[0] == '/':
path = '/home/midwinter/docroot' + path
return path
#
# Check all the images in a document and substitute JPEGs for GIFs where
# JPEGs exist.
#
def mungeimages(text, do_jpeg):
#
# GIF is what's in the source, so do nothing if that's the output
#
if do_jpeg == 0:
return text
result = ''
for chunk in string.splitfields(text, '.gif'):
filepos = string.rfind(chunk, '"')
if filepos < 0:
result = result + chunk
break
path = normalize_path(chunk[filepos + 1:])
if exists(path + '.jpeg'):
extension = '.jpeg'
elif exists(path + '.gif'):
extension = '.gif'
else:
extension = ''
result = result + chunk + extension
return result
#
# Returns the <head> section for a page, including image maps.
#
def head(title):
result = "<html><head>\n<title>" + title + "</title>\n"
mapsfile = open('../maps/maps.html', 'r')
result = result + mapsfile.read()
mapsfile.close()
result = result + "</head>\n"
return result