[misskey] implement 'order-posts' option (#8516)

This commit is contained in:
Mike Fährmann
2025-12-13 21:01:40 +01:00
parent 8f621b32bd
commit a53cc87b72
3 changed files with 41 additions and 10 deletions

View File

@@ -254,18 +254,33 @@ class MisskeyAPI():
data["withFiles"] = False if extr.config("text-posts") else True
date_min, date_max = extr._get_date_min_max()
if date_min is not None:
data["sinceDate"] = date_min * 1000
if date_max is None:
# ensure notes are returned in descending order
# TODO: implement 'order-posts' option
data["untilDate"] = (int(dt.to_ts(dt.now())) + 1000) * 1000
if date_max is not None:
data["untilDate"] = date_max * 1000
if (order := extr.config("order-posts")) and \
order[0] in ("a", "r"):
key = "sinceId"
data["sinceDate"] = 1 if date_min is None else date_min * 1000
date_stop = None if date_max is None else date_max
else:
key = "untilId"
date_stop = None
if date_min is not None:
data["sinceDate"] = date_min * 1000
if date_max is None:
# ensure notes are returned in descending order
data["untilDate"] = (int(dt.time.time()) + 1000) * 1000
if date_max is not None:
data["untilDate"] = date_max * 1000
while True:
notes = self._call(endpoint, data)
if not notes:
return
yield from notes
data["untilId"] = notes[-1]["id"]
elif date_stop is not None and dt.to_ts(dt.parse_iso(
notes[-1]["createdAt"])) > date_stop:
for idx, note in enumerate(notes):
if dt.to_ts(dt.parse_iso(note["createdAt"])) > date_stop:
yield from notes[:idx]
return
else:
yield from notes
data[key] = notes[-1]["id"]