* Update kemono.py
* Update coomer.py
* Update kemono.py
* Fixed TypeError
- Fixed a regex mistake I made
* Make legacy domains resolve as current domains
* Update gallery_dl/extractor/kemono.py
* remove legacy .su domain support
* fixed accidental regex change
* update docs/supportedsites
* update test results
- (re)add legacy domain URLs
- update URL pattern TLDs
* restore support for '.su' TLDs
---------
Co-authored-by: Mike Fährmann <mike_faehrmann@web.de>
This commit is contained in:
@@ -201,7 +201,7 @@ Consider all listed sites to potentially be NSFW.
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Coomer</td>
|
<td>Coomer</td>
|
||||||
<td>https://coomer.su/</td>
|
<td>https://coomer.st/</td>
|
||||||
<td>Artists, Favorites, Posts, User Profiles</td>
|
<td>Artists, Favorites, Posts, User Profiles</td>
|
||||||
<td>Supported</td>
|
<td>Supported</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -537,7 +537,7 @@ Consider all listed sites to potentially be NSFW.
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Kemono</td>
|
<td>Kemono</td>
|
||||||
<td>https://kemono.su/</td>
|
<td>https://kemono.cr/</td>
|
||||||
<td>Artists, Discord Servers, Favorites, Posts, User Profiles</td>
|
<td>Artists, Discord Servers, Favorites, Posts, User Profiles</td>
|
||||||
<td>Supported</td>
|
<td>Supported</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
# it under the terms of the GNU General Public License version 2 as
|
# it under the terms of the GNU General Public License version 2 as
|
||||||
# published by the Free Software Foundation.
|
# published by the Free Software Foundation.
|
||||||
|
|
||||||
"""Extractors for https://kemono.su/"""
|
"""Extractors for https://kemono.cr/"""
|
||||||
|
|
||||||
from .common import Extractor, Message
|
from .common import Extractor, Message
|
||||||
from .. import text, util, exception
|
from .. import text, util, exception
|
||||||
@@ -14,7 +14,8 @@ from ..cache import cache, memcache
|
|||||||
import itertools
|
import itertools
|
||||||
import json
|
import json
|
||||||
|
|
||||||
BASE_PATTERN = r"(?:https?://)?(?:www\.|beta\.)?(kemono|coomer)\.(su|party)"
|
BASE_PATTERN = (r"(?:https?://)?(?:www\.|beta\.)?"
|
||||||
|
r"(kemono|coomer)\.(cr|s[tu]|party)")
|
||||||
USER_PATTERN = BASE_PATTERN + r"/([^/?#]+)/user/([^/?#]+)"
|
USER_PATTERN = BASE_PATTERN + r"/([^/?#]+)/user/([^/?#]+)"
|
||||||
HASH_PATTERN = r"/[0-9a-f]{2}/[0-9a-f]{2}/([0-9a-f]{64})"
|
HASH_PATTERN = r"/[0-9a-f]{2}/[0-9a-f]{2}/([0-9a-f]{64})"
|
||||||
|
|
||||||
@@ -22,17 +23,17 @@ HASH_PATTERN = r"/[0-9a-f]{2}/[0-9a-f]{2}/([0-9a-f]{64})"
|
|||||||
class KemonoExtractor(Extractor):
|
class KemonoExtractor(Extractor):
|
||||||
"""Base class for kemono extractors"""
|
"""Base class for kemono extractors"""
|
||||||
category = "kemono"
|
category = "kemono"
|
||||||
root = "https://kemono.su"
|
root = "https://kemono.cr"
|
||||||
directory_fmt = ("{category}", "{service}", "{user}")
|
directory_fmt = ("{category}", "{service}", "{user}")
|
||||||
filename_fmt = "{id}_{title[:180]}_{num:>02}_{filename[:180]}.{extension}"
|
filename_fmt = "{id}_{title[:180]}_{num:>02}_{filename[:180]}.{extension}"
|
||||||
archive_fmt = "{service}_{user}_{id}_{num}"
|
archive_fmt = "{service}_{user}_{id}_{num}"
|
||||||
cookies_domain = ".kemono.su"
|
cookies_domain = ".kemono.cr"
|
||||||
|
|
||||||
def __init__(self, match):
|
def __init__(self, match):
|
||||||
tld = match[2]
|
if match[1] == "coomer":
|
||||||
self.category = domain = match[1]
|
self.category = "coomer"
|
||||||
self.root = text.root_from_url(match[0])
|
self.root = "https://coomer.st"
|
||||||
self.cookies_domain = f".{domain}.{tld}"
|
self.cookies_domain = ".coomer.st"
|
||||||
Extractor.__init__(self, match)
|
Extractor.__init__(self, match)
|
||||||
|
|
||||||
def _init(self):
|
def _init(self):
|
||||||
@@ -44,7 +45,7 @@ class KemonoExtractor(Extractor):
|
|||||||
self.revisions_reverse = order[0] in ("r", "a") if order else False
|
self.revisions_reverse = order[0] in ("r", "a") if order else False
|
||||||
|
|
||||||
self._find_inline = util.re(
|
self._find_inline = util.re(
|
||||||
r'src="(?:https?://(?:kemono|coomer)\.su)?(/inline/[^"]+'
|
r'src="(?:https?://(?:kemono\.cr|coomer\.st))?(/inline/[^"]+'
|
||||||
r'|/[0-9a-f]{2}/[0-9a-f]{2}/[0-9a-f]{64}\.[^"]+)').findall
|
r'|/[0-9a-f]{2}/[0-9a-f]{2}/[0-9a-f]{64}\.[^"]+)').findall
|
||||||
self._json_dumps = json.JSONEncoder(
|
self._json_dumps = json.JSONEncoder(
|
||||||
ensure_ascii=False, check_circular=False,
|
ensure_ascii=False, check_circular=False,
|
||||||
@@ -312,10 +313,10 @@ def _validate(response):
|
|||||||
|
|
||||||
|
|
||||||
class KemonoUserExtractor(KemonoExtractor):
|
class KemonoUserExtractor(KemonoExtractor):
|
||||||
"""Extractor for all posts from a kemono.su user listing"""
|
"""Extractor for all posts from a kemono.cr user listing"""
|
||||||
subcategory = "user"
|
subcategory = "user"
|
||||||
pattern = USER_PATTERN + r"/?(?:\?([^#]+))?(?:$|\?|#)"
|
pattern = USER_PATTERN + r"/?(?:\?([^#]+))?(?:$|\?|#)"
|
||||||
example = "https://kemono.su/SERVICE/user/12345"
|
example = "https://kemono.cr/SERVICE/user/12345"
|
||||||
|
|
||||||
def __init__(self, match):
|
def __init__(self, match):
|
||||||
self.subcategory = match[3]
|
self.subcategory = match[3]
|
||||||
@@ -346,10 +347,10 @@ class KemonoUserExtractor(KemonoExtractor):
|
|||||||
|
|
||||||
|
|
||||||
class KemonoPostsExtractor(KemonoExtractor):
|
class KemonoPostsExtractor(KemonoExtractor):
|
||||||
"""Extractor for kemono.su post listings"""
|
"""Extractor for kemono.cr post listings"""
|
||||||
subcategory = "posts"
|
subcategory = "posts"
|
||||||
pattern = BASE_PATTERN + r"/posts()()(?:/?\?([^#]+))?"
|
pattern = BASE_PATTERN + r"/posts()()(?:/?\?([^#]+))?"
|
||||||
example = "https://kemono.su/posts"
|
example = "https://kemono.cr/posts"
|
||||||
|
|
||||||
def posts(self):
|
def posts(self):
|
||||||
params = text.parse_query(self.groups[4])
|
params = text.parse_query(self.groups[4])
|
||||||
@@ -358,10 +359,10 @@ class KemonoPostsExtractor(KemonoExtractor):
|
|||||||
|
|
||||||
|
|
||||||
class KemonoPostExtractor(KemonoExtractor):
|
class KemonoPostExtractor(KemonoExtractor):
|
||||||
"""Extractor for a single kemono.su post"""
|
"""Extractor for a single kemono.cr post"""
|
||||||
subcategory = "post"
|
subcategory = "post"
|
||||||
pattern = USER_PATTERN + r"/post/([^/?#]+)(/revisions?(?:/(\d*))?)?"
|
pattern = USER_PATTERN + r"/post/([^/?#]+)(/revisions?(?:/(\d*))?)?"
|
||||||
example = "https://kemono.su/SERVICE/user/12345/post/12345"
|
example = "https://kemono.cr/SERVICE/user/12345/post/12345"
|
||||||
|
|
||||||
def __init__(self, match):
|
def __init__(self, match):
|
||||||
self.subcategory = match[3]
|
self.subcategory = match[3]
|
||||||
@@ -387,14 +388,14 @@ class KemonoPostExtractor(KemonoExtractor):
|
|||||||
|
|
||||||
|
|
||||||
class KemonoDiscordExtractor(KemonoExtractor):
|
class KemonoDiscordExtractor(KemonoExtractor):
|
||||||
"""Extractor for kemono.su discord servers"""
|
"""Extractor for kemono.cr discord servers"""
|
||||||
subcategory = "discord"
|
subcategory = "discord"
|
||||||
directory_fmt = ("{category}", "discord",
|
directory_fmt = ("{category}", "discord",
|
||||||
"{server_id} {server}", "{channel_id} {channel}")
|
"{server_id} {server}", "{channel_id} {channel}")
|
||||||
filename_fmt = "{id}_{num:>02}_{filename}.{extension}"
|
filename_fmt = "{id}_{num:>02}_{filename}.{extension}"
|
||||||
archive_fmt = "discord_{server_id}_{id}_{num}"
|
archive_fmt = "discord_{server_id}_{id}_{num}"
|
||||||
pattern = BASE_PATTERN + r"/discord/server/(\d+)[/#](?:channel/)?(\d+)"
|
pattern = BASE_PATTERN + r"/discord/server/(\d+)[/#](?:channel/)?(\d+)"
|
||||||
example = "https://kemono.su/discord/server/12345/12345"
|
example = "https://kemono.cr/discord/server/12345/12345"
|
||||||
|
|
||||||
def items(self):
|
def items(self):
|
||||||
_, _, server_id, channel_id = self.groups
|
_, _, server_id, channel_id = self.groups
|
||||||
@@ -460,7 +461,7 @@ class KemonoDiscordExtractor(KemonoExtractor):
|
|||||||
class KemonoDiscordServerExtractor(KemonoExtractor):
|
class KemonoDiscordServerExtractor(KemonoExtractor):
|
||||||
subcategory = "discord-server"
|
subcategory = "discord-server"
|
||||||
pattern = BASE_PATTERN + r"/discord/server/(\d+)$"
|
pattern = BASE_PATTERN + r"/discord/server/(\d+)$"
|
||||||
example = "https://kemono.su/discord/server/12345"
|
example = "https://kemono.cr/discord/server/12345"
|
||||||
|
|
||||||
def items(self):
|
def items(self):
|
||||||
server_id = self.groups[2]
|
server_id = self.groups[2]
|
||||||
@@ -485,10 +486,10 @@ def discord_server_info(extr, server_id):
|
|||||||
|
|
||||||
|
|
||||||
class KemonoFavoriteExtractor(KemonoExtractor):
|
class KemonoFavoriteExtractor(KemonoExtractor):
|
||||||
"""Extractor for kemono.su favorites"""
|
"""Extractor for kemono.cr favorites"""
|
||||||
subcategory = "favorite"
|
subcategory = "favorite"
|
||||||
pattern = BASE_PATTERN + r"/(?:account/)?favorites()()(?:/?\?([^#]+))?"
|
pattern = BASE_PATTERN + r"/(?:account/)?favorites()()(?:/?\?([^#]+))?"
|
||||||
example = "https://kemono.su/account/favorites/artists"
|
example = "https://kemono.cr/account/favorites/artists"
|
||||||
|
|
||||||
def items(self):
|
def items(self):
|
||||||
self.login()
|
self.login()
|
||||||
@@ -536,7 +537,7 @@ class KemonoArtistsExtractor(KemonoExtractor):
|
|||||||
"""Extractor for kemono artists"""
|
"""Extractor for kemono artists"""
|
||||||
subcategory = "artists"
|
subcategory = "artists"
|
||||||
pattern = BASE_PATTERN + r"/artists(?:\?([^#]+))?"
|
pattern = BASE_PATTERN + r"/artists(?:\?([^#]+))?"
|
||||||
example = "https://kemono.su/artists"
|
example = "https://kemono.cr/artists"
|
||||||
|
|
||||||
def items(self):
|
def items(self):
|
||||||
params = text.parse_query(self.groups[2])
|
params = text.parse_query(self.groups[2])
|
||||||
@@ -571,7 +572,7 @@ class KemonoArtistsExtractor(KemonoExtractor):
|
|||||||
class KemonoAPI():
|
class KemonoAPI():
|
||||||
"""Interface for the Kemono API v1.1.0
|
"""Interface for the Kemono API v1.1.0
|
||||||
|
|
||||||
https://kemono.su/documentation/api
|
https://kemono.cr/documentation/api
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, extractor):
|
def __init__(self, extractor):
|
||||||
|
|||||||
@@ -635,9 +635,9 @@ def build_extractor_list():
|
|||||||
default["e-hentai"] = default["exhentai"]
|
default["e-hentai"] = default["exhentai"]
|
||||||
domains["e-hentai"] = domains["exhentai"].replace("x", "-")
|
domains["e-hentai"] = domains["exhentai"].replace("x", "-")
|
||||||
|
|
||||||
# add coomer.su
|
# add coomer.st
|
||||||
default["coomer"] = default["kemono"]
|
default["coomer"] = default["kemono"]
|
||||||
domains["coomer"] = domains["kemono"].replace("kemono", "coomer")
|
domains["coomer"] = "https://coomer.st/"
|
||||||
|
|
||||||
# add wikifeetx.com
|
# add wikifeetx.com
|
||||||
default["wikifeetx"] = default["wikifeet"]
|
default["wikifeetx"] = default["wikifeet"]
|
||||||
|
|||||||
@@ -9,18 +9,32 @@ from gallery_dl.extractor import kemono
|
|||||||
|
|
||||||
__tests__ = (
|
__tests__ = (
|
||||||
{
|
{
|
||||||
"#url" : "https://coomer.su/onlyfans/user/alinity/post/125962203",
|
"#url" : "https://coomer.st/onlyfans/user/alinity/post/125962203",
|
||||||
"#comment" : "coomer (#2100)",
|
"#comment" : "coomer (#2100)",
|
||||||
"#category": ("", "coomer", "onlyfans"),
|
"#category": ("", "coomer", "onlyfans"),
|
||||||
"#class" : kemono.KemonoPostExtractor,
|
"#class" : kemono.KemonoPostExtractor,
|
||||||
"#results" : "https://coomer.su/data/7d/3f/7d3fd9804583dc224968c0591163ec91794552b04f00a6c2f42a15b68231d5a8.jpg",
|
"#results" : "https://coomer.st/data/7d/3f/7d3fd9804583dc224968c0591163ec91794552b04f00a6c2f42a15b68231d5a8.jpg",
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"#url" : "https://coomer.su/onlyfans/user/alinity/post/125962203",
|
||||||
|
"#comment" : "legacy TLD",
|
||||||
|
"#category": ("", "coomer", "onlyfans"),
|
||||||
|
"#class" : kemono.KemonoPostExtractor,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"#url" : "https://coomer.party/onlyfans/user/alinity/post/125962203",
|
||||||
|
"#comment" : "legacy TLD",
|
||||||
|
"#category": ("", "coomer", "onlyfans"),
|
||||||
|
"#class" : kemono.KemonoPostExtractor,
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://coomer.party/onlyfans/user/alinity/post/125962203",
|
"#url" : "https://coomer.party/onlyfans/user/alinity/post/125962203",
|
||||||
"#category": ("", "coomer", "onlyfans"),
|
"#category": ("", "coomer", "onlyfans"),
|
||||||
"#class" : kemono.KemonoPostExtractor,
|
"#class" : kemono.KemonoPostExtractor,
|
||||||
"#results" : "https://coomer.party/data/7d/3f/7d3fd9804583dc224968c0591163ec91794552b04f00a6c2f42a15b68231d5a8.jpg",
|
"#results" : "https://coomer.st/data/7d/3f/7d3fd9804583dc224968c0591163ec91794552b04f00a6c2f42a15b68231d5a8.jpg",
|
||||||
},
|
},
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ from gallery_dl import exception
|
|||||||
|
|
||||||
__tests__ = (
|
__tests__ = (
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/fanbox/user/6993449",
|
"#url" : "https://kemono.cr/fanbox/user/6993449",
|
||||||
"#category": ("", "kemono", "fanbox"),
|
"#category": ("", "kemono", "fanbox"),
|
||||||
"#class" : kemono.KemonoUserExtractor,
|
"#class" : kemono.KemonoUserExtractor,
|
||||||
"#options" : {"endpoint": "legacy"},
|
"#options" : {"endpoint": "legacy"},
|
||||||
@@ -42,7 +42,7 @@ __tests__ = (
|
|||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/fanbox/user/6993449",
|
"#url" : "https://kemono.cr/fanbox/user/6993449",
|
||||||
"#comment" : "endpoint: legacy+ (#7438 #7450 #7462)",
|
"#comment" : "endpoint: legacy+ (#7438 #7450 #7462)",
|
||||||
"#category": ("", "kemono", "fanbox"),
|
"#category": ("", "kemono", "fanbox"),
|
||||||
"#class" : kemono.KemonoUserExtractor,
|
"#class" : kemono.KemonoUserExtractor,
|
||||||
@@ -79,7 +79,7 @@ __tests__ = (
|
|||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/patreon/user/881792?o=150",
|
"#url" : "https://kemono.cr/patreon/user/881792?o=150",
|
||||||
"#comment" : "'max-posts' and 'endpoint' option, 'o' query parameter (#1674)",
|
"#comment" : "'max-posts' and 'endpoint' option, 'o' query parameter (#1674)",
|
||||||
"#category": ("", "kemono", "patreon"),
|
"#category": ("", "kemono", "patreon"),
|
||||||
"#class" : kemono.KemonoUserExtractor,
|
"#class" : kemono.KemonoUserExtractor,
|
||||||
@@ -109,53 +109,53 @@ __tests__ = (
|
|||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/fanbox/user/6993449?q=お蔵入りになった",
|
"#url" : "https://kemono.cr/fanbox/user/6993449?q=お蔵入りになった",
|
||||||
"#comment" : "search / 'q' query parameter (#3385, #4057)",
|
"#comment" : "search / 'q' query parameter (#3385, #4057)",
|
||||||
"#category": ("", "kemono", "fanbox"),
|
"#category": ("", "kemono", "fanbox"),
|
||||||
"#class" : kemono.KemonoUserExtractor,
|
"#class" : kemono.KemonoUserExtractor,
|
||||||
"#results" : (
|
"#results" : (
|
||||||
"https://kemono.su/data/ef/7b/ef7b4398a2f4ada597421fd3c116cff86e85695911f7cd2a459b0e566b864e46.png",
|
"https://kemono.cr/data/ef/7b/ef7b4398a2f4ada597421fd3c116cff86e85695911f7cd2a459b0e566b864e46.png",
|
||||||
"https://kemono.su/data/73/e6/73e615f6645b9d1af6329448601673c9275f07fd11eb37670c97e307e29a9ee9.png",
|
"https://kemono.cr/data/73/e6/73e615f6645b9d1af6329448601673c9275f07fd11eb37670c97e307e29a9ee9.png",
|
||||||
),
|
),
|
||||||
|
|
||||||
"id": "8779",
|
"id": "8779",
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/patreon/user/3161935?tag=pin-up",
|
"#url" : "https://kemono.cr/patreon/user/3161935?tag=pin-up",
|
||||||
"#comment" : "'tag' query parameter",
|
"#comment" : "'tag' query parameter",
|
||||||
"#category": ("", "kemono", "patreon"),
|
"#category": ("", "kemono", "patreon"),
|
||||||
"#class" : kemono.KemonoUserExtractor,
|
"#class" : kemono.KemonoUserExtractor,
|
||||||
"#results" : (
|
"#results" : (
|
||||||
"https://kemono.su/data/83/61/8361560887a09c7b828d326b3e1a2f0288673741569a09d74bcd01e602d20db1.png",
|
"https://kemono.cr/data/83/61/8361560887a09c7b828d326b3e1a2f0288673741569a09d74bcd01e602d20db1.png",
|
||||||
"https://kemono.su/data/03/e6/03e62592c3b616b8906c1aaa130bd9ceaa24d7f601b31f90cc11956a57ca1d82.png",
|
"https://kemono.cr/data/03/e6/03e62592c3b616b8906c1aaa130bd9ceaa24d7f601b31f90cc11956a57ca1d82.png",
|
||||||
"https://kemono.su/data/83/0d/830d017873157d2e6544a0f23a47622ec1e91be09b5d7795eb22e32b3150c837.png",
|
"https://kemono.cr/data/83/0d/830d017873157d2e6544a0f23a47622ec1e91be09b5d7795eb22e32b3150c837.png",
|
||||||
"https://kemono.su/data/6a/9b/6a9b6d93dcb86c24a48def1bb93ce2a9ad77393941f3469d87d39400433cf825.png",
|
"https://kemono.cr/data/6a/9b/6a9b6d93dcb86c24a48def1bb93ce2a9ad77393941f3469d87d39400433cf825.png",
|
||||||
"https://kemono.su/data/96/43/9643ac03888f3b199f4e769242477b8d4d4f96025b10ab3f28affc3a1ae6bf52.jpg",
|
"https://kemono.cr/data/96/43/9643ac03888f3b199f4e769242477b8d4d4f96025b10ab3f28affc3a1ae6bf52.jpg",
|
||||||
"https://kemono.su/data/f7/a8/f7a87ccac5736f46190a53a2bb1ff3828230e90f480776759895fcba28375909.jpg",
|
"https://kemono.cr/data/f7/a8/f7a87ccac5736f46190a53a2bb1ff3828230e90f480776759895fcba28375909.jpg",
|
||||||
"https://kemono.su/data/b0/38/b03882c8b0ab3b1cf9fc658a2bb2f9ac6ad4f3449015311dcd2d7ee7f748db31.png",
|
"https://kemono.cr/data/b0/38/b03882c8b0ab3b1cf9fc658a2bb2f9ac6ad4f3449015311dcd2d7ee7f748db31.png",
|
||||||
),
|
),
|
||||||
|
|
||||||
"tags": r"re:\bpin-up\b",
|
"tags": r"re:\bpin-up\b",
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/subscribestar/user/alcorart",
|
"#url" : "https://kemono.cr/subscribestar/user/alcorart",
|
||||||
"#category": ("", "kemono", "subscribestar"),
|
"#category": ("", "kemono", "subscribestar"),
|
||||||
"#class" : kemono.KemonoUserExtractor,
|
"#class" : kemono.KemonoUserExtractor,
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/subscribestar/user/alcorart",
|
"#url" : "https://kemono.cr/subscribestar/user/alcorart",
|
||||||
"#category": ("", "kemono", "subscribestar"),
|
"#category": ("", "kemono", "subscribestar"),
|
||||||
"#class" : kemono.KemonoUserExtractor,
|
"#class" : kemono.KemonoUserExtractor,
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/fanbox/user/6993449/post/506575",
|
"#url" : "https://kemono.cr/fanbox/user/6993449/post/506575",
|
||||||
"#category": ("", "kemono", "fanbox"),
|
"#category": ("", "kemono", "fanbox"),
|
||||||
"#class" : kemono.KemonoPostExtractor,
|
"#class" : kemono.KemonoPostExtractor,
|
||||||
"#pattern" : r"https://kemono.su/data/21/0f/210f35388e28bbcf756db18dd516e2d82ce75[0-9a-f]+\.jpg",
|
"#pattern" : r"https://kemono.cr/data/21/0f/210f35388e28bbcf756db18dd516e2d82ce75[0-9a-f]+\.jpg",
|
||||||
"#sha1_content": "900949cefc97ab8dc1979cc3664785aac5ba70dd",
|
"#sha1_content": "900949cefc97ab8dc1979cc3664785aac5ba70dd",
|
||||||
|
|
||||||
"added" : None,
|
"added" : None,
|
||||||
@@ -180,11 +180,11 @@ __tests__ = (
|
|||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/fanbox/user/7356311/post/802343",
|
"#url" : "https://kemono.cr/fanbox/user/7356311/post/802343",
|
||||||
"#comment" : "inline image (#1286)",
|
"#comment" : "inline image (#1286)",
|
||||||
"#category": ("", "kemono", "fanbox"),
|
"#category": ("", "kemono", "fanbox"),
|
||||||
"#class" : kemono.KemonoPostExtractor,
|
"#class" : kemono.KemonoPostExtractor,
|
||||||
"#pattern" : r"https://kemono\.su/data/47/b5/47b5c014ecdcfabdf2c85eec53f1133a76336997ae8596f332e97d956a460ad2\.jpg",
|
"#pattern" : r"https://kemono\.cr/data/47/b5/47b5c014ecdcfabdf2c85eec53f1133a76336997ae8596f332e97d956a460ad2\.jpg",
|
||||||
|
|
||||||
"hash": "47b5c014ecdcfabdf2c85eec53f1133a76336997ae8596f332e97d956a460ad2",
|
"hash": "47b5c014ecdcfabdf2c85eec53f1133a76336997ae8596f332e97d956a460ad2",
|
||||||
},
|
},
|
||||||
@@ -207,7 +207,7 @@ __tests__ = (
|
|||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/patreon/user/4158582/post/32099982",
|
"#url" : "https://kemono.cr/patreon/user/4158582/post/32099982",
|
||||||
"#comment" : "allow duplicates (#2440)",
|
"#comment" : "allow duplicates (#2440)",
|
||||||
"#category": ("", "kemono", "patreon"),
|
"#category": ("", "kemono", "patreon"),
|
||||||
"#class" : kemono.KemonoPostExtractor,
|
"#class" : kemono.KemonoPostExtractor,
|
||||||
@@ -215,7 +215,7 @@ __tests__ = (
|
|||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/patreon/user/4158582/post/32099982",
|
"#url" : "https://kemono.cr/patreon/user/4158582/post/32099982",
|
||||||
"#comment" : "allow duplicates (#2440)",
|
"#comment" : "allow duplicates (#2440)",
|
||||||
"#category": ("", "kemono", "patreon"),
|
"#category": ("", "kemono", "patreon"),
|
||||||
"#class" : kemono.KemonoPostExtractor,
|
"#class" : kemono.KemonoPostExtractor,
|
||||||
@@ -224,7 +224,7 @@ __tests__ = (
|
|||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/patreon/user/3161935/post/23445732",
|
"#url" : "https://kemono.cr/patreon/user/3161935/post/23445732",
|
||||||
"#comment" : "comments (#2008)",
|
"#comment" : "comments (#2008)",
|
||||||
"#category": ("", "kemono", "patreon"),
|
"#category": ("", "kemono", "patreon"),
|
||||||
"#class" : kemono.KemonoPostExtractor,
|
"#class" : kemono.KemonoPostExtractor,
|
||||||
@@ -234,7 +234,7 @@ __tests__ = (
|
|||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/patreon/user/34134344/post/38129255",
|
"#url" : "https://kemono.cr/patreon/user/34134344/post/38129255",
|
||||||
"#comment" : "DMs (#2008); no comments",
|
"#comment" : "DMs (#2008); no comments",
|
||||||
"#category": ("", "kemono", "patreon"),
|
"#category": ("", "kemono", "patreon"),
|
||||||
"#class" : kemono.KemonoPostExtractor,
|
"#class" : kemono.KemonoPostExtractor,
|
||||||
@@ -257,7 +257,7 @@ __tests__ = (
|
|||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/patreon/user/3161935/post/68231671",
|
"#url" : "https://kemono.cr/patreon/user/3161935/post/68231671",
|
||||||
"#comment" : "announcements",
|
"#comment" : "announcements",
|
||||||
"#category": ("", "kemono", "patreon"),
|
"#category": ("", "kemono", "patreon"),
|
||||||
"#class" : kemono.KemonoPostExtractor,
|
"#class" : kemono.KemonoPostExtractor,
|
||||||
@@ -276,7 +276,7 @@ __tests__ = (
|
|||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/patreon/user/19623797/post/29035449",
|
"#url" : "https://kemono.cr/patreon/user/19623797/post/29035449",
|
||||||
"#comment" : "invalid file (#3510)",
|
"#comment" : "invalid file (#3510)",
|
||||||
"#category": ("", "kemono", "patreon"),
|
"#category": ("", "kemono", "patreon"),
|
||||||
"#class" : kemono.KemonoPostExtractor,
|
"#class" : kemono.KemonoPostExtractor,
|
||||||
@@ -285,35 +285,35 @@ __tests__ = (
|
|||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/subscribestar/user/alcorart/post/184330",
|
"#url" : "https://kemono.cr/subscribestar/user/alcorart/post/184330",
|
||||||
"#category": ("", "kemono", "subscribestar"),
|
"#category": ("", "kemono", "subscribestar"),
|
||||||
"#class" : kemono.KemonoPostExtractor,
|
"#class" : kemono.KemonoPostExtractor,
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/subscribestar/user/alcorart/post/184330",
|
"#url" : "https://kemono.cr/subscribestar/user/alcorart/post/184330",
|
||||||
"#category": ("", "kemono", "subscribestar"),
|
"#category": ("", "kemono", "subscribestar"),
|
||||||
"#class" : kemono.KemonoPostExtractor,
|
"#class" : kemono.KemonoPostExtractor,
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://www.kemono.su/subscribestar/user/alcorart/post/184330",
|
"#url" : "https://www.kemono.cr/subscribestar/user/alcorart/post/184330",
|
||||||
"#category": ("", "kemono", "subscribestar"),
|
"#category": ("", "kemono", "subscribestar"),
|
||||||
"#class" : kemono.KemonoPostExtractor,
|
"#class" : kemono.KemonoPostExtractor,
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://beta.kemono.su/subscribestar/user/alcorart/post/184330",
|
"#url" : "https://beta.kemono.cr/subscribestar/user/alcorart/post/184330",
|
||||||
"#category": ("", "kemono", "subscribestar"),
|
"#category": ("", "kemono", "subscribestar"),
|
||||||
"#class" : kemono.KemonoPostExtractor,
|
"#class" : kemono.KemonoPostExtractor,
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/patreon/user/3161935/post/68231671/revision/142470",
|
"#url" : "https://kemono.cr/patreon/user/3161935/post/68231671/revision/142470",
|
||||||
"#comment" : "revisions (#4498)",
|
"#comment" : "revisions (#4498)",
|
||||||
"#category": ("", "kemono", "patreon"),
|
"#category": ("", "kemono", "patreon"),
|
||||||
"#class" : kemono.KemonoPostExtractor,
|
"#class" : kemono.KemonoPostExtractor,
|
||||||
"#results" : "https://kemono.su/data/88/52/88521f71822dfa2f42df3beba319ea4fceda2a2d6dc59da0276a75238f743f86.jpg",
|
"#results" : "https://kemono.cr/data/88/52/88521f71822dfa2f42df3beba319ea4fceda2a2d6dc59da0276a75238f743f86.jpg",
|
||||||
|
|
||||||
"file": {
|
"file": {
|
||||||
"hash": "88521f71822dfa2f42df3beba319ea4fceda2a2d6dc59da0276a75238f743f86",
|
"hash": "88521f71822dfa2f42df3beba319ea4fceda2a2d6dc59da0276a75238f743f86",
|
||||||
@@ -339,12 +339,12 @@ __tests__ = (
|
|||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/patreon/user/3161935/post/68231671",
|
"#url" : "https://kemono.cr/patreon/user/3161935/post/68231671",
|
||||||
"#comment" : "unique revisions (#5013)",
|
"#comment" : "unique revisions (#5013)",
|
||||||
"#category": ("", "kemono", "patreon"),
|
"#category": ("", "kemono", "patreon"),
|
||||||
"#class" : kemono.KemonoPostExtractor,
|
"#class" : kemono.KemonoPostExtractor,
|
||||||
"#options" : {"revisions": "unique"},
|
"#options" : {"revisions": "unique"},
|
||||||
"#results" : "https://kemono.su/data/e3/e6/e3e6287dbc0468dd2a9d28ed276ae86788907143acf2ba10ab886a3add4c436c.jpg",
|
"#results" : "https://kemono.cr/data/e3/e6/e3e6287dbc0468dd2a9d28ed276ae86788907143acf2ba10ab886a3add4c436c.jpg",
|
||||||
"#archive" : False,
|
"#archive" : False,
|
||||||
|
|
||||||
"filename" : "wip update",
|
"filename" : "wip update",
|
||||||
@@ -363,11 +363,11 @@ __tests__ = (
|
|||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/patreon/user/3161935/post/68231671/revisions",
|
"#url" : "https://kemono.cr/patreon/user/3161935/post/68231671/revisions",
|
||||||
"#comment" : "revisions (#4498)",
|
"#comment" : "revisions (#4498)",
|
||||||
"#category": ("", "kemono", "patreon"),
|
"#category": ("", "kemono", "patreon"),
|
||||||
"#class" : kemono.KemonoPostExtractor,
|
"#class" : kemono.KemonoPostExtractor,
|
||||||
"#pattern" : r"https://kemono\.su/data/88/52/88521f71822dfa2f42df3beba319ea4fceda2a2d6dc59da0276a75238f743f86\.jpg",
|
"#pattern" : r"https://kemono\.cr/data/88/52/88521f71822dfa2f42df3beba319ea4fceda2a2d6dc59da0276a75238f743f86\.jpg",
|
||||||
"#count" : 11,
|
"#count" : 11,
|
||||||
"#archive" : False,
|
"#archive" : False,
|
||||||
|
|
||||||
@@ -382,7 +382,7 @@ __tests__ = (
|
|||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/patreon/user/3161935/post/68231671/revision/12345",
|
"#url" : "https://kemono.cr/patreon/user/3161935/post/68231671/revision/12345",
|
||||||
"#comment" : "revisions (#4498)",
|
"#comment" : "revisions (#4498)",
|
||||||
"#category": ("", "kemono", "patreon"),
|
"#category": ("", "kemono", "patreon"),
|
||||||
"#class" : kemono.KemonoPostExtractor,
|
"#class" : kemono.KemonoPostExtractor,
|
||||||
@@ -390,7 +390,7 @@ __tests__ = (
|
|||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/patreon/user/6298789/post/69764693",
|
"#url" : "https://kemono.cr/patreon/user/6298789/post/69764693",
|
||||||
"#comment" : "'published' metadata with extra microsecond data",
|
"#comment" : "'published' metadata with extra microsecond data",
|
||||||
"#category": ("", "kemono", "patreon"),
|
"#category": ("", "kemono", "patreon"),
|
||||||
"#class" : kemono.KemonoPostExtractor,
|
"#class" : kemono.KemonoPostExtractor,
|
||||||
@@ -400,7 +400,7 @@ __tests__ = (
|
|||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/gumroad/user/3267960360326/post/jwwag",
|
"#url" : "https://kemono.cr/gumroad/user/3267960360326/post/jwwag",
|
||||||
"#comment" : "empty 'file' with no 'path' (#5368)",
|
"#comment" : "empty 'file' with no 'path' (#5368)",
|
||||||
"#category": ("", "kemono", "gumroad"),
|
"#category": ("", "kemono", "gumroad"),
|
||||||
"#class" : kemono.KemonoPostExtractor,
|
"#class" : kemono.KemonoPostExtractor,
|
||||||
@@ -410,7 +410,7 @@ __tests__ = (
|
|||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/fanbox/user/49494721/post/9457614",
|
"#url" : "https://kemono.cr/fanbox/user/49494721/post/9457614",
|
||||||
"#comment" : "archives",
|
"#comment" : "archives",
|
||||||
"#category": ("", "kemono", "fanbox"),
|
"#category": ("", "kemono", "fanbox"),
|
||||||
"#class" : kemono.KemonoPostExtractor,
|
"#class" : kemono.KemonoPostExtractor,
|
||||||
@@ -446,7 +446,7 @@ __tests__ = (
|
|||||||
"password": None,
|
"password": None,
|
||||||
"path": "/c2/2c/c22c7e979355f633aaae4929b010816895a47ec37a9cfc25186a0952ec6e5774.zip",
|
"path": "/c2/2c/c22c7e979355f633aaae4929b010816895a47ec37a9cfc25186a0952ec6e5774.zip",
|
||||||
"type": "archive",
|
"type": "archive",
|
||||||
"url": "https://kemono.su/data/c2/2c/c22c7e979355f633aaae4929b010816895a47ec37a9cfc25186a0952ec6e5774.zip",
|
"url": "https://kemono.cr/data/c2/2c/c22c7e979355f633aaae4929b010816895a47ec37a9cfc25186a0952ec6e5774.zip",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"file": {
|
"file": {
|
||||||
@@ -468,7 +468,7 @@ __tests__ = (
|
|||||||
"password": None,
|
"password": None,
|
||||||
"path": "/f7/b4/f7b4dedd9742aeb8da56dc6fe07deb7639880d0800ac0b7a6e91f64ff6b40178.zip",
|
"path": "/f7/b4/f7b4dedd9742aeb8da56dc6fe07deb7639880d0800ac0b7a6e91f64ff6b40178.zip",
|
||||||
"type": "archive",
|
"type": "archive",
|
||||||
"url": "https://kemono.su/data/f7/b4/f7b4dedd9742aeb8da56dc6fe07deb7639880d0800ac0b7a6e91f64ff6b40178.zip"
|
"url": "https://kemono.cr/data/f7/b4/f7b4dedd9742aeb8da56dc6fe07deb7639880d0800ac0b7a6e91f64ff6b40178.zip"
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
||||||
@@ -492,13 +492,13 @@ __tests__ = (
|
|||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/boosty/user/felixf/post/d9d8d670-16be-4e06-8ff9-65b13e322ba8",
|
"#url" : "https://kemono.cr/boosty/user/felixf/post/d9d8d670-16be-4e06-8ff9-65b13e322ba8",
|
||||||
"#comment" : r"'\' in file paths",
|
"#comment" : r"'\' in file paths",
|
||||||
"#category": ("", "kemono", "boosty"),
|
"#category": ("", "kemono", "boosty"),
|
||||||
"#class" : kemono.KemonoPostExtractor,
|
"#class" : kemono.KemonoPostExtractor,
|
||||||
"#results" : (
|
"#results" : (
|
||||||
"https://kemono.su/data/dd/35/dd35c43d8a93f1806f094d9331a17c5037ed5d93e0f30c28d3cca2056b400aa6.png",
|
"https://kemono.cr/data/dd/35/dd35c43d8a93f1806f094d9331a17c5037ed5d93e0f30c28d3cca2056b400aa6.png",
|
||||||
"https://kemono.su/data/25/48/254864eb2523ab48be8d3fb7ad21ab3a127d61736b76602f8421cde88700a174.png",
|
"https://kemono.cr/data/25/48/254864eb2523ab48be8d3fb7ad21ab3a127d61736b76602f8421cde88700a174.png",
|
||||||
),
|
),
|
||||||
|
|
||||||
"hash": {
|
"hash": {
|
||||||
@@ -512,7 +512,7 @@ __tests__ = (
|
|||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/discord/server/488668827274444803/608504710906904576",
|
"#url" : "https://kemono.cr/discord/server/488668827274444803/608504710906904576",
|
||||||
"#category": ("", "kemono", "discord"),
|
"#category": ("", "kemono", "discord"),
|
||||||
"#class" : kemono.KemonoDiscordExtractor,
|
"#class" : kemono.KemonoDiscordExtractor,
|
||||||
"#count" : 4,
|
"#count" : 4,
|
||||||
@@ -527,7 +527,7 @@ __tests__ = (
|
|||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/discord/server/488668827274444803#608504710906904576",
|
"#url" : "https://kemono.cr/discord/server/488668827274444803#608504710906904576",
|
||||||
"#category": ("", "kemono", "discord"),
|
"#category": ("", "kemono", "discord"),
|
||||||
"#class" : kemono.KemonoDiscordExtractor,
|
"#class" : kemono.KemonoDiscordExtractor,
|
||||||
"#count" : 4,
|
"#count" : 4,
|
||||||
@@ -542,7 +542,7 @@ __tests__ = (
|
|||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/discord/server/488668827274444803/channel/608504710906904576#finish-work",
|
"#url" : "https://kemono.cr/discord/server/488668827274444803/channel/608504710906904576#finish-work",
|
||||||
"#category": ("", "kemono", "discord"),
|
"#category": ("", "kemono", "discord"),
|
||||||
"#class" : kemono.KemonoDiscordExtractor,
|
"#class" : kemono.KemonoDiscordExtractor,
|
||||||
"#count" : 4,
|
"#count" : 4,
|
||||||
@@ -558,7 +558,7 @@ __tests__ = (
|
|||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/discord/server/818188637329031199/818343747275456522",
|
"#url" : "https://kemono.cr/discord/server/818188637329031199/818343747275456522",
|
||||||
"#comment" : "pagination",
|
"#comment" : "pagination",
|
||||||
"#category": ("", "kemono", "discord"),
|
"#category": ("", "kemono", "discord"),
|
||||||
"#class" : kemono.KemonoDiscordExtractor,
|
"#class" : kemono.KemonoDiscordExtractor,
|
||||||
@@ -575,10 +575,10 @@ __tests__ = (
|
|||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/discord/server/256559665620451329/channel/462437519519383555#",
|
"#url" : "https://kemono.cr/discord/server/256559665620451329/channel/462437519519383555#",
|
||||||
"#category": ("", "kemono", "discord"),
|
"#category": ("", "kemono", "discord"),
|
||||||
"#class" : kemono.KemonoDiscordExtractor,
|
"#class" : kemono.KemonoDiscordExtractor,
|
||||||
"#pattern" : r"https://kemono\.su/data/(e3/77/e377e3525164559484ace2e64425b0cec1db08.*\.png|51/45/51453640a5e0a4d23fbf57fb85390f9c5ec154.*\.gif)",
|
"#pattern" : r"https://kemono\.cr/data/(e3/77/e377e3525164559484ace2e64425b0cec1db08.*\.png|51/45/51453640a5e0a4d23fbf57fb85390f9c5ec154.*\.gif)",
|
||||||
"#count" : ">= 2",
|
"#count" : ">= 2",
|
||||||
|
|
||||||
"hash": {
|
"hash": {
|
||||||
@@ -588,7 +588,7 @@ __tests__ = (
|
|||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/discord/server/315262215055736843/channel/315262215055736843#general",
|
"#url" : "https://kemono.cr/discord/server/315262215055736843/channel/315262215055736843#general",
|
||||||
"#comment" : "'inline' files",
|
"#comment" : "'inline' files",
|
||||||
"#category": ("", "kemono", "discord"),
|
"#category": ("", "kemono", "discord"),
|
||||||
"#class" : kemono.KemonoDiscordExtractor,
|
"#class" : kemono.KemonoDiscordExtractor,
|
||||||
@@ -600,7 +600,7 @@ __tests__ = (
|
|||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/discord/server/488668827274444803",
|
"#url" : "https://kemono.cr/discord/server/488668827274444803",
|
||||||
"#category": ("", "kemono", "discord-server"),
|
"#category": ("", "kemono", "discord-server"),
|
||||||
"#class" : kemono.KemonoDiscordServerExtractor,
|
"#class" : kemono.KemonoDiscordServerExtractor,
|
||||||
"#pattern" : kemono.KemonoDiscordExtractor.pattern,
|
"#pattern" : kemono.KemonoDiscordExtractor.pattern,
|
||||||
@@ -608,99 +608,99 @@ __tests__ = (
|
|||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/posts?q=foobar",
|
"#url" : "https://kemono.cr/posts?q=foobar",
|
||||||
"#category": ("", "kemono", "posts"),
|
"#category": ("", "kemono", "posts"),
|
||||||
"#class" : kemono.KemonoPostsExtractor,
|
"#class" : kemono.KemonoPostsExtractor,
|
||||||
"#count" : range(60, 100),
|
"#count" : range(60, 100),
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/favorites",
|
"#url" : "https://kemono.cr/favorites",
|
||||||
"#category": ("", "kemono", "favorite"),
|
"#category": ("", "kemono", "favorite"),
|
||||||
"#class" : kemono.KemonoFavoriteExtractor,
|
"#class" : kemono.KemonoFavoriteExtractor,
|
||||||
"#pattern" : kemono.KemonoUserExtractor.pattern,
|
"#pattern" : kemono.KemonoUserExtractor.pattern,
|
||||||
"#auth" : True,
|
"#auth" : True,
|
||||||
"#results" : (
|
"#results" : (
|
||||||
"https://kemono.su/patreon/user/881792",
|
"https://kemono.cr/patreon/user/881792",
|
||||||
"https://kemono.su/fanbox/user/6993449",
|
"https://kemono.cr/fanbox/user/6993449",
|
||||||
"https://kemono.su/subscribestar/user/alcorart",
|
"https://kemono.cr/subscribestar/user/alcorart",
|
||||||
"https://kemono.su/gumroad/user/shengtian",
|
"https://kemono.cr/gumroad/user/shengtian",
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/favorites?type=artist&sort=faved_seq&order=asc",
|
"#url" : "https://kemono.cr/favorites?type=artist&sort=faved_seq&order=asc",
|
||||||
"#category": ("", "kemono", "favorite"),
|
"#category": ("", "kemono", "favorite"),
|
||||||
"#class" : kemono.KemonoFavoriteExtractor,
|
"#class" : kemono.KemonoFavoriteExtractor,
|
||||||
"#pattern" : kemono.KemonoUserExtractor.pattern,
|
"#pattern" : kemono.KemonoUserExtractor.pattern,
|
||||||
"#auth" : True,
|
"#auth" : True,
|
||||||
"#results" : (
|
"#results" : (
|
||||||
"https://kemono.su/fanbox/user/6993449",
|
"https://kemono.cr/fanbox/user/6993449",
|
||||||
"https://kemono.su/patreon/user/881792",
|
"https://kemono.cr/patreon/user/881792",
|
||||||
"https://kemono.su/subscribestar/user/alcorart",
|
"https://kemono.cr/subscribestar/user/alcorart",
|
||||||
"https://kemono.su/gumroad/user/shengtian",
|
"https://kemono.cr/gumroad/user/shengtian",
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/favorites?type=post",
|
"#url" : "https://kemono.cr/favorites?type=post",
|
||||||
"#category": ("", "kemono", "favorite"),
|
"#category": ("", "kemono", "favorite"),
|
||||||
"#class" : kemono.KemonoFavoriteExtractor,
|
"#class" : kemono.KemonoFavoriteExtractor,
|
||||||
"#pattern" : kemono.KemonoPostExtractor.pattern,
|
"#pattern" : kemono.KemonoPostExtractor.pattern,
|
||||||
"#auth" : True,
|
"#auth" : True,
|
||||||
"#results" : (
|
"#results" : (
|
||||||
"https://kemono.su/subscribestar/user/alcorart/post/184329",
|
"https://kemono.cr/subscribestar/user/alcorart/post/184329",
|
||||||
"https://kemono.su/fanbox/user/6993449/post/23913",
|
"https://kemono.cr/fanbox/user/6993449/post/23913",
|
||||||
"https://kemono.su/patreon/user/881792/post/4769638",
|
"https://kemono.cr/patreon/user/881792/post/4769638",
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/favorites?type=post&sort=published&order=asc",
|
"#url" : "https://kemono.cr/favorites?type=post&sort=published&order=asc",
|
||||||
"#category": ("", "kemono", "favorite"),
|
"#category": ("", "kemono", "favorite"),
|
||||||
"#class" : kemono.KemonoFavoriteExtractor,
|
"#class" : kemono.KemonoFavoriteExtractor,
|
||||||
"#pattern" : kemono.KemonoPostExtractor.pattern,
|
"#pattern" : kemono.KemonoPostExtractor.pattern,
|
||||||
"#auth" : True,
|
"#auth" : True,
|
||||||
"#results" : (
|
"#results" : (
|
||||||
"https://kemono.su/patreon/user/881792/post/4769638",
|
"https://kemono.cr/patreon/user/881792/post/4769638",
|
||||||
"https://kemono.su/fanbox/user/6993449/post/23913",
|
"https://kemono.cr/fanbox/user/6993449/post/23913",
|
||||||
"https://kemono.su/subscribestar/user/alcorart/post/184329",
|
"https://kemono.cr/subscribestar/user/alcorart/post/184329",
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/account/favorites/artists",
|
"#url" : "https://kemono.cr/account/favorites/artists",
|
||||||
"#category": ("", "kemono", "favorite"),
|
"#category": ("", "kemono", "favorite"),
|
||||||
"#class" : kemono.KemonoFavoriteExtractor,
|
"#class" : kemono.KemonoFavoriteExtractor,
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/account/favorites/posts?sort_by=published&order=asc",
|
"#url" : "https://kemono.cr/account/favorites/posts?sort_by=published&order=asc",
|
||||||
"#category": ("", "kemono", "favorite"),
|
"#category": ("", "kemono", "favorite"),
|
||||||
"#class" : kemono.KemonoFavoriteExtractor,
|
"#class" : kemono.KemonoFavoriteExtractor,
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/artists?q=aMSa",
|
"#url" : "https://kemono.cr/artists?q=aMSa",
|
||||||
"#category": ("", "kemono", "artists"),
|
"#category": ("", "kemono", "artists"),
|
||||||
"#class" : kemono.KemonoArtistsExtractor,
|
"#class" : kemono.KemonoArtistsExtractor,
|
||||||
"#pattern" : kemono.KemonoUserExtractor.pattern,
|
"#pattern" : kemono.KemonoUserExtractor.pattern,
|
||||||
"#results" : (
|
"#results" : (
|
||||||
"https://kemono.su/patreon/user/91205314",
|
"https://kemono.cr/patreon/user/91205314",
|
||||||
"https://kemono.su/patreon/user/51528107",
|
"https://kemono.cr/patreon/user/51528107",
|
||||||
"https://kemono.su/fanbox/user/12812028",
|
"https://kemono.cr/fanbox/user/12812028",
|
||||||
"https://kemono.su/patreon/user/35237747",
|
"https://kemono.cr/patreon/user/35237747",
|
||||||
"https://kemono.su/patreon/user/8296916",
|
"https://kemono.cr/patreon/user/8296916",
|
||||||
"https://kemono.su/patreon/user/155095324",
|
"https://kemono.cr/patreon/user/155095324",
|
||||||
"https://kemono.su/patreon/user/75988930",
|
"https://kemono.cr/patreon/user/75988930",
|
||||||
"https://kemono.su/patreon/user/93703989",
|
"https://kemono.cr/patreon/user/93703989",
|
||||||
"https://kemono.su/patreon/user/100292687",
|
"https://kemono.cr/patreon/user/100292687",
|
||||||
"https://kemono.su/patreon/user/138609443",
|
"https://kemono.cr/patreon/user/138609443",
|
||||||
"https://kemono.su/patreon/user/61646879",
|
"https://kemono.cr/patreon/user/61646879",
|
||||||
"https://kemono.su/patreon/user/110669843",
|
"https://kemono.cr/patreon/user/110669843",
|
||||||
"https://kemono.su/patreon/user/44343773",
|
"https://kemono.cr/patreon/user/44343773",
|
||||||
"https://kemono.su/patreon/user/77920059",
|
"https://kemono.cr/patreon/user/77920059",
|
||||||
"https://kemono.su/patreon/user/102386631",
|
"https://kemono.cr/patreon/user/102386631",
|
||||||
),
|
),
|
||||||
|
|
||||||
"favorited": int,
|
"favorited": int,
|
||||||
@@ -712,11 +712,11 @@ __tests__ = (
|
|||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://kemono.su/artists?q=Axe&service=discord&sort_by=name&order=asc",
|
"#url" : "https://kemono.cr/artists?q=Axe&service=discord&sort_by=name&order=asc",
|
||||||
"#category": ("", "kemono", "artists"),
|
"#category": ("", "kemono", "artists"),
|
||||||
"#class" : kemono.KemonoArtistsExtractor,
|
"#class" : kemono.KemonoArtistsExtractor,
|
||||||
"#pattern" : kemono.KemonoDiscordServerExtractor.pattern,
|
"#pattern" : kemono.KemonoDiscordServerExtractor.pattern,
|
||||||
"#results" : "https://kemono.su/discord/server/1168450323023663164",
|
"#results" : "https://kemono.cr/discord/server/1168450323023663164",
|
||||||
|
|
||||||
"favorited": range(40, 80),
|
"favorited": range(40, 80),
|
||||||
"id" : "1168450323023663164",
|
"id" : "1168450323023663164",
|
||||||
|
|||||||
Reference in New Issue
Block a user