added permalinks

master
endorphant 2016-05-03 13:14:53 -04:00
parent 9b8d321812
commit 0ed42304c8
4 changed files with 3195 additions and 13 deletions

View File

@ -46,10 +46,10 @@ def load_files():
global FILES global FILES
FILES = [] FILES = []
for file in os.listdir(DATA): for filename in os.listdir(DATA):
filename = os.path.join(DATA, file) filename = os.path.join(DATA, filename)
if os.path.isfile(filename) and os.path.splitext(filename)[1] == ".txt": if os.path.isfile(filename) and os.path.splitext(filename)[1] == ".txt":
FILES.append(file) FILES.append(filename)
FILES.sort() FILES.sort()
FILES.reverse() FILES.reverse()
@ -67,8 +67,9 @@ def write(outurl="default.html"):
outfile.write("\n") outfile.write("\n")
for file in FILES: for filename in FILES:
for line in write_entry(file): write_page(filename)
for line in write_entry(filename):
outfile.write(line) outfile.write(line)
outfile.write("\n") outfile.write("\n")
@ -80,10 +81,35 @@ def write(outurl="default.html"):
return os.path.join(LIVE+USER,os.path.basename(os.path.realpath(WWW)),outurl) return os.path.join(LIVE+USER,os.path.basename(os.path.realpath(WWW)),outurl)
def write_entry(file): def write_page(filename):
# makes a single permalink page
outurl = os.path.join(WWW, "".join(parse_date(filename))+".html")
outfile = open(outurl, "w")
outfile.write("<!--generated by the tilde.town blogging platform on "+time.strftime("%d %B %y")+"\nhttp://tilde.town/~endorphant/ttbp/-->\n\n")
for line in HEADER:
outfile.write(line)
outfile.write("\n")
for line in write_entry(filename):
outfile.write(line)
outfile.write("\n")
for line in FOOTER:
outfile.write(line)
outfile.close()
return outurl
def write_entry(filename):
# dump given file into entry format, return as list of strings # dump given file into entry format, return as list of strings
date = parse_date(file) date = parse_date(filename)
entry = [ entry = [
"\t\t<p><a name=\""+date[0]+date[1]+date[2]+"\"></a><br /><br /></p>\n", "\t\t<p><a name=\""+date[0]+date[1]+date[2]+"\"></a><br /><br /></p>\n",
@ -93,7 +119,7 @@ def write_entry(file):
] ]
raw = [] raw = []
rawfile = open(os.path.join(DATA, file), "r") rawfile = open(os.path.join(DATA, filename), "r")
for line in rawfile: for line in rawfile:
raw.append(line) raw.append(line)
@ -104,7 +130,9 @@ def write_entry(file):
if line == "\n": if line == "\n":
entry.append("</p>\n\t\t\t<p>") entry.append("</p>\n\t\t\t<p>")
entry.append("</p>\n\t\t</div>\n") entry.append("</p>\n")
entry.append("\t\t\t<p style=\"font-size:.6em; font-color:#808080; text-align: right;\"><a href=\""+"".join(date)+".html\">permalink</a></p>\n")
entry.append("\n\t\t</div>\n")
return entry return entry

3130
bin/inflect.py 100644

File diff suppressed because it is too large Load Diff

View File

