diff options
Diffstat (limited to 'blogthon.cgi')
-rwxr-xr-x | blogthon.cgi | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/blogthon.cgi b/blogthon.cgi new file mode 100755 index 0000000..f85eb01 --- /dev/null +++ b/blogthon.cgi @@ -0,0 +1,137 @@ +#!/usr/bin/python + +# This program is free software. It comes without any warranty, to +# the extent permitted by applicable law. You can redistribute it +# and/or modify it under the terms of the Do What The Fuck You Want +# To Public License, Version 2, as published by Sam Hocevar. See +# http://sam.zoy.org/wtfpl/COPYING for more details. + +import cgi +import os +import time +import glob +import re +import ConfigParser + +configuration = ConfigParser.ConfigParser() +configuration.read('configuration') + +blog_title = configuration.get('personal', 'blog_title') +keywords = configuration.get('personal', 'keywords') +entries_dir = configuration.get('personal', 'entries_dir') +entries_suffix = configuration.get('personal', 'entries_suffix') +staticpages_dir = configuration.get('personal', 'staticpages_dir') +style = configuration.get('look', 'style') +entries_per_page = configuration.getint('look', 'entries_per_page') +monthlist = configuration.get('look', 'monthlist') +staticpages = configuration.get('look', 'staticpages') +permalinks = configuration.get('look', 'permalinks') +newest_first = configuration.get('look', 'newest_first') + +action = cgi.FieldStorage() +month_display = action.getvalue('m') +post_display = action.getvalue('p') +static_display = action.getvalue('s') +site_display = action.getvalue('i') +if not month_display: month_display = "" +if not post_display: post_display = "" +if not static_display: static_display = "" +if not site_display: site_display = "" + +print 'Content-type: text/html\n' +print '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"' +print ' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">' +print '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">' +print ' <head>' +print ' <title>' + blog_title + '</title>' +print ' <meta http-equiv="content-type" content="text/html; charset=utf-8" />' +print ' <meta name="keywords" content="' + keywords + '" />' +print ' <meta name="description" content="' + blog_title + '" />' +print ' <link rel="stylesheet" type="text/css" href="styles/' + style + '" />' +print ' </head>' +print ' <body>' +print ' <div class="title"><a href="?" class="title">' + blog_title + '</a></div>' + +entries = [] +entries_list = glob.glob(entries_dir + '*.' + entries_suffix) + +for entry in entries_list: + timestamp = os.stat(entry) + timestamp = time.localtime(timestamp[8]) + entry = timestamp, entry + entries.append(entry) + +if newest_first: + entries.sort(reverse=True) +else: + entries.sort() + +print ' <div class="sidebar">' + +if staticpages: + staticpages = [] + staticpages_list = glob.glob(staticpages_dir + '*') + staticpages_list.sort() + print ' <div class="staticpages">' + for staticpage in staticpages_list: + title = re.sub('\w+?\/\d+?-', '', staticpage) + link = re.sub('\w+?\/', '', staticpage) + print ' <a href="?s=' + link + '">' + title + '</a> <br />' + if monthlist and staticpages_list != []: print ' <br />' + print ' </div>' + +if monthlist: + olddate = "" + print ' <div class="monthlist">' + for entry in entries: + date = time.strftime("%m%Y", entry[0]) + date_display = time.strftime("%h %Y", entry[0]) + if not olddate == date: + print ' <a href="?m=' + date + '">' + date_display + '</a><br />' + olddate = date + print ' </div>' + +print ' </div>' +print ' <div class="content">' + +if static_display != "": # Show Staticpage + content = open(staticpages_dir + static_display, "r") + print ' <div class="entrytitle">' + re.sub('\d+?-', '', static_display) + '</div>' + print ' <div class="entry"><p>' + for line in content: + print ' ' + line.strip() + '<br />' + print ' </p></div>' + content.close() +else: # Show regular entry + entry_counter = 0 + for entry in entries: + date = time.strftime("%c", entry[0]) + date_to_compare = time.strftime("%m%Y", entry[0]) # Needed for permalinks + entry = entry[1] + title = entry.replace('entries/', '', 1) + title = title.replace('.txt', '') + entry_counter += 1 + + if month_display == date_to_compare or not month_display: + if post_display == title or not post_display: + if entry_counter <= entries_per_page: + content = open(entry, "r") + if permalinks: + print ' <div class="entrytitle"><a href="?p=' + title + '" class="entrytitle">' + title + ' <small>(' + date + ')</small></a></div>' + else: + print ' <div class="entrytitle">' + title + ' <small>(' + date + ')</small></div>' + print ' <div class="entry"><p>' + for line in content: + print ' ' + line.strip() + '<br />' + print ' </p></div>' + print ' <br /><br />' + content.close() + + if entry_counter > entries_per_page: # Display pagelist + print ' <div class="entry"><a href=?>[previous page]</a> <a href=?>[next page]</a></div>' + +print ' </div>' +print ' </body>' +print '</html>' + +# vim: set tw=0 ts=4: |