incremented to v.5, adding entry browsing
parent
4622af4683
commit
4ff3b2b65a
|
@ -1,5 +1,5 @@
|
||||||
==============
|
==============
|
||||||
| TILDE TOWN |
|
| TILDE TOWN |
|
||||||
| BLOGGING | ver 0.4 (kinda unstable)
|
| BLOGGING | ver 0.5 (fairly unstable)
|
||||||
| PLATFORM | ~endorphant/projects/ttbp/changelog.txt
|
| PLATFORM | ~endorphant/projects/ttbp/changelog.txt
|
||||||
==============
|
==============
|
||||||
|
|
|
@ -154,17 +154,20 @@ def meta(entries = FILES):
|
||||||
# [2] wc -w
|
# [2] wc -w
|
||||||
# [3] timestamp "DD month YYYY at HH:MM"
|
# [3] timestamp "DD month YYYY at HH:MM"
|
||||||
# [4] entry date YYYY-MM-DD
|
# [4] entry date YYYY-MM-DD
|
||||||
|
# [5] author
|
||||||
# sorted in reverse date order by [4]
|
# sorted in reverse date order by [4]
|
||||||
|
|
||||||
meta = []
|
meta = []
|
||||||
|
|
||||||
for filename in FILES:
|
for filename in entries:
|
||||||
ctime = os.path.getctime(filename)
|
ctime = os.path.getctime(filename)
|
||||||
wc = subprocess.check_output(["wc","-w",filename]).split()[0]
|
wc = subprocess.check_output(["wc","-w",filename]).split()[0]
|
||||||
timestamp = time.strftime("%Y-%m-%d %H:%M", time.localtime(ctime))
|
timestamp = time.strftime("%Y-%m-%d %H:%M", time.localtime(ctime))
|
||||||
date = "-".join(parse_date(filename))
|
date = "-".join(parse_date(filename))
|
||||||
|
author = os.path.split(os.path.split(os.path.split(os.path.split(filename)[0])[0])[0])[1]
|
||||||
|
|
||||||
meta.append([filename, ctime, wc, timestamp, date])
|
|
||||||
|
meta.append([filename, ctime, wc, timestamp, date, author])
|
||||||
|
|
||||||
meta.sort(key = lambda filename:filename[4])
|
meta.sort(key = lambda filename:filename[4])
|
||||||
meta.reverse()
|
meta.reverse()
|
||||||
|
|
117
bin/ttbp.py
117
bin/ttbp.py
|
@ -210,7 +210,9 @@ def main_menu():
|
||||||
#redraw()
|
#redraw()
|
||||||
menuOptions = [
|
menuOptions = [
|
||||||
"record your feels",
|
"record your feels",
|
||||||
|
"review your feels",
|
||||||
"check out your neighbors",
|
"check out your neighbors",
|
||||||
|
"browse global feels",
|
||||||
"change your settings",
|
"change your settings",
|
||||||
"send some feedback",
|
"send some feedback",
|
||||||
"(wip) see credits"]
|
"(wip) see credits"]
|
||||||
|
@ -230,14 +232,16 @@ def main_menu():
|
||||||
today = time.strftime("%Y%m%d")
|
today = time.strftime("%Y%m%d")
|
||||||
write_entry(os.path.join(DATA, today+".txt"))
|
write_entry(os.path.join(DATA, today+".txt"))
|
||||||
elif choice == '1':
|
elif choice == '1':
|
||||||
users = []
|
redraw("here are your recorded feels, listed by date:\n\n")
|
||||||
|
view_own()
|
||||||
for townie in os.listdir("/home"):
|
elif choice == '2':
|
||||||
if os.path.exists(os.path.join("/home", townie, ".ttbp", "config", "ttbprc")):
|
users = find_ttbps()
|
||||||
users.append(townie)
|
|
||||||
redraw("the following "+p.no("user", len(users))+" "+p.plural("is", len(users))+" recording feels on ttbp:\n\n")
|
redraw("the following "+p.no("user", len(users))+" "+p.plural("is", len(users))+" recording feels on ttbp:\n\n")
|
||||||
view_neighbors(users)
|
view_neighbors(users)
|
||||||
elif choice == '2':
|
elif choice == '3':
|
||||||
|
redraw("now viewing most recent entries\n\n")
|
||||||
|
view_feed()
|
||||||
|
elif choice == '4':
|
||||||
pretty_settings = "\n\ttext editor:\t" +SETTINGS["editor"]
|
pretty_settings = "\n\ttext editor:\t" +SETTINGS["editor"]
|
||||||
pretty_settings += "\n\tpublish dir:\t" +os.path.join(PUBLIC, SETTINGS["publish dir"])
|
pretty_settings += "\n\tpublish dir:\t" +os.path.join(PUBLIC, SETTINGS["publish dir"])
|
||||||
|
|
||||||
|
@ -245,14 +249,11 @@ def main_menu():
|
||||||
setup()
|
setup()
|
||||||
raw_input("\nyou're all good to go, "+chatter.say("friend")+"! hit <enter> to continue.\n\n")
|
raw_input("\nyou're all good to go, "+chatter.say("friend")+"! hit <enter> to continue.\n\n")
|
||||||
redraw()
|
redraw()
|
||||||
elif choice == '3':
|
elif choice == '5':
|
||||||
redraw()
|
redraw()
|
||||||
feedback_menu()
|
feedback_menu()
|
||||||
elif choice == '4':
|
elif choice == '6':
|
||||||
redraw(DUST)
|
redraw(DUST)
|
||||||
elif choice == 'secret':
|
|
||||||
redraw("here are your recorded feels, listed by date:\n\n")
|
|
||||||
view_entries()
|
|
||||||
elif choice == "none":
|
elif choice == "none":
|
||||||
return stop()
|
return stop()
|
||||||
else:
|
else:
|
||||||
|
@ -332,19 +333,105 @@ def view_neighbors(users):
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
def view_entries(entryDir=DATA):
|
def view_own():
|
||||||
|
|
||||||
|
filenames = []
|
||||||
|
|
||||||
|
for entry in os.listdir(DATA):
|
||||||
|
filenames.append(os.path.join(DATA, entry))
|
||||||
|
metas = core.meta(filenames)
|
||||||
|
|
||||||
entries = []
|
entries = []
|
||||||
|
for entry in metas:
|
||||||
|
#print(entry)
|
||||||
|
entries.append(""+entry[4]+" ("+p.no("word", entry[2])+") ")
|
||||||
|
|
||||||
for entry in core.meta():
|
view_entries(metas, entries, "here are your recorded feels, listed by date: \n\n")
|
||||||
entries.append(entry[4]+" ("+p.no("word", entry[2])+") ")
|
redraw()
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
def view_entries(metas, entries, prompt):
|
||||||
|
|
||||||
print_menu(entries)
|
print_menu(entries)
|
||||||
|
|
||||||
choice = raw_input("\n\npick an entry to read, or press <ctrl-c> to go back home.\n\n")
|
choice = list_select(entries, "pick an entry from the list, or <ctrl-c> to go home: ")
|
||||||
|
|
||||||
|
redraw("now reading ~"+metas[choice][5]+"'s feels on "+metas[choice][4]+"\n> press <q> to return to feels list.\n\n")
|
||||||
|
|
||||||
|
show_entry(metas[choice][0])
|
||||||
|
#redraw("here are your recorded feels, listed by date:\n\n")
|
||||||
|
redraw(prompt)
|
||||||
|
|
||||||
|
return view_entries(metas, entries, prompt)
|
||||||
|
|
||||||
|
def show_entry(filename):
|
||||||
|
|
||||||
|
subprocess.call(["less", filename])
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
def view_feed():
|
||||||
|
|
||||||
|
feedList = []
|
||||||
|
|
||||||
|
for townie in find_ttbps():
|
||||||
|
entryDir = os.path.join("/home", townie, ".ttbp", "entries")
|
||||||
|
filenames = os.listdir(entryDir)
|
||||||
|
for entry in filenames:
|
||||||
|
feedList.append(os.path.join(entryDir, entry))
|
||||||
|
|
||||||
|
metas = core.meta(feedList)
|
||||||
|
metas.sort(key = lambda entry:entry[3])
|
||||||
|
metas.reverse()
|
||||||
|
|
||||||
|
entries = []
|
||||||
|
for entry in metas[0:10]:
|
||||||
|
pad = ""
|
||||||
|
if len(entry[5]) < 8:
|
||||||
|
pad = "\t"
|
||||||
|
|
||||||
|
entries.append("~"+entry[5]+pad+"\ton "+entry[4]+" ("+p.no("word", entry[2])+") ")
|
||||||
|
|
||||||
|
#print_menu(entries)
|
||||||
|
view_entries(metas, entries, "most recent ten entries: \n\n")
|
||||||
|
|
||||||
redraw()
|
redraw()
|
||||||
|
|
||||||
return
|
return
|
||||||
#####
|
#####
|
||||||
|
|
||||||
|
def find_ttbps():
|
||||||
|
# looks for users with a valid ttbp config and returns a list of them
|
||||||
|
users = []
|
||||||
|
|
||||||
|
for townie in os.listdir("/home"):
|
||||||
|
if os.path.exists(os.path.join("/home", townie, ".ttbp", "config", "ttbprc")):
|
||||||
|
users.append(townie)
|
||||||
|
|
||||||
|
return users
|
||||||
|
|
||||||
|
def list_select(options, prompt):
|
||||||
|
# runs the prompt for the list until a valid index is imputted
|
||||||
|
|
||||||
|
ans = ""
|
||||||
|
invalid = True
|
||||||
|
|
||||||
|
while invalid:
|
||||||
|
choice = raw_input("\n\n"+prompt)
|
||||||
|
|
||||||
|
try:
|
||||||
|
ans = int(choice)
|
||||||
|
except ValueError:
|
||||||
|
choice = raw_input("\n\n"+prompt+"\n\n")
|
||||||
|
|
||||||
|
invalid = False
|
||||||
|
|
||||||
|
if ans >= len(options):
|
||||||
|
return list_select(options, prompt)
|
||||||
|
|
||||||
|
return ans
|
||||||
|
|
||||||
|
#####
|
||||||
|
|
||||||
start()
|
start()
|
||||||
|
|
|
@ -7,7 +7,7 @@ TO-DO:
|
||||||
-only count/process entries if filename is
|
-only count/process entries if filename is
|
||||||
.ttbp/entries/YYMMDD.txt"
|
.ttbp/entries/YYMMDD.txt"
|
||||||
-browse own entries
|
-browse own entries
|
||||||
-started this one, call 'secret' from ttbp,
|
-started this one, call 'beta' from ttbp to test,
|
||||||
function is view_entries() on ttbp.py
|
function is view_entries() on ttbp.py
|
||||||
-browse other blogs
|
-browse other blogs
|
||||||
-show most recent global entries
|
-show most recent global entries
|
||||||
|
@ -21,6 +21,10 @@ TO-DO:
|
||||||
|
|
||||||
CHANGELOG:
|
CHANGELOG:
|
||||||
|
|
||||||
|
ver 0.5
|
||||||
|
-added reading own entries
|
||||||
|
-added reading 10 most recent global entries
|
||||||
|
|
||||||
ver 0.4
|
ver 0.4
|
||||||
-added list of all users with a ttbp
|
-added list of all users with a ttbp
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
USER DOCS
|
||||||
|
=========
|
||||||
|
|
||||||
|
ENTRIES
|
||||||
|
-you can use html
|
||||||
|
-you can also put things between <!-- comments --> to have them show up
|
||||||
|
in the feed but not render in a browser (but people can still read
|
||||||
|
them with view-source)
|
||||||
|
|
||||||
|
PAGE LAYOUT
|
||||||
|
|
||||||
|
-to change stylesheet, edit your ~/.ttbp/www/style.css
|
||||||
|
-to change header, edit your ~/.ttbp/config/header.txt
|
||||||
|
-to change footer, edit your ~/.ttbp/config/footer.txt
|
Loading…
Reference in New Issue