forked from endorphant/ttbp
Merge branch 'master' of https://github.com/modgethanc/ttbp
commit
0241ff1eaa
|
@ -1,56 +0,0 @@
|
||||||
TTBP MANIFESTO
|
|
||||||
--------------
|
|
||||||
ttbp: tilde town blogging platform; also known as THE FEELS ENGINE
|
|
||||||
|
|
||||||
a history:
|
|
||||||
|
|
||||||
in april 2016, i read a short rant by ~minerobber lamenting the lack of cli
|
|
||||||
blogging software. this struck a chord with me; years ago, i kludged myself a
|
|
||||||
perl script that generated an html blog, complete with an rss feed and a
|
|
||||||
crude tagging system. i've known other people who have done the same. what's
|
|
||||||
missing, though?
|
|
||||||
|
|
||||||
years ago, i peeled away from livejournal and related web-based blogging
|
|
||||||
networks; partially as a participant in the general attrition, and partially
|
|
||||||
to escape some personal bad feelings that i coudn't quite put a finger on.
|
|
||||||
this is why i started writing on an independent, solo blog; i still had the
|
|
||||||
urge to publicly share some of my journaling. but it felt lonely.
|
|
||||||
|
|
||||||
this is what happens when i log in to a unix box: i reattach my screens, and
|
|
||||||
flip through irc to catch up on chat, and alpine to check my mail. in the
|
|
||||||
past, on non-tilde machines, i've fired up zephyr to message friends. i git
|
|
||||||
pull my repos for updates. i check the nethack leaderboard. these are all
|
|
||||||
cli-based actions, but they are also based on the idea that when i wasn't
|
|
||||||
looking, things changed. those things changed because other people performed
|
|
||||||
some actions of their own. i catch up on these updates with the implicit
|
|
||||||
acknowledgement that other humans exist and do things in my environment.
|
|
||||||
|
|
||||||
this is what i realized i missed from running my own clumsy blog scripts. i
|
|
||||||
had ways to chat, mail, and collaborate on text-based projects through the
|
|
||||||
terminal, but nothing that served as a central hub for journal-writing.
|
|
||||||
|
|
||||||
i didn't think of myself as a strong programmer or a skilled developer, but i
|
|
||||||
had a few ideas that i thought i could try out. on april 29th, 2016, i put
|
|
||||||
out a general call in irc for people to run ~endorphant/bin/ttbp; ~sl2c
|
|
||||||
confirmed that it worked. on may 2nd, 2016, i opened it up again, and others
|
|
||||||
jumped in; ~sanqui, ~karlen, ~varscite, ~vilmibm, ~insom, ~marcus, ~nossidge,
|
|
||||||
~jumblesale, ~krowbar. others trickled in; people sent me crash reports,
|
|
||||||
wrote to me about mysterious behaviors, lamented about broken settings when i
|
|
||||||
pushed code updates, shared with me how this fulfilled their nostalgia for an
|
|
||||||
experience that i personally never had, complained about lacking features
|
|
||||||
they wanted, yelled with delight about the interface, filled it with feelings
|
|
||||||
they didn't know how to express.
|
|
||||||
|
|
||||||
it's now december 4th, 2016, and there are 42 users on ttbp. some of them
|
|
||||||
have never posted, many of them i've never spoken to. there are 581 entries,
|
|
||||||
which is an average of almost 14 entries per user, and a little over two and
|
|
||||||
a half entries per day. it now takes 11 seconds to load the global feed
|
|
||||||
because i implemented it sloppily, thinking i'd handle scaling issues later.
|
|
||||||
|
|
||||||
i've loved every second of this. i'm humbled and pleased and a little
|
|
||||||
terrified at the trust and appreciation and responsibility that's been given
|
|
||||||
to me in the past seven months.
|
|
||||||
|
|
||||||
the backend:
|
|
||||||
lessons:
|
|
||||||
future work:
|
|
|
@ -76,13 +76,13 @@ NOPUB = os.path.join(USER_CONFIG, "nopub")
|
||||||
## UI
|
## UI
|
||||||
|
|
||||||
BANNER = '''
|
BANNER = '''
|
||||||
__________________________________________________________
|
___________________________________________________________
|
||||||
| |
|
| |
|
||||||
| the tilde.town |
|
| the tilde.town |
|
||||||
| ____ ____ ____ _ ____ ____ _ _ ____ _ _ _ ____ |
|
| ____ ____ ____ _ ____ ____ _ _ ____ _ _ _ ____ |
|
||||||
| |___ |___ |___ | [__ |___ |\ | | __ | |\ | |___ |
|
| |___ |___ |___ | [__ |___ |\ | | __ | |\ | |___ |
|
||||||
| | |___ |___ |___ ___] |___ | \| |__] | | \| |___ |
|
| | |___ |___ |___ ___] |___ | \| |__] | | \| |___ |
|
||||||
| ver 0.11.0 (rainbows) |
|
| ver 0.11.1 (rainbows) |
|
||||||
|__________________________________________________________|
|
|__________________________________________________________|
|
||||||
'''.lstrip()
|
'''.lstrip()
|
||||||
|
|
||||||
|
@ -139,4 +139,11 @@ version 0.9.3 features:
|
||||||
* ~login created centralfeels, which is an opt-in collection of
|
* ~login created centralfeels, which is an opt-in collection of
|
||||||
html-published feels; create a blank file called '.centralfeels' in
|
html-published feels; create a blank file called '.centralfeels' in
|
||||||
your home directory if you'd like to be included!""",
|
your home directory if you'd like to be included!""",
|
||||||
|
"0.11.1": """
|
||||||
|
~[version 0.11.1 update]~
|
||||||
|
|
||||||
|
* a quick patch to correct a directory listing error, nothing too
|
||||||
|
exciting
|
||||||
|
* general PSA: feel free to use the github repo for bugs/feature requests:
|
||||||
|
https://github.com/modgethanc/ttbp/issues""",
|
||||||
}
|
}
|
||||||
|
|
28
ttbp/ttbp.py
28
ttbp/ttbp.py
|
@ -49,7 +49,7 @@ from . import chatter
|
||||||
from . import gopher
|
from . import gopher
|
||||||
from . import util
|
from . import util
|
||||||
|
|
||||||
__version__ = "0.11.0"
|
__version__ = "0.11.1"
|
||||||
__author__ = "endorphant <endorphant@tilde.town)"
|
__author__ = "endorphant <endorphant@tilde.town)"
|
||||||
|
|
||||||
p = inflect.engine()
|
p = inflect.engine()
|
||||||
|
@ -216,8 +216,6 @@ def check_init():
|
||||||
* checks for last run version
|
* checks for last run version
|
||||||
'''
|
'''
|
||||||
|
|
||||||
global SETTINGS
|
|
||||||
|
|
||||||
print("\n\n")
|
print("\n\n")
|
||||||
if os.path.exists(os.path.join(os.path.expanduser("~"),".ttbp")):
|
if os.path.exists(os.path.join(os.path.expanduser("~"),".ttbp")):
|
||||||
if config.USER == "endorphant":
|
if config.USER == "endorphant":
|
||||||
|
@ -229,10 +227,10 @@ def check_init():
|
||||||
## ttbp env validation
|
## ttbp env validation
|
||||||
if not user_up_to_date():
|
if not user_up_to_date():
|
||||||
update_user_version()
|
update_user_version()
|
||||||
elif not valid_setup():
|
|
||||||
|
if not valid_setup():
|
||||||
setup_repair()
|
setup_repair()
|
||||||
else:
|
else:
|
||||||
|
|
||||||
raw_input("press <enter> to explore your feels.\n\n")
|
raw_input("press <enter> to explore your feels.\n\n")
|
||||||
|
|
||||||
core.load(SETTINGS)
|
core.load(SETTINGS)
|
||||||
|
@ -636,7 +634,10 @@ def view_neighbors(users, prompt):
|
||||||
url = config.LIVE+user+"/"+userRC.get("publish dir")
|
url = config.LIVE+user+"/"+userRC.get("publish dir")
|
||||||
|
|
||||||
## find last entry
|
## find last entry
|
||||||
files = os.listdir(os.path.join("/home", user, ".ttbp", "entries"))
|
try:
|
||||||
|
files = os.listdir(os.path.join("/home", user, ".ttbp", "entries"))
|
||||||
|
except OSError:
|
||||||
|
files = []
|
||||||
files.sort()
|
files.sort()
|
||||||
lastfile = ""
|
lastfile = ""
|
||||||
for filename in files:
|
for filename in files:
|
||||||
|
@ -917,7 +918,10 @@ def view_feed():
|
||||||
|
|
||||||
for townie in core.find_ttbps():
|
for townie in core.find_ttbps():
|
||||||
entryDir = os.path.join("/home", townie, ".ttbp", "entries")
|
entryDir = os.path.join("/home", townie, ".ttbp", "entries")
|
||||||
filenames = os.listdir(entryDir)
|
try:
|
||||||
|
filenames = os.listdir(entryDir)
|
||||||
|
except OSError:
|
||||||
|
filenames = []
|
||||||
|
|
||||||
for entry in filenames:
|
for entry in filenames:
|
||||||
## hardcoded display cutoff at 30 days
|
## hardcoded display cutoff at 30 days
|
||||||
|
@ -1267,19 +1271,25 @@ you're all good to go, """+chatter.say("friend")+"""! please contact ~endorphant
|
||||||
something strange happened to you during this update.
|
something strange happened to you during this update.
|
||||||
""")
|
""")
|
||||||
|
|
||||||
if z < 1 or y < 10:
|
if y < 10:
|
||||||
# version 0.10.1 patch notes
|
# version 0.10.1 patch notes
|
||||||
print(config.UPDATES["0.10.1"])
|
print(config.UPDATES["0.10.1"])
|
||||||
|
|
||||||
if y < 11:
|
if y < 11:
|
||||||
# version 0.11.1 patch notes
|
# version 0.11.0 patch notes
|
||||||
print(config.UPDATES["0.11.0"])
|
print(config.UPDATES["0.11.0"])
|
||||||
|
|
||||||
|
if y < 11 or z < 1:
|
||||||
|
# version 0.11.1 patch notes
|
||||||
|
print(config.UPDATES["0.11.1"])
|
||||||
|
|
||||||
confirm = ""
|
confirm = ""
|
||||||
|
|
||||||
while confirm not in ("x", "<x>", "X", "<X>"):
|
while confirm not in ("x", "<x>", "X", "<X>"):
|
||||||
confirm = raw_input("\nplease type <x> when you've finished reading about the updates! ")
|
confirm = raw_input("\nplease type <x> when you've finished reading about the updates! ")
|
||||||
|
|
||||||
|
print("\n\n")
|
||||||
|
|
||||||
open(versionFile, "w").write(__version__)
|
open(versionFile, "w").write(__version__)
|
||||||
|
|
||||||
#####
|
#####
|
||||||
|
|
Loading…
Reference in New Issue