[misskey] implement 'order-posts' option (#8516)
This commit is contained in:
@@ -4252,6 +4252,21 @@ Note
|
|||||||
It is possible to use ``"all"`` instead of listing all values separately.
|
It is possible to use ``"all"`` instead of listing all values separately.
|
||||||
|
|
||||||
|
|
||||||
|
extractor.[misskey].order-posts
|
||||||
|
-------------------------------
|
||||||
|
Type
|
||||||
|
``string``
|
||||||
|
Default
|
||||||
|
``"desc"``
|
||||||
|
Description
|
||||||
|
Controls the order in which posts are processed.
|
||||||
|
|
||||||
|
``"asc"`` | ``"reverse"``
|
||||||
|
Ascending order (oldest first)
|
||||||
|
``"desc"``
|
||||||
|
Descending order (newest first)
|
||||||
|
|
||||||
|
|
||||||
extractor.[misskey].renotes
|
extractor.[misskey].renotes
|
||||||
---------------------------
|
---------------------------
|
||||||
Type
|
Type
|
||||||
|
|||||||
@@ -1094,6 +1094,7 @@
|
|||||||
"date-min" : null,
|
"date-min" : null,
|
||||||
"date-max" : null,
|
"date-max" : null,
|
||||||
"include" : ["notes"],
|
"include" : ["notes"],
|
||||||
|
"order-posts" : "desc",
|
||||||
"renotes" : false,
|
"renotes" : false,
|
||||||
"replies" : true,
|
"replies" : true,
|
||||||
"text-posts" : false
|
"text-posts" : false
|
||||||
|
|||||||
@@ -254,18 +254,33 @@ class MisskeyAPI():
|
|||||||
data["withFiles"] = False if extr.config("text-posts") else True
|
data["withFiles"] = False if extr.config("text-posts") else True
|
||||||
|
|
||||||
date_min, date_max = extr._get_date_min_max()
|
date_min, date_max = extr._get_date_min_max()
|
||||||
if date_min is not None:
|
if (order := extr.config("order-posts")) and \
|
||||||
data["sinceDate"] = date_min * 1000
|
order[0] in ("a", "r"):
|
||||||
if date_max is None:
|
key = "sinceId"
|
||||||
# ensure notes are returned in descending order
|
data["sinceDate"] = 1 if date_min is None else date_min * 1000
|
||||||
# TODO: implement 'order-posts' option
|
date_stop = None if date_max is None else date_max
|
||||||
data["untilDate"] = (int(dt.to_ts(dt.now())) + 1000) * 1000
|
else:
|
||||||
if date_max is not None:
|
key = "untilId"
|
||||||
data["untilDate"] = date_max * 1000
|
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:
|
while True:
|
||||||
notes = self._call(endpoint, data)
|
notes = self._call(endpoint, data)
|
||||||
if not notes:
|
if not notes:
|
||||||
return
|
return
|
||||||
yield from notes
|
elif date_stop is not None and dt.to_ts(dt.parse_iso(
|
||||||
data["untilId"] = notes[-1]["id"]
|
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"]
|
||||||
|
|||||||
Reference in New Issue
Block a user