From 1a3cc90c85db37e975bbcbad46eb3a7e13ca03ee Mon Sep 17 00:00:00 2001 From: autocommit Date: Mon, 1 Jun 2020 02:31:53 +0000 Subject: [PATCH] Pulling any missing posts by ID We have the post ID, so why would Pleroma not send us the post? Request any missing posts it hasn't sent us, to try and get a thread that doesn't lose all its replies. --- brutaldon/threadtree.py | 24 +++++++++++++----------- brutaldon/views.py | 2 +- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/brutaldon/threadtree.py b/brutaldon/threadtree.py index 7ac010b..f4da6db 100644 --- a/brutaldon/threadtree.py +++ b/brutaldon/threadtree.py @@ -1,9 +1,13 @@ from pprint import pprint -def maketree(descendants): +def maketree(mastodon, descendants): lookup = dict((descendant.id, descendant) for descendant in descendants) replies = {} roots = set() + def lookup_or_fetch(id): + if not id in lookup: + lookup[id] = mastodon.status(id) + return lookup[id] def getreps(id): if id in replies: reps = replies[id] @@ -30,12 +34,12 @@ def maketree(descendants): seen.add(rep) subreps = replies.get(rep) if subreps: - yield lookup[rep], onelevel(subreps) + yield lookup_or_fetch(rep), onelevel(subreps) else: - yield lookup[rep], () + yield lookup_or_fetch(rep), () def leftovers(): for leftover in set(lookup.keys()) - seen: - yield lookup[leftover] + yield lookup_or_fetch(leftover) return onelevel(roots), leftovers # returns (status, gen[(status, gen[(status, ...), (status, ())]), ...]) @@ -60,15 +64,13 @@ def unmaketree(tree): yield from unmaketree(children) yield OUT -def build(descendants): - herp, derp = maketree(descendants) +def build(mastodon, descendants): + tree, leftover = maketree(mastodon, descendants) yield IN - yield from unmaketree(herp) + yield from unmaketree(tree) yield OUT yield IN - derp = tuple(derp()) - pprint(("derp", derp)) - for post in derp: - pprint(("derp?", post)) + leftover = tuple(leftover()) + for post in leftover: yield POST(post) yield OUT diff --git a/brutaldon/views.py b/brutaldon/views.py index 362d08c..758ffdd 100644 --- a/brutaldon/views.py +++ b/brutaldon/views.py @@ -692,7 +692,7 @@ def thread(request, id): # descendants = [ # x for x in context.descendants if not toot_matches_filters(x, filters) # ] - posts = tuple(threadtree.build(context.descendants)) + posts = tuple(threadtree.build(mastodon, context.descendants)) return render( request, "main/thread.html",