summaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/misskey.py
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2023-05-28 01:35:27 -0400
committerLibravatarUnit 193 <unit193@unit193.net>2023-05-28 01:35:27 -0400
commit8950c0f2ef55ec2ed36b3fccc9fd85b64b877c3b (patch)
tree353c894306904849b05b4dacbb9ea0966f36bd95 /gallery_dl/extractor/misskey.py
parentbff1d7a3fc1f184002ea6c6f77de675885bda3eb (diff)
New upstream version 1.25.5.upstream/1.25.5
Diffstat (limited to 'gallery_dl/extractor/misskey.py')
-rw-r--r--gallery_dl/extractor/misskey.py29
1 files changed, 27 insertions, 2 deletions
diff --git a/gallery_dl/extractor/misskey.py b/gallery_dl/extractor/misskey.py
index 03e9104..37efac0 100644
--- a/gallery_dl/extractor/misskey.py
+++ b/gallery_dl/extractor/misskey.py
@@ -7,7 +7,7 @@
"""Extractors for Misskey instances"""
from .common import BaseExtractor, Message
-from .. import text
+from .. import text, exception
class MisskeyExtractor(BaseExtractor):
@@ -27,6 +27,8 @@ class MisskeyExtractor(BaseExtractor):
def items(self):
for note in self.notes():
+ if "note" in note:
+ note = note["note"]
files = note.pop("files") or []
renote = note.get("renote")
if renote:
@@ -68,7 +70,7 @@ BASE_PATTERN = MisskeyExtractor.update({
},
"lesbian.energy": {
"root": "https://lesbian.energy",
- "pattern": r"lesbian\.energy"
+ "pattern": r"lesbian\.energy",
},
"sushi.ski": {
"root": "https://sushi.ski",
@@ -152,6 +154,21 @@ class MisskeyNoteExtractor(MisskeyExtractor):
return (self.api.notes_show(self.item),)
+class MisskeyFavoriteExtractor(MisskeyExtractor):
+ """Extractor for favorited notes"""
+ subcategory = "favorite"
+ pattern = BASE_PATTERN + r"/(?:my|api/i)/favorites"
+ test = (
+ ("https://misskey.io/my/favorites"),
+ ("https://misskey.io/api/i/favorites"),
+ ("https://lesbian.energy/my/favorites"),
+ ("https://sushi.ski/my/favorites"),
+ )
+
+ def notes(self):
+ return self.api.i_favorites()
+
+
class MisskeyAPI():
"""Interface for Misskey API
@@ -164,6 +181,7 @@ class MisskeyAPI():
self.root = extractor.root
self.extractor = extractor
self.headers = {"Content-Type": "application/json"}
+ self.access_token = extractor.config("access-token")
def user_id_by_username(self, username):
endpoint = "/users/show"
@@ -187,6 +205,13 @@ class MisskeyAPI():
data = {"noteId": note_id}
return self._call(endpoint, data)
+ def i_favorites(self):
+ endpoint = "/i/favorites"
+ if not self.access_token:
+ raise exception.AuthenticationError()
+ data = {"i": self.access_token}
+ return self._pagination(endpoint, data)
+
def _call(self, endpoint, data):
url = self.root + "/api" + endpoint
return self.extractor.request(