#/usr/bin/python
from config import directory
import os, re, time
splitExcerpt=re.compile('(?:
(?:(.*?)
)?\s*)?(.*)',re.S)
class post:
def __init__(self, entry, flavor="html"):
self._entry = entry
self._modified = None
self._title = None
self._flavor = flavor
self._updated = None
self._excerpt = None
self._body = None
if entry and entry.find('/')>=0 and not entry.isdigit():
self._entry = self.find(entry)
if entry.split('/')[-1].find('.')>=0:
(self._entry,self._flavor)=entry.split('/')[-1].split('.',1)
def find(self,entry):
try:
start=map(int,filter(lambda x:x.isdigit(), entry.split('/'))[0:3])
finish=start[:]
finish[len(start)-1] += 1
start=time.mktime((start+[0]*9)[0:9])-3600
finish=time.mktime((finish+[0]*9)[0:9])
slug=entry.split('/')[-1].lower()
for name in os.listdir(directory.data):
if name.endswith(".txt"):
mtime=os.stat(directory.data+name).st_mtime
if mtime>=start and mtime=0 and self._entry.split('-')[-1].isdigit():
return directory.data + self._entry + ".cmt"
return directory.data + self._entry + ".txt"
def modified(self):
if self._entry and not self._modified:
self._modified = os.stat(self.filepath()).st_mtime
return self._modified
def slug(self):
if not self._entry: return
if not self.title() or not self._entry.isdigit():
return self._entry.replace("_","-")
title=re.sub('\?\w+;','',self._title.replace("'",""))
title=re.sub('<.*?>','',title)
alnum = lambda c: c.isalnum() and c or ' '
return '-'.join(''.join([alnum(c) for c in title]).split())
def title(self):
if self._entry and not self._title:
self._title=open(self.filepath()).readline().strip()
return self._title
def link(self):
if not self._entry: return
if not self._title: self.title()
if self._flavor<>'html' or not self._title:
return self._entry + "." + self._flavor
path=time.strftime("%Y/%m/%d/",time.localtime(self.modified()))
return path+self.slug()
if __name__ == '__main__':
# assert post('2003/09/04/Nonce.rss').link() == '1585.rss'
assert post('flamebait.html').slug() == 'flamebait'
assert post('flamebait').slug() == 'flamebait'
assert post('1585.html').slug() == 'Nonce'
assert post('2003/09/04/Nonce').id() == '1585'
assert post('2003/09/Nonce').id() == '1585'
assert post('2003/Nonce').id() == '1585'
assert post('2436.html').link() == '2006/11/10/Thats-Not-Write'
import sys
for name in sys.argv[1:]:
p=post(name)
print p.link()
print p._entry
print p.filepath()