@ -9,12 +9,14 @@ import json
import core import core
import chatter import chatter
import inflect
## system globals ## system globals
SOURCE = os.path.join("/home", "endorphant", "projects", "ttbp", "bin") SOURCE = os.path.join("/home", "endorphant", "projects", "ttbp", "bin")
LIVE = "http://tilde.town/~" LIVE = "http://tilde.town/~"
FEEDBACK = os.path.join("/home", "endorphant", "ttbp-mail") FEEDBACK = os.path.join("/home", "endorphant", "ttbp-mail")
USERFILE = os.path.join("/home", "endorphant", "projects", "ttbp", "users.txt") USERFILE = os.path.join("/home", "endorphant", "projects", "ttbp", "users.txt")
p = inflect.engine()
## user globals ## user globals
USER = os.path.basename(os.path.expanduser("~")) USER = os.path.basename(os.path.expanduser("~"))
@ -126,7 +128,7 @@ def gen_header():
header.append("\n\t</head>") header.append("\n\t</head>")
header.append("\n\t<body>") header.append("\n\t<body>")
header.append("\n\t\t<div id=\"meta\">") header.append("\n\t\t<div id=\"meta\">")
header.append("\n\t\t\t<h1><a href=\"#\">~"+USER+"</a>@<a href=\"/~endorphant/ttbp\">TTBP</a></h1>") header.append("\n\t\t\t<h1><a href=\"index.html#\">~"+USER+"</a>@<a href=\"/~endorphant/ttbp\">TTBP</a></h1>")
header.append("\n\t\t</div>\n") header.append("\n\t\t</div>\n")
header.append("\n\t\t<!---put your custom html here-->\n\n\n\n") header.append("\n\t\t<!---put your custom html here-->\n\n\n\n")
header.append("\n\t\t<!---don't put anything after this line-->\n") header.append("\n\t\t<!---don't put anything after this line-->\n")
@ -243,6 +245,9 @@ def main_menu():
feedback_menu() feedback_menu()
elif choice == '4': elif choice == '4':
redraw(DUST) redraw(DUST)
elif choice == 'secret':
redraw("here are your recorded feelings, listed by date:\n\n")
view_entries()
elif choice == "none": elif choice == "none":
return stop() return stop()
else: else:
@ -257,7 +262,7 @@ def feedback_menu():
choice = raw_input("\npick a category for your feedback: ") choice = raw_input("\npick a category for your feedback: ")
cat = "" cat = ""
if choice in ['0', '1', '2']: if choice in ['0', '1', '2', '3']:
cat = SUBJECTS[int(choice)] cat = SUBJECTS[int(choice)]
raw_input("\ncomposing a "+cat+" to ~endorphant.\n\npress <enter> to open an external text editor. mail will be sent once you save and quit.\n") raw_input("\ncomposing a "+cat+" to ~endorphant.\n\npress <enter> to open an external text editor. mail will be sent once you save and quit.\n")
redraw(send_feedback(cat)) redraw(send_feedback(cat))
@ -296,6 +301,7 @@ def send_feedback(subject="none", mailbox=os.path.join(FEEDBACK, USER+"-"+time.s
return "mail sent. thanks for writing! i'll try to respond to you soon." return "mail sent. thanks for writing! i'll try to respond to you soon."
def view_neighbors(): def view_neighbors():
# TODO: rewrite this so you don't have to traverse a second list??
users = [] users = []
@ -306,12 +312,27 @@ def view_neighbors():
for user in users: for user in users:
userRC = json.load(open(os.path.join("/home", user, ".ttbp", "config", "ttbprc"))) userRC = json.load(open(os.path.join("/home", user, ".ttbp", "config", "ttbprc")))
url = LIVE+user+"/"+userRC["publish dir"] url = LIVE+user+"/"+userRC["publish dir"]
print("\t~"+user+"\t at "+url) count = 0
for filename in os.listdir(os.path.join("/home", user, ".ttbp", "entries")):
if os.path.splitext(filename)[1] == ".txt" and len(os.path.splitext(filename)[0]) == 8:
count += 1
user = "~"+user
if len(user) < 8:
user += "\t"
print("\t"+user+"\t at "+url+"\t("+p.no("entry", count)+")")
raw_input("\n\npress <enter> to go back home.\n\n") raw_input("\n\npress <enter> to go back home.\n\n")
redraw() redraw()
return return
def view_entries():
entries = []
raw_input("\n\npress <ctrl-c> to go back home.\n\n")
redraw()
return
##### #####
start() start()

View File

@ -1,7 +1,10 @@
TO-DO: TO-DO:
(goals for stable release) (goals for stable release)
-make individual permalink pages
-add credits page -add credits page
-browse own entries
-show most recent global entries
-filename validator (only process entries if they're
. ttbp/entries/YYMMDD.txt")
------ ------