#/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()