generates follow page mostly the way I want
This commit is contained in:
parent
d9e998750c
commit
427d4ff972
77
microblog.py
77
microblog.py
@ -1,6 +1,7 @@
|
||||
|
||||
import sys, os, traceback
|
||||
import dateutil.parser
|
||||
from time import strftime, localtime
|
||||
|
||||
# returns html-formatted string
|
||||
def make_buttons(btn_dict, msg_id):
|
||||
@ -52,6 +53,8 @@ def make_gallery(indices, w, conf=None):
|
||||
tag.append("</div>")
|
||||
return tag
|
||||
|
||||
# apply basic HTML formatting - only div class here is gallery
|
||||
from html import escape
|
||||
def markup(message, config):
|
||||
def is_image(s, image_formats):
|
||||
l = s.rsplit('.', maxsplit=1)
|
||||
@ -116,8 +119,6 @@ def markup(message, config):
|
||||
gallery = []
|
||||
return sep.join(output), tags
|
||||
|
||||
# apply basic HTML formatting - only div class here is gallery
|
||||
from html import escape
|
||||
class Post:
|
||||
def __init__(self, ts, msg):
|
||||
self.timestamp = ts.strip() # string
|
||||
@ -321,6 +322,11 @@ if __name__ == "__main__":
|
||||
demote_css(html, config["relative_css"], lvl),
|
||||
tcloud, timeline
|
||||
)
|
||||
elif subdir == "placeholder":
|
||||
lvl = 1
|
||||
tcloud = make_tagcloud(tagcloud, "./tags/%s/latest.html")
|
||||
with open ("follows.html", 'w') as f:
|
||||
print(pagectrl.singlepage(html, tcloud, timeline),file=f)
|
||||
else: # if timelines per tag
|
||||
is_tagline = True
|
||||
lvl = 2
|
||||
@ -351,14 +357,15 @@ if __name__ == "__main__":
|
||||
def export_profile(post_count, last_update, config):
|
||||
if "profile" not in config:
|
||||
return
|
||||
if "alias" not in config["profile"] \
|
||||
if "username" not in config["profile"] \
|
||||
or "url" not in config["profile"]:
|
||||
print("Warning: no profile exported", file=sys.stderr)
|
||||
return
|
||||
profile = {
|
||||
"username" : config["profile"]["alias"],
|
||||
"username" : config["profile"]["username"],
|
||||
"url": config["profile"]["url"],
|
||||
"last-updated": last_update,
|
||||
"short-bio" : config["profile"]["short_bio"],
|
||||
"post-count" : post_count
|
||||
}
|
||||
if "avatar" in config["profile"]:
|
||||
@ -367,13 +374,49 @@ if __name__ == "__main__":
|
||||
print(json.dumps(profile), file=f)
|
||||
|
||||
import urllib.request as http
|
||||
def fn1(config): # come up with better name later
|
||||
def fetch(follow_list):
|
||||
objects = []
|
||||
for eceleb in follow_list:
|
||||
with http.urlopen(eceleb) as response:
|
||||
oither_people = []
|
||||
for someone in follow_list:
|
||||
try:
|
||||
with http.urlopen(someone) as response:
|
||||
data = response.read()
|
||||
objects.append(json.loads(data))
|
||||
return objects
|
||||
except urllib.error.HTTPError:
|
||||
print("http error - skipping", file=sys.stderr)
|
||||
pass
|
||||
return other_people
|
||||
list_of_json_objs = []
|
||||
with open("meta.json",'r') as f:
|
||||
list_of_json_objs.append(json.loads(f.read()))
|
||||
# list_of_json_obj = fetch(config["profile"]["following"])
|
||||
rendered = []
|
||||
template = config["format"]
|
||||
SHORT_BIO_LIMIT = 150
|
||||
for profile in list_of_json_objs:
|
||||
epoch_timestamp = profile["last-updated"]
|
||||
if not isinstance(epoch_timestamp, int):
|
||||
epoch_timestamp = 0
|
||||
|
||||
post_count = profile["post-count"]
|
||||
if not isinstance(post_count, int):
|
||||
post_count = 0
|
||||
|
||||
self_desc = profile["short-bio"]
|
||||
if len(profile["short-bio"]) >= SHORT_BIO_LIMIT:
|
||||
self_desc = profile["short-bio"][:SHORT_BIO_LIMIT] + "..."
|
||||
|
||||
rendered.append(template.format(
|
||||
__avatar__=escape(profile["avatar"]),
|
||||
__handle__=escape(profile["username"]),
|
||||
__url__=escape(profile["url"]),
|
||||
__post_count__ = post_count,
|
||||
__shortbio__= escape(self_desc),
|
||||
__lastupdated__= strftime(
|
||||
"%Y %b %d", localtime(epoch_timestamp))
|
||||
))
|
||||
# print(html, file=sys.stderr)
|
||||
return rendered
|
||||
|
||||
def main():
|
||||
tpl, content = get_args()
|
||||
@ -388,11 +431,6 @@ if __name__ == "__main__":
|
||||
print("exit: table 'page' absent in settings.toml", file=sys.stderr)
|
||||
return
|
||||
p = parse_txt(content)
|
||||
if "syndication" in cfg:
|
||||
if cfg["syndication"]["enabled"] == True:
|
||||
export_profile(
|
||||
len(p), p[0].get_epoch_time(), cfg["syndication"]
|
||||
)
|
||||
tl, tc, tg = get_posts(p, cfg["post"])
|
||||
if tl == []:
|
||||
return
|
||||
@ -412,6 +450,14 @@ if __name__ == "__main__":
|
||||
tpl, tagline, tc, cfg["page"], \
|
||||
subdir="tags/%s" % key[1:] \
|
||||
)
|
||||
if "syndication" in cfg:
|
||||
if cfg["syndication"]["enabled"] == True:
|
||||
export_profile(
|
||||
len(p), p[0].get_epoch_time(), cfg["syndication"] )
|
||||
if "following" in cfg["syndication"]:
|
||||
fellows = fn1(cfg["syndication"]["following"] )
|
||||
updated += writepage(
|
||||
tpl, fellows, tc, cfg["page"], subdir="placeholder" )
|
||||
with open("updatedfiles.txt", 'w') as f:
|
||||
for filename in updated:
|
||||
print(filename, file=f) # sys.stderr)
|
||||
@ -422,8 +468,11 @@ if __name__ == "__main__":
|
||||
except KeyError as e:
|
||||
traceback.print_exc()
|
||||
print("\n\tA key may be missing from your settings file.", file=sys.stderr)
|
||||
except dateutil.parser._parser.ParserError as e:
|
||||
except dateutil.parser._parser.ParserError:
|
||||
traceback.print_exc()
|
||||
print("\n\tFailed to interpret a date from string..",
|
||||
"\n\tYour file of posts may be malformed.",
|
||||
"\n\tCheck if your file starts with a line break.", file=sys.stderr)
|
||||
except toml.decoder.TomlDecodeError:
|
||||
traceback.print_exc()
|
||||
print("\n\tYour configuration file is malformed.")
|
||||
|
Loading…
x
Reference in New Issue
Block a user