""")
- for blog in blogList:
+ ## feed
+ outfile.write("""\
+
+
+
live feels-sharing:
+
""")
+ for blog in blogList:
+ outfile.write("""
+
"""+blog+"""
\
+ """)
+
+ ## footer
outfile.write("""
-
"""+blog+"""
\
- """)
+
+
+
+
+ """)
- ## footer
- outfile.write("""
-
-
-
-
-""")
-
- outfile.close()
- #subprocess.call(['chmod', 'a+w', FEED])
+ outfile.close()
+ #subprocess.call(['chmod', 'a+w', FEED])
+ except FileNotFoundError:
+ pass
## misc helpers
@@ -309,7 +312,7 @@ def meta(entries = FILES):
for filename in entries:
mtime = os.path.getmtime(filename)
try:
- wc = subprocess.check_output(["wc","-w",filename], stderr=subprocess.STDOUT).split()[0]
+ wc = int(subprocess.check_output(["wc","-w",filename], stderr=subprocess.STDOUT).split()[0])
except subprocess.CalledProcessError:
wc = "???"
timestamp = time.strftime("%Y-%m-%d at %H:%M", time.localtime(mtime))
diff --git a/ttbp/ttbp.py b/ttbp/ttbp.py
index 90d867c..ebaea39 100644
--- a/ttbp/ttbp.py
+++ b/ttbp/ttbp.py
@@ -40,6 +40,7 @@ import time
import json
from email.mime.text import MIMEText
import datetime
+from six.moves import input
import inflect
@@ -49,7 +50,7 @@ from . import chatter
from . import gopher
from . import util
-__version__ = "0.11.1"
+__version__ = "0.11.2"
__author__ = "endorphant to explore your feels.\n\n")
+ input("press to explore your feels.\n\n")
core.load(SETTINGS)
@@ -244,7 +247,7 @@ def init():
"""
try:
- raw_input("""
+ input("""
i don't recognize you, stranger. let's make friends.
press to begin, or to get out of here.""")
@@ -294,7 +297,7 @@ press to begin, or to get out of here.""")
setup()
core.load(SETTINGS)
- raw_input("\nyou're all good to go, "+chatter.say("friend")+"! hit to continue.\n\n")
+ input("\nyou're all good to go, "+chatter.say("friend")+"! hit to continue.\n\n")
return ""
def gen_header():
@@ -326,23 +329,14 @@ def gen_header():
"""
return header
-def valid_setup():
+def valid_setup(load_settings):
'''
Checks to see if user has a valid ttbp environment.
'''
- global SETTINGS
-
- if not os.path.isfile(config.TTBPRC):
+ if not load_settings:
return False
- try:
- SETTINGS = json.load(open(config.TTBPRC))
- except ValueError:
- return False
-
- core.load(SETTINGS)
-
for option in iter(DEFAULT_SETTINGS):
if option != "publish dir" and SETTINGS.get(option, None) is None:
return False
@@ -361,6 +355,24 @@ def valid_setup():
return True
+def load_user_settings():
+ """attempts to load user's ttbprc; returns settings dict if valie, otherwise
+ returns false"""
+
+ global SETTINGS
+
+ if not os.path.isfile(config.TTBPRC):
+ return False
+
+ try:
+ SETTINGS = json.load(open(config.TTBPRC))
+ except ValueError:
+ return False
+
+ core.load(SETTINGS)
+
+ return SETTINGS
+
def setup_repair():
'''
setup repair function
@@ -380,7 +392,8 @@ def setup_repair():
"publishing": select_publishing,
"publish dir": select_publish_dir,
"gopher": gopher.select_gopher,
- "rainbows": toggle_rainbows
+ "rainbows": toggle_rainbows,
+ "post as nopub": toggle_pub_default
}
for option in iter(settings_map):
@@ -394,7 +407,7 @@ def setup_repair():
print("...")
time.sleep(1)
- raw_input("\nyou're all good to go, "+chatter.say("friend")+"! hit to continue.\n\n")
+ input("\nyou're all good to go, "+chatter.say("friend")+"! hit to continue.\n\n")
def setup():
'''
@@ -418,7 +431,7 @@ def setup():
util.print_menu(menuOptions, SETTINGS.get("rainbows", False))
try:
- choice = raw_input("\npick a setting to change (or type 'q' to exit): ")
+ choice = input("\npick a setting to change (or type 'q' to exit): ")
except KeyboardInterrupt:
redraw(EJECT)
return SETTINGS
@@ -473,7 +486,14 @@ def setup():
save_settings()
return setup()
- raw_input("\nyou're all good to go, {friend}! hit to continue.\n\n".format(friend=chatter.say("friend")))
+ #nopub toggling
+ elif settingList[int(choice)] == "post as nopub":
+ SETTINGS.update({"post as nopub": toggle_pub_default()})
+ redraw("posting default set to {nopub}".format(nopub=SETTINGS.get("post as nopub")))
+ save_settings()
+ return setup()
+
+ input("\nyou're all good to go, {friend}! hit to continue.\n\n".format(friend=chatter.say("friend")))
redraw()
return SETTINGS
@@ -509,7 +529,7 @@ def main_menu():
util.print_menu(menuOptions, SETTINGS.get("rainbows", False))
try:
- choice = raw_input("\ntell me about your feels (or type 'q' to exit): ")
+ choice = input("\ntell me about your feels (or type 'q' to exit): ")
except KeyboardInterrupt:
redraw(EJECT)
return main_menu()
@@ -569,12 +589,12 @@ def feedback_menu():
'''
util.print_menu(SUBJECTS, SETTINGS.get("rainbows", False))
- choice = raw_input("\npick a category for your feedback: ")
+ choice = input("\npick a category for your feedback: ")
cat = ""
if choice in ['0', '1', '2', '3']:
cat = SUBJECTS[int(choice)]
- entered = raw_input("""
+ entered = input("""
composing a {mail_category} to ~endorphant.
press to open an external text editor. mail will be sent once you save and quit.
@@ -752,7 +772,7 @@ i'd love to hear about your ideas and brainstorm about new features!
thanks to everyone who reads, listens, writes, and feels.\
""")
- raw_input("\n\npress to go back home.\n\n")
+ input("\n\npress to go back home.\n\n")
redraw()
return
@@ -764,7 +784,7 @@ def write_entry(entry=os.path.join(config.USER_DATA, "test.txt")):
main feels-recording handler
'''
- entered = raw_input("""
+ entered = input("""
feels will be recorded for today, {today}.
if you've already started recording feels for this day, you
@@ -786,17 +806,21 @@ editor.
left = ""
- if core.publishing():
- core.load_files()
- core.write("index.html")
- left = "posted to {url}/index.html\n\n>".format(
- url="/".join(
- [config.LIVE+config.USER,
- str(SETTINGS.get("publish dir"))]))
+ if SETTINGS.get("post as nopub"):
+ core.toggle_nopub(os.path.basename(entry))
+ else:
+ if core.publishing():
+ core.write("index.html")
+ left = "posted to {url}/index.html\n\n>".format(
+ url="/".join(
+ [config.LIVE+config.USER,
+ str(SETTINGS.get("publish dir"))]))
- if SETTINGS.get('gopher'):
- gopher.publish_gopher('feels', core.get_files())
- left += " also posted to your ~/public_gopher!\n"
+ if SETTINGS.get('gopher'):
+ gopher.publish_gopher('feels', core.get_files())
+ left += " also posted to your ~/public_gopher!\n"
+
+ core.load_files()
redraw(left + " thanks for sharing your feels!")
return
@@ -976,7 +1000,7 @@ wall will be recorded if you save the file, and you can cancel
your changes by exiting without saving.
""")
- raw_input("press to visit the wall\n\n")
+ input("press to visit the wall\n\n")
subprocess.call([SETTINGS.get("editor"), config.WALL])
subprocess.call(["rm", config.WALL_LOCK])
redraw("thanks for visiting the graffiti wall!")
@@ -984,6 +1008,46 @@ your changes by exiting without saving.
## misc helpers
+def toggle_pub_default():
+ """setup helper for setting default publish privacy (does not apply
+ retroactively). """
+
+ if SETTINGS.get("post as nopub", False) is True:
+ (nopub, will) = ("(nopub)", "won't")
+ else:
+ (nopub, will) = ("public", "will")
+
+ if SETTINGS.get("publishing", False) is True:
+ publishing = ""
+ else:
+ publishing = """\
+since you're currently not publishing your posts to html/gopher, this setting
+won't affect the visibility of your posts. however, the option is still here if
+you'd like to change it.
+"""
+
+ print("""
+
+DEFAULT POST PRIVACY
+
+your entries are set to automatically post as {nopub}. this means they {will} be
+posted to your world-visible pages at first (which you can always change after
+the fact.)
+
+this setting only affects subsequent posts; it does not apply retroactively.
+
+{publishing}""".format(nopub=nopub, will=will, publishing=publishing))
+
+ ans = util.input_yn("""\
+would you like to change this behavior?
+
+please enter""")
+
+ if ans:
+ return not SETTINGS.get("post as nopub")
+ else:
+ return SETTINGS.get("post as nopub")
+
def toggle_rainbows():
"""setup helper for rainbow toggling
"""
@@ -1037,13 +1101,13 @@ def select_publish_dir():
print("\ncurrent publish dir:\t"+os.path.join(config.PUBLIC, SETTINGS["publish dir"]))
republish = True
- choice = raw_input("\nwhere do you want your blog published? (leave blank to use default \"blog\") ")
+ choice = input("\nwhere do you want your blog published? (leave blank to use default \"blog\") ")
if not choice:
choice = "blog"
publishDir = os.path.join(config.PUBLIC, choice)
while os.path.exists(publishDir):
- second = raw_input("\n"+publishDir+"""\
+ second = input("\n"+publishDir+"""\
already exists!
setting this as your publishing directory means this program may
@@ -1244,7 +1308,6 @@ def update_user_version():
ttbprc.close()
# from earlier than 0.10.1
-
if y < 10:
# select gopher
print("[ NEW FEATURE ]")
@@ -1266,6 +1329,12 @@ def update_user_version():
print("[ NEW FEATURE ]")
SETTINGS.update({"rainbows": toggle_rainbows()})
+ if z < 2:
+ # set default option for 0.11.2
+ # print("default nopub: false")
+ SETTINGS.update({"post as nopub": False})
+ save_settings()
+
print("""
you're all good to go, """+chatter.say("friend")+"""! please contact ~endorphant if
something strange happened to you during this update.
@@ -1283,10 +1352,14 @@ something strange happened to you during this update.
# version 0.11.1 patch notes
print(config.UPDATES["0.11.1"])
+ if y < 11 or z < 2:
+ # version 0.11.2 patch notes
+ print(config.UPDATES["0.11.2"])
+
confirm = ""
while confirm not in ("x", "", "X", ""):
- confirm = raw_input("\nplease type when you've finished reading about the updates! ")
+ confirm = input("\nplease type when you've finished reading about the updates! ")
print("\n\n")
diff --git a/ttbp/util.py b/ttbp/util.py
index 85707b5..5168018 100644
--- a/ttbp/util.py
+++ b/ttbp/util.py
@@ -25,6 +25,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
'''
import random
import time
+from six.moves import input
import colorama
import inflect
@@ -179,7 +180,7 @@ def list_select(options, prompt):
ans = ""
invalid = True
- choice = raw_input("\n"+prompt)
+ choice = input("\n"+prompt)
if choice in BACKS:
return False
@@ -205,11 +206,11 @@ def input_yn(query):
'''
try:
- ans = raw_input(query+" [y/n] ")
+ ans = input(query+" [y/n] ")
except KeyboardInterrupt:
input_yn(query)
while ans not in ["y", "n"]:
- ans = raw_input("'y' or 'n' please: ")
+ ans = input("'y' or 'n' please: ")
return ans == "y"