diff --git a/docs/supportedsites.md b/docs/supportedsites.md
index 2672cbec..5fddd1a5 100644
--- a/docs/supportedsites.md
+++ b/docs/supportedsites.md
@@ -1570,25 +1570,25 @@ Consider all listed sites to potentially be NSFW.
| MangaNelo |
https://www.nelomanga.net/ |
- Chapters, Manga |
+ Bookmarks, Chapters, Manga |
|
| MangaNato |
https://www.natomanga.com/ |
- Chapters, Manga |
+ Bookmarks, Chapters, Manga |
|
| MangaNato |
https://www.manganato.gg/ |
- Chapters, Manga |
+ Bookmarks, Chapters, Manga |
|
| MangaKakalot |
https://www.mangakakalot.gg/ |
- Chapters, Manga |
+ Bookmarks, Chapters, Manga |
|
diff --git a/gallery_dl/extractor/manganelo.py b/gallery_dl/extractor/manganelo.py
index 3d88b2d0..6b68b83d 100644
--- a/gallery_dl/extractor/manganelo.py
+++ b/gallery_dl/extractor/manganelo.py
@@ -9,8 +9,8 @@
"""Extractors for https://www.mangakakalot.gg/ and mirror sites"""
-from .common import BaseExtractor, ChapterExtractor, MangaExtractor
-from .. import text, util
+from .common import BaseExtractor, ChapterExtractor, MangaExtractor, Message
+from .. import text, util, exception
class ManganeloExtractor(BaseExtractor):
@@ -126,3 +126,33 @@ class ManganeloMangaExtractor(ManganeloExtractor, MangaExtractor):
"language": "English",
}))
return results
+
+
+class ManganeloBookmarkExtractor(ManganeloExtractor):
+ """Extractor for manganelo bookmarks"""
+ subcategory = "bookmark"
+ pattern = BASE_PATTERN + r"/bookmark"
+ example = "https://www.mangakakalot.gg/bookmark"
+
+ def items(self):
+ data = {"_extractor": ManganeloMangaExtractor}
+
+ url = self.root + "/bookmark"
+ params = {"page": 1}
+
+ response = self.request(url, params=params)
+ if response.history:
+ raise exception.AuthRequired(
+ "authenticated cookies", "your bookmarks")
+ page = response.text
+ last = text.parse_int(text.extr(page, ">Last(", ")"))
+
+ while True:
+ for bookmark in text.extract_iter(
+ page, 'class="user-bookmark-item ', ''):
+ yield Message.Queue, text.extr(bookmark, ' href="', '"'), data
+
+ if params["page"] >= last:
+ break
+ params["page"] += 1
+ page = self.request(url, params=params).text
diff --git a/test/results/nelomanga.py b/test/results/nelomanga.py
index 6a917478..76ea3f35 100644
--- a/test/results/nelomanga.py
+++ b/test/results/nelomanga.py
@@ -5,6 +5,7 @@
# published by the Free Software Foundation.
from gallery_dl.extractor import manganelo
+from gallery_dl import exception
__tests__ = (
@@ -70,4 +71,21 @@ __tests__ = (
"#class" : manganelo.ManganeloMangaExtractor,
},
+{
+ "#url" : "https://www.nelomanga.net/bookmark",
+ "#category": ("manganelo", "nelomanga", "bookmark"),
+ "#class" : manganelo.ManganeloBookmarkExtractor,
+ "#pattern" : manganelo.ManganeloMangaExtractor.pattern,
+ "#auth" : "cookies",
+ "#count" : 23,
+},
+
+{
+ "#url" : "https://nelomanga.net/bookmark",
+ "#category": ("manganelo", "nelomanga", "bookmark"),
+ "#class" : manganelo.ManganeloBookmarkExtractor,
+ "#auth" : False,
+ "#exception": exception.AuthRequired,
+},
+
)