remove '&' from URL patterns
'/?&#' -> '/?#' and '?&#' -> '?#' According to https://www.ietf.org/rfc/rfc3986.txt, URLs are "organized hierarchically" by using "the slash ("/"), question mark ("?"), and number sign ("#") characters to delimit components"
This commit is contained in:
@@ -156,7 +156,7 @@ class HentaifoundryExtractor(Extractor):
|
||||
class HentaifoundryUserExtractor(HentaifoundryExtractor):
|
||||
"""Extractor for a hentaifoundry user profile"""
|
||||
subcategory = "user"
|
||||
pattern = BASE_PATTERN + r"/user/([^/?&#]+)/profile"
|
||||
pattern = BASE_PATTERN + r"/user/([^/?#]+)/profile"
|
||||
test = ("https://www.hentai-foundry.com/user/Tenpura/profile",)
|
||||
|
||||
def items(self):
|
||||
@@ -177,7 +177,7 @@ class HentaifoundryUserExtractor(HentaifoundryExtractor):
|
||||
class HentaifoundryPicturesExtractor(HentaifoundryExtractor):
|
||||
"""Extractor for all pictures of a hentaifoundry user"""
|
||||
subcategory = "pictures"
|
||||
pattern = BASE_PATTERN + r"/pictures/user/([^/?&#]+)(?:/page/(\d+))?/?$"
|
||||
pattern = BASE_PATTERN + r"/pictures/user/([^/?#]+)(?:/page/(\d+))?/?$"
|
||||
test = (
|
||||
("https://www.hentai-foundry.com/pictures/user/Tenpura", {
|
||||
"url": "ebbc981a85073745e3ca64a0f2ab31fab967fc28",
|
||||
@@ -194,7 +194,7 @@ class HentaifoundryScrapsExtractor(HentaifoundryExtractor):
|
||||
"""Extractor for scraps of a hentaifoundry user"""
|
||||
subcategory = "scraps"
|
||||
directory_fmt = ("{category}", "{user}", "Scraps")
|
||||
pattern = BASE_PATTERN + r"/pictures/user/([^/?&#]+)/scraps"
|
||||
pattern = BASE_PATTERN + r"/pictures/user/([^/?#]+)/scraps"
|
||||
test = (
|
||||
("https://www.hentai-foundry.com/pictures/user/Evulchibi/scraps", {
|
||||
"url": "7cd9c6ec6258c4ab8c44991f7731be82337492a7",
|
||||
@@ -214,7 +214,7 @@ class HentaifoundryFavoriteExtractor(HentaifoundryExtractor):
|
||||
subcategory = "favorite"
|
||||
directory_fmt = ("{category}", "{user}", "Favorites")
|
||||
archive_fmt = "f_{user}_{index}"
|
||||
pattern = BASE_PATTERN + r"/user/([^/?&#]+)/faves/pictures"
|
||||
pattern = BASE_PATTERN + r"/user/([^/?#]+)/faves/pictures"
|
||||
test = (
|
||||
("https://www.hentai-foundry.com/user/Tenpura/faves/pictures", {
|
||||
"url": "56f9ae2e89fe855e9fe1da9b81e5ec6212b0320b",
|
||||
@@ -236,7 +236,7 @@ class HentaifoundryRecentExtractor(HentaifoundryExtractor):
|
||||
archive_fmt = "r_{index}"
|
||||
pattern = BASE_PATTERN + r"/pictures/recent/(\d\d\d\d-\d\d-\d\d)"
|
||||
test = ("http://www.hentai-foundry.com/pictures/recent/2018-09-20", {
|
||||
"pattern": r"https://pictures.hentai-foundry.com/[^/]/[^/?&#]+/\d+/",
|
||||
"pattern": r"https://pictures.hentai-foundry.com/[^/]/[^/?#]+/\d+/",
|
||||
"range": "20-30",
|
||||
})
|
||||
|
||||
@@ -255,7 +255,7 @@ class HentaifoundryPopularExtractor(HentaifoundryExtractor):
|
||||
archive_fmt = "p_{index}"
|
||||
pattern = BASE_PATTERN + r"/pictures/popular()"
|
||||
test = ("http://www.hentai-foundry.com/pictures/popular", {
|
||||
"pattern": r"https://pictures.hentai-foundry.com/[^/]/[^/?&#]+/\d+/",
|
||||
"pattern": r"https://pictures.hentai-foundry.com/[^/]/[^/?#]+/\d+/",
|
||||
"range": "20-30",
|
||||
})
|
||||
|
||||
@@ -268,7 +268,7 @@ class HentaifoundryImageExtractor(HentaifoundryExtractor):
|
||||
"""Extractor for a single image from hentaifoundry.com"""
|
||||
subcategory = "image"
|
||||
pattern = (r"(?:https?://)?(?:www\.|pictures\.)?hentai-foundry\.com"
|
||||
r"/(?:pictures/user|[^/?&#])/([^/?&#]+)/(\d+)")
|
||||
r"/(?:pictures/user|[^/?#])/([^/?#]+)/(\d+)")
|
||||
test = (
|
||||
(("https://www.hentai-foundry.com"
|
||||
"/pictures/user/Tenpura/407501/shimakaze"), {
|
||||
@@ -313,7 +313,7 @@ class HentaifoundryStoriesExtractor(HentaifoundryExtractor):
|
||||
"""Extractor for stories of a hentaifoundry user"""
|
||||
subcategory = "stories"
|
||||
archive_fmt = "s_{index}"
|
||||
pattern = BASE_PATTERN + r"/stories/user/([^/?&#]+)(?:/page/(\d+))?/?$"
|
||||
pattern = BASE_PATTERN + r"/stories/user/([^/?#]+)(?:/page/(\d+))?/?$"
|
||||
test = ("https://www.hentai-foundry.com/stories/user/SnowWolf35", {
|
||||
"count": ">= 35",
|
||||
"keyword": {
|
||||
@@ -349,7 +349,7 @@ class HentaifoundryStoryExtractor(HentaifoundryExtractor):
|
||||
"""Extractor for a hentaifoundry story"""
|
||||
subcategory = "story"
|
||||
archive_fmt = "s_{index}"
|
||||
pattern = BASE_PATTERN + r"/stories/user/([^/?&#]+)/(\d+)"
|
||||
pattern = BASE_PATTERN + r"/stories/user/([^/?#]+)/(\d+)"
|
||||
test = (("https://www.hentai-foundry.com/stories/user/SnowWolf35"
|
||||
"/26416/Overwatch-High-Chapter-Voting-Location"), {
|
||||
"url": "5a67cfa8c3bf7634c8af8485dd07c1ea74ee0ae8",
|
||||
|
||||
Reference in New Issue
Block a user