[mangadex] add extractor for a user's followed feed (#1535)
This commit is contained in:
@@ -412,7 +412,7 @@ Consider all sites to be NSFW unless otherwise known.
|
|||||||
<tr>
|
<tr>
|
||||||
<td>MangaDex</td>
|
<td>MangaDex</td>
|
||||||
<td>https://mangadex.org/</td>
|
<td>https://mangadex.org/</td>
|
||||||
<td>Chapters, Manga</td>
|
<td>Chapters, Followed Feed, Manga</td>
|
||||||
<td>Supported</td>
|
<td>Supported</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
|||||||
@@ -13,6 +13,8 @@ from .. import text, util, exception
|
|||||||
from ..cache import cache, memcache
|
from ..cache import cache, memcache
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
|
|
||||||
|
BASE_PATTERN = r"(?:https?://)?(?:www\.)?mangadex\.(?:org|cc)"
|
||||||
|
|
||||||
|
|
||||||
class MangadexExtractor(Extractor):
|
class MangadexExtractor(Extractor):
|
||||||
"""Base class for mangadex extractors"""
|
"""Base class for mangadex extractors"""
|
||||||
@@ -95,8 +97,7 @@ class MangadexExtractor(Extractor):
|
|||||||
class MangadexChapterExtractor(MangadexExtractor):
|
class MangadexChapterExtractor(MangadexExtractor):
|
||||||
"""Extractor for manga-chapters from mangadex.org"""
|
"""Extractor for manga-chapters from mangadex.org"""
|
||||||
subcategory = "chapter"
|
subcategory = "chapter"
|
||||||
pattern = (r"(?:https?://)?(?:www\.)?mangadex\.(?:org|cc)"
|
pattern = BASE_PATTERN + r"/chapter/([0-9a-f-]+)"
|
||||||
r"/chapter/([0-9a-f-]+)")
|
|
||||||
test = (
|
test = (
|
||||||
("https://mangadex.org/chapter/f946ac53-0b71-4b5d-aeb2-7931b13c4aaa", {
|
("https://mangadex.org/chapter/f946ac53-0b71-4b5d-aeb2-7931b13c4aaa", {
|
||||||
"keyword": "f6c2b908df06eb834d56193dfe1fa1f7c2c4dccd",
|
"keyword": "f6c2b908df06eb834d56193dfe1fa1f7c2c4dccd",
|
||||||
@@ -121,8 +122,7 @@ class MangadexChapterExtractor(MangadexExtractor):
|
|||||||
class MangadexMangaExtractor(MangadexExtractor):
|
class MangadexMangaExtractor(MangadexExtractor):
|
||||||
"""Extractor for manga from mangadex.org"""
|
"""Extractor for manga from mangadex.org"""
|
||||||
subcategory = "manga"
|
subcategory = "manga"
|
||||||
pattern = (r"(?:https?://)?(?:www\.)?mangadex\.(?:org|cc)"
|
pattern = BASE_PATTERN + r"/(?:title|manga)/(?!feed$)([0-9a-f-]+)"
|
||||||
r"/(?:title|manga)/([0-9a-f-]+)")
|
|
||||||
test = (
|
test = (
|
||||||
("https://mangadex.org/title/f90c4398-8aad-4f51-8a1f-024ca09fdcbc", {
|
("https://mangadex.org/title/f90c4398-8aad-4f51-8a1f-024ca09fdcbc", {
|
||||||
"keyword": {
|
"keyword": {
|
||||||
@@ -148,6 +148,16 @@ class MangadexMangaExtractor(MangadexExtractor):
|
|||||||
return self.api.manga_feed(self.uuid)
|
return self.api.manga_feed(self.uuid)
|
||||||
|
|
||||||
|
|
||||||
|
class MangadexFeedExtractor(MangadexExtractor):
|
||||||
|
"""Extractor for chapters from your Followed Feed"""
|
||||||
|
subcategory = "feed"
|
||||||
|
pattern = BASE_PATTERN + r"/title/feed$()"
|
||||||
|
test = ("https://mangadex.org/title/feed",)
|
||||||
|
|
||||||
|
def chapters(self):
|
||||||
|
return self.api.user_follows_manga_feed()
|
||||||
|
|
||||||
|
|
||||||
class MangadexAPI():
|
class MangadexAPI():
|
||||||
"""Interface for the MangaDex API v5"""
|
"""Interface for the MangaDex API v5"""
|
||||||
|
|
||||||
@@ -191,6 +201,13 @@ class MangadexAPI():
|
|||||||
}
|
}
|
||||||
return self._pagination("/manga/" + uuid + "/feed", params)
|
return self._pagination("/manga/" + uuid + "/feed", params)
|
||||||
|
|
||||||
|
def user_follows_manga_feed(self):
|
||||||
|
params = {
|
||||||
|
"order[publishAt]" : "desc",
|
||||||
|
"translatedLanguage[]": self.extractor.config("lang"),
|
||||||
|
}
|
||||||
|
return self._pagination("/user/follows/manga/feed", params)
|
||||||
|
|
||||||
def authenticate(self):
|
def authenticate(self):
|
||||||
self.headers["Authorization"] = \
|
self.headers["Authorization"] = \
|
||||||
self._authenticate_impl(self.username, self.password)
|
self._authenticate_impl(self.username, self.password)
|
||||||
|
|||||||
@@ -150,6 +150,9 @@ SUBCATEGORY_MAP = {
|
|||||||
"saved": "Saved Posts",
|
"saved": "Saved Posts",
|
||||||
"tagged": "Tagged Posts",
|
"tagged": "Tagged Posts",
|
||||||
},
|
},
|
||||||
|
"mangadex": {
|
||||||
|
"feed" : "Followed Feed",
|
||||||
|
},
|
||||||
"newgrounds": {
|
"newgrounds": {
|
||||||
"art" : "Art",
|
"art" : "Art",
|
||||||
"audio": "Audio",
|
"audio": "Audio",
|
||||||
|
|||||||
Reference in New Issue
Block a user