mirror of
https://github.com/mikf/gallery-dl.git
synced 2025-01-31 11:41:35 +01:00
change results of text.nameext_from_url()
Instead of getting a complete 'filename' from an URL and splitting that into 'name' and 'extension', the new approach gets rid of the complete version and renames 'name' to 'filename'. (Using anything other than {extension} for a filename extension doesn't really work anyway) Example: "https://example.org/path/filename.ext" before: - filename : filename.ext - name : filename - extension: ext now: - filename : filename - extension: ext
This commit is contained in:
parent
148b8f15d0
commit
5530871b5a
@ -213,7 +213,7 @@ class ArtstationLikesExtractor(ArtstationExtractor):
|
||||
class ArtstationChallengeExtractor(ArtstationExtractor):
|
||||
"""Extractor for submissions of artstation challenges"""
|
||||
subcategory = "challenge"
|
||||
filename_fmt = "{submission_id}_{asset_id}_{name}.{extension}"
|
||||
filename_fmt = "{submission_id}_{asset_id}_{filename}.{extension}"
|
||||
directory_fmt = ("{category}", "Challenges",
|
||||
"{challenge[id]} - {challenge[title]}")
|
||||
archive_fmt = "c_{challenge[id]}_{asset_id}"
|
||||
|
@ -35,13 +35,13 @@ class BobxGalleryExtractor(BobxExtractor):
|
||||
(("http://www.bobx.com/idol/mikoto-hibi"
|
||||
"/photoset/wpb-2018-_11-0-2-8.html"), {
|
||||
"url": "93972d6a661f6627e963d62c9d15531e6b36a389",
|
||||
"keyword": "03505f6d3cdab7b5579431bfe8622eeffd36f533",
|
||||
"keyword": "6c620862db494ed05e69356ba30e604b167b0670",
|
||||
"content": "3f176b7fe752524cec21a763aa55567e41181e07",
|
||||
}),
|
||||
(("http://www.bobx.com/idol/nashiko-momotsuki"
|
||||
"/photoset/wpb-net-_221---2018-08---magic-of-summer-0-10-10.html"), {
|
||||
"url": "f5d6c0cd0881ae6f504c21a90d86e3464dc54e8e",
|
||||
"keyword": "43395ac200deaaa50627da666bd02c8f1f86a59d",
|
||||
"keyword": "f4819c75f494044348889ecd27771508464c0f5f",
|
||||
}),
|
||||
)
|
||||
|
||||
@ -61,7 +61,7 @@ class BobxGalleryExtractor(BobxExtractor):
|
||||
url = text.urljoin(self.root, url.replace("-preview-", "-"))
|
||||
data = text.nameext_from_url(url, data)
|
||||
data["image_id"] = text.parse_int(
|
||||
data["name"].rpartition("-")[2])
|
||||
data["filename"].rpartition("-")[2])
|
||||
data["num"] += 1
|
||||
yield Message.Url, url, data
|
||||
|
||||
|
@ -27,7 +27,7 @@ class Extractor():
|
||||
subcategory = ""
|
||||
categorytransfer = False
|
||||
directory_fmt = ("{category}",)
|
||||
filename_fmt = "{name}.{extension}"
|
||||
filename_fmt = "{filename}.{extension}"
|
||||
archive_fmt = ""
|
||||
cookiedomain = ""
|
||||
|
||||
|
@ -23,17 +23,17 @@ class DirectlinkExtractor(Extractor):
|
||||
test = (
|
||||
(("https://en.wikipedia.org/static/images/project-logos/enwiki.png"), {
|
||||
"url": "18c5d00077332e98e53be9fed2ee4be66154b88d",
|
||||
"keyword": "66bce3a0a6872d8497e1984eb49d54a3ed0d3d5e",
|
||||
"keyword": "e81b9fe3022e971365dd859f38e4ef717a6c69ed",
|
||||
}),
|
||||
# more complex example
|
||||
("https://example.org/path/file.webm?que=1&ry=2#fragment", {
|
||||
"url": "fd4aec8a32842343394e6078a06c3e6b647bf671",
|
||||
"keyword": "ed008f35fc18dddb2f448a18d160c949bb3b054c",
|
||||
"keyword": "ff75764b1ae66615b723a6357b8193fa2de84678",
|
||||
}),
|
||||
# percent-encoded characters
|
||||
("https://example.org/%27%3C%23/%23%3E%27.jpg?key=%3C%26%3E", {
|
||||
"url": "2627e8140727fdf743f86fe18f69f99a052c9718",
|
||||
"keyword": "c658b8b6213e46be15a25e492df385ece5771bdf",
|
||||
"keyword": "4d19dc12e41ffcb4cbec2013e335cf482377c35e",
|
||||
}),
|
||||
)
|
||||
|
||||
|
@ -22,12 +22,12 @@ class DynastyscansChapterExtractor(ChapterExtractor):
|
||||
(("http://dynasty-scans.com/chapters/"
|
||||
"hitoribocchi_no_oo_seikatsu_ch33"), {
|
||||
"url": "dce64e8c504118f1ab4135c00245ea12413896cb",
|
||||
"keyword": "ec5c56bbd5c97aa521d00f2598bba4663fb8ab9f",
|
||||
"keyword": "1564965671ac69bb7fbc340538397f6bd0aa269b",
|
||||
}),
|
||||
(("http://dynasty-scans.com/chapters/"
|
||||
"new_game_the_spinoff_special_13"), {
|
||||
"url": "dbe5bbb74da2edcfb1832895a484e2a40bc8b538",
|
||||
"keyword": "1208a102d9a1bb0b0c740a67996d9b26a9357b64",
|
||||
"keyword": "22b35029bc65d6d95db2e2c147b0a37f2d290f29",
|
||||
}),
|
||||
)
|
||||
root = "https://dynasty-scans.com"
|
||||
|
@ -24,7 +24,8 @@ class ExhentaiExtractor(Extractor):
|
||||
"""Base class for exhentai extractors"""
|
||||
category = "exhentai"
|
||||
directory_fmt = ("{category}", "{gallery_id}")
|
||||
filename_fmt = "{gallery_id}_{num:>04}_{image_token}_{name}.{extension}"
|
||||
filename_fmt = (
|
||||
"{gallery_id}_{num:>04}_{image_token}_{filename}.{extension}")
|
||||
archive_fmt = "{gallery_id}_{num}"
|
||||
cookiedomain = ".exhentai.org"
|
||||
cookienames = ("ipb_member_id", "ipb_pass_hash")
|
||||
@ -109,7 +110,7 @@ class ExhentaiGalleryExtractor(ExhentaiExtractor):
|
||||
r"|/s/([\da-f]{10})/(\d+)-(\d+))")
|
||||
test = (
|
||||
("https://exhentai.org/g/960460/4f0e369d82/", {
|
||||
"keyword": "ba0785e49e3877cfa3f91c1ad9a5ac7816339bf5",
|
||||
"keyword": "993bfaf68b4823084fbd0d3339564666463b1432",
|
||||
"content": "493d759de534355c9f55f8e365565b62411de146",
|
||||
}),
|
||||
("https://exhentai.org/g/960461/4f0e369d82/", {
|
||||
|
@ -21,14 +21,14 @@ class FallenangelsChapterExtractor(ChapterExtractor):
|
||||
test = (
|
||||
("https://manga.fascans.com/manga/chronos-ruler/20/1", {
|
||||
"url": "4604a7914566cc2da0ff789aa178e2d1c8c241e3",
|
||||
"keyword": "4e1722cf0ed8ee5fc5c64147ac3f39342e767cd8",
|
||||
"keyword": "2dfcc50020e32cd207be88e2a8fac0933e36bdfb",
|
||||
}),
|
||||
("http://truyen.fascans.com/manga/hungry-marie/8", {
|
||||
"url": "1f923d9cb337d5e7bbf4323719881794a951c6ae",
|
||||
"keyword": "c7beeb7d8a65d5d8ab451f076f584bd4d52b7210",
|
||||
"keyword": "2bdb7334c0e3eceb9946ffd3132df679b4a94f6a",
|
||||
}),
|
||||
("http://manga.fascans.com/manga/rakudai-kishi-no-eiyuutan/19.5", {
|
||||
"keyword": "bf7dd1c462a80ffe50b92fec00b7acda2f8b800e",
|
||||
"keyword": "9fcca4c1a90d11f00764f62477ebe10bd408021c",
|
||||
}),
|
||||
)
|
||||
|
||||
|
@ -52,7 +52,7 @@ class FlickrImageExtractor(FlickrExtractor):
|
||||
test = (
|
||||
("https://www.flickr.com/photos/departingyyz/16089302239", {
|
||||
"url": "7f0887f5953f61c8b79a695cb102ea309c0346b0",
|
||||
"keyword": "5ecdaf0192802451b7daca9b81f393f207ff7ee9",
|
||||
"keyword": "9ab391f989e50a9e3679303f1e2111d84dce3d2e",
|
||||
"content": "6aaad7512d335ca93286fe2046e7fe3bb93d808e",
|
||||
}),
|
||||
("http://c2.staticflickr.com/2/1475/24531000464_9a7503ae68_b.jpg", {
|
||||
@ -115,7 +115,7 @@ class FlickrAlbumExtractor(FlickrExtractor):
|
||||
test = (
|
||||
(("https://www.flickr.com/photos/shona_s/albums/72157633471741607"), {
|
||||
"url": "baf4a3d1b15afcecf9638000a12c0eb3d5df9024",
|
||||
"keyword": "b579f19134ab8217f05979e52adf7712898492c7",
|
||||
"keyword": "67ada37649e1219a414838027c3ee187119dcb33",
|
||||
}),
|
||||
("https://www.flickr.com/photos/shona_s/albums", {
|
||||
"url": "657d541470482e0d69deec33ab97a6d7d4af6fe4",
|
||||
@ -165,7 +165,7 @@ class FlickrGalleryExtractor(FlickrExtractor):
|
||||
test = (("https://www.flickr.com/photos/flickr/"
|
||||
"galleries/72157681572514792/"), {
|
||||
"url": "1d012592bc7ce3a24b2b025b1176a31e947122f6",
|
||||
"keyword": "30cdec50e125f1cdf2425eab6052590535323c2d",
|
||||
"keyword": "6abe4920dca5b79127fee16d90564665d379bb29",
|
||||
})
|
||||
|
||||
def __init__(self, match):
|
||||
@ -210,7 +210,7 @@ class FlickrUserExtractor(FlickrExtractor):
|
||||
pattern = r"(?:https?://)?(?:www\.)?flickr\.com/photos/([^/]+)/?$"
|
||||
test = ("https://www.flickr.com/photos/shona_s/", {
|
||||
"url": "d125b536cd8c4229363276b6c84579c394eec3a2",
|
||||
"keyword": "2cdeae22cd9c3ff19ce905215f3782a7494d8264",
|
||||
"keyword": "3ef7783add7a34db1cf214da7d6502d3f24e897d",
|
||||
})
|
||||
|
||||
def photos(self):
|
||||
@ -225,7 +225,7 @@ class FlickrFavoriteExtractor(FlickrExtractor):
|
||||
pattern = r"(?:https?://)?(?:www\.)?flickr\.com/photos/([^/]+)/favorites"
|
||||
test = ("https://www.flickr.com/photos/shona_s/favorites", {
|
||||
"url": "5129b3f5bfa83cc25bdae3ce476036de1488dad2",
|
||||
"keyword": "0e1c9521b6051411b585c9b41a4dc0bcde20e616",
|
||||
"keyword": "ed56cda8c1067a44eb45f1df5f079a9a3a4470c6",
|
||||
})
|
||||
|
||||
def photos(self):
|
||||
|
@ -168,7 +168,7 @@ EXTRACTORS = {
|
||||
"test-chapter":
|
||||
(("https://kobato.hologfx.com/reader/read/"
|
||||
"hitoribocchi_no_oo_seikatsu/en/3/34"), {
|
||||
"keyword": "998d1d523da028284b8dd4b7b54ceae4af6cb65a",
|
||||
"keyword": "6e719ac86f0c6dab89390dd7e507e678459e0dbc",
|
||||
}),
|
||||
"test-manga":
|
||||
(("https://kobato.hologfx.com/reader/series/"
|
||||
@ -183,10 +183,10 @@ EXTRACTORS = {
|
||||
"decode": "base64",
|
||||
"test-chapter": (
|
||||
("https://jaiminisbox.com/reader/read/uratarou/en/0/1/", {
|
||||
"keyword": "d8919bc8f0351b44e938862214e654401962b5a5",
|
||||
"keyword": "6009af77cc9c05528ab1fdda47b1ad9d4811c673",
|
||||
}),
|
||||
("https://jaiminisbox.com/reader/read/dr-stone/en/0/16/", {
|
||||
"keyword": "9b658599651f1ae87cab3e0e29dd21e8337a362c",
|
||||
"keyword": "8607375c24b1d0db7f52d059ef5baff793aa458e",
|
||||
}),
|
||||
),
|
||||
"test-manga":
|
||||
@ -200,7 +200,7 @@ EXTRACTORS = {
|
||||
"test-chapter":
|
||||
("https://reader.kireicake.com/read/wonderland/en/1/1/", {
|
||||
"url": "b2d36bc0bc67e4c461c3a4d6444a2fd339f5d07e",
|
||||
"keyword": "47e0cf69f95ab3b820bda05014aec38d3b824018",
|
||||
"keyword": "9f80947920a325e33aea7f5cd69ea669171903b6",
|
||||
}),
|
||||
"test-manga":
|
||||
("https://reader.kireicake.com/series/wonderland/", {
|
||||
@ -215,7 +215,7 @@ EXTRACTORS = {
|
||||
(("https://read.powermanga.org"
|
||||
"/read/one_piece_digital_colour_comics/en/0/75/"), {
|
||||
"url": "854c5817f8f767e1bccd05fa9d58ffb5a4b09384",
|
||||
"keyword": "9985bcb78491dff9c725958b06bba606be51b6d3",
|
||||
"keyword": "a60c42f2634b7387899299d411ff494ed0ad6dbe",
|
||||
}),
|
||||
"test-manga":
|
||||
(("https://read.powermanga.org"
|
||||
@ -239,7 +239,7 @@ EXTRACTORS = {
|
||||
"test-chapter":
|
||||
("https://reader.seaotterscans.com/read/100_days/en/0/5/", {
|
||||
"url": "63d46b8883cc652dfe8bd5be4492160dd31f06a8",
|
||||
"keyword": "5349c2fbaa88070e6af600de17a6c4e212243e8e",
|
||||
"keyword": "401d55b900d69a3732c7221755543e17c4771dd3",
|
||||
}),
|
||||
"test-manga":
|
||||
("https://reader.seaotterscans.com/series/marry_me/", {
|
||||
@ -255,12 +255,12 @@ EXTRACTORS = {
|
||||
(("http://sensescans.com/reader/read/"
|
||||
"magi__labyrinth_of_magic/en/37/369/"), {
|
||||
"url": "a399ef037cdfbc25b09d435cc2ea1e3e454a6812",
|
||||
"keyword": "43ba75615d3e77d507808b0f3a8fd7fc72232a60",
|
||||
"keyword": "07acd84fb18a9f1fd6dff5befe711bcca0ff9988",
|
||||
}),
|
||||
(("http://reader.sensescans.com/read/"
|
||||
"magi__labyrinth_of_magic/en/37/369/"), {
|
||||
"url": "a399ef037cdfbc25b09d435cc2ea1e3e454a6812",
|
||||
"keyword": "43ba75615d3e77d507808b0f3a8fd7fc72232a60",
|
||||
"keyword": "07acd84fb18a9f1fd6dff5befe711bcca0ff9988",
|
||||
}),
|
||||
),
|
||||
"test-manga":
|
||||
@ -276,12 +276,12 @@ EXTRACTORS = {
|
||||
(("http://www.slide.world-three.org"
|
||||
"/read/black_bullet/en/2/7/page/1"), {
|
||||
"url": "be2f04f6e2d311b35188094cfd3e768583271584",
|
||||
"keyword": "28edfeccc92f7ea29546d5616e689dcfcbac59d9",
|
||||
"keyword": "967d536a65de4d52478d5b666a1760b181eddb6e",
|
||||
}),
|
||||
(("http://www.slide.world-three.org"
|
||||
"/read/idolmster_cg_shuffle/en/0/4/2/"), {
|
||||
"url": "6028ea5ca282744f925dfad92eeb98509f9cc78c",
|
||||
"keyword": "d478e9f20847deb1844dba318acaa8b91c19468a",
|
||||
"keyword": "f3cfe2ad3388991f1d045c85d0fa94795a7694dc",
|
||||
}),
|
||||
),
|
||||
"test-manga":
|
||||
|
@ -51,7 +51,7 @@ class HbrowseChapterExtractor(HbrowseBase, ChapterExtractor):
|
||||
pattern = r"(?:https?://)?(?:www\.)?hbrowse\.com(/(\d+)/c(\d+))"
|
||||
test = ("https://www.hbrowse.com/10363/c00000", {
|
||||
"url": "6feefbc9f4b98e20d8425ddffa9dd111791dc3e6",
|
||||
"keyword": "95ec73a58aeac57f4dd20f0fa0c2812b045a30e8",
|
||||
"keyword": "274996f6c809e5250b6ff3abbc5147e29f89d9a5",
|
||||
"content": "44578ebbe176c2c27434966aef22945787e2781e",
|
||||
})
|
||||
|
||||
|
@ -26,7 +26,7 @@ class Hentai2readChapterExtractor(Hentai2readBase, ChapterExtractor):
|
||||
pattern = r"(?:https?://)?(?:www\.)?hentai2read\.com(/[^/?&#]+/(\d+))"
|
||||
test = ("https://hentai2read.com/amazon_elixir/1/", {
|
||||
"url": "964b942cf492b3a129d2fe2608abfc475bc99e71",
|
||||
"keyword": "9845105898d28c6a540cffdea60a1a20fab52431",
|
||||
"keyword": "ff84b8f751f0e4ee37717efc4332ff1db71951d9",
|
||||
})
|
||||
|
||||
def __init__(self, match):
|
||||
|
@ -21,7 +21,7 @@ class HentaicafeChapterExtractor(foolslide.FoolslideChapterExtractor):
|
||||
r"(/manga/read/[^/?&#]+/[a-z-]+/\d+/\d+(?:/\d+)?)")
|
||||
test = ("https://hentai.cafe/manga/read/saitom-box/en/0/1/", {
|
||||
"url": "8c6a8c56875ba3ed7ab0a74a64f9960077767fc2",
|
||||
"keyword": "1b24a3e8625b89d160d01ce3eb5e5eb12fbbf648",
|
||||
"keyword": "3688ddd3f3077c93eaa8021477ef66d18dc6c159",
|
||||
})
|
||||
root = "https://hentai.cafe"
|
||||
|
||||
|
@ -126,7 +126,7 @@ class HentaifoundryUserExtractor(HentaifoundryExtractor):
|
||||
test = (
|
||||
("https://www.hentai-foundry.com/pictures/user/Tenpura", {
|
||||
"url": "ebbc981a85073745e3ca64a0f2ab31fab967fc28",
|
||||
"keyword": "d56e75566dc7dfe71d2ebd08c056a47f8832372d",
|
||||
"keyword": "63ad576f87f82fa166ca4676761762f7f8496cf5",
|
||||
}),
|
||||
("https://www.hentai-foundry.com/pictures/user/Tenpura/page/3"),
|
||||
("https://www.hentai-foundry.com/user/Tenpura/profile"),
|
||||
@ -152,7 +152,7 @@ class HentaifoundryScrapsExtractor(HentaifoundryExtractor):
|
||||
test = (
|
||||
("https://www.hentai-foundry.com/pictures/user/Evulchibi/scraps", {
|
||||
"url": "00a11e30b73ff2b00a1fba0014f08d49da0a68ec",
|
||||
"keyword": "8c9a2ad4bf20247bcebb7aef3cfe7016f35da4a7",
|
||||
"keyword": "410c6c900cfd23a8dd1e53dfcc97a79ea68c3359",
|
||||
}),
|
||||
("https://www.hentai-foundry.com"
|
||||
"/pictures/user/Evulchibi/scraps/page/3"),
|
||||
@ -180,7 +180,7 @@ class HentaifoundryFavoriteExtractor(HentaifoundryExtractor):
|
||||
test = (
|
||||
("https://www.hentai-foundry.com/user/Tenpura/faves/pictures", {
|
||||
"url": "56f9ae2e89fe855e9fe1da9b81e5ec6212b0320b",
|
||||
"keyword": "0ab79552ae2fbfcf501ebbebcf19c2dfc9b5eb4e",
|
||||
"keyword": "2b9478725e66d46ea043fa87476bbd28546958e7",
|
||||
}),
|
||||
("https://www.hentai-foundry.com"
|
||||
"/user/Tenpura/faves/pictures/page/3"),
|
||||
@ -235,7 +235,7 @@ class HentaifoundryImageExtractor(HentaifoundryExtractor):
|
||||
(("https://www.hentai-foundry.com"
|
||||
"/pictures/user/Tenpura/407501/shimakaze"), {
|
||||
"url": "fbf2fd74906738094e2575d2728e8dc3de18a8a3",
|
||||
"keyword": "aa64a4cfcd9c254ee143d9a3522195d11f8c1fb8",
|
||||
"keyword": "cbb9381e6c2acce58db4adf4efc0ad7d138bddc4",
|
||||
"content": "91bf01497c39254b6dfb234a18e8f01629c77fd1",
|
||||
}),
|
||||
("https://www.hentai-foundry.com/pictures/user/Tenpura/340853/", {
|
||||
|
@ -23,7 +23,7 @@ class HentaifoxGalleryExtractor(ChapterExtractor):
|
||||
test = ("https://hentaifox.com/gallery/56622/", {
|
||||
"pattern": r"https://i\d*\.hentaifox\.com/\d+/\d+/\d+\.jpg",
|
||||
"count": 24,
|
||||
"keyword": "80fc0fb5db9626fffb078dd2e4f9aff4a9348686",
|
||||
"keyword": "d0df47e073e32a7752236ab151949c3820f9d81e",
|
||||
})
|
||||
root = "https://hentaifox.com"
|
||||
|
||||
|
@ -26,7 +26,7 @@ class HentaihereChapterExtractor(HentaihereBase, ChapterExtractor):
|
||||
pattern = r"(?:https?://)?(?:www\.)?hentaihere\.com/m/S(\d+)/(\d+)"
|
||||
test = ("https://hentaihere.com/m/S13812/1/1/", {
|
||||
"url": "964b942cf492b3a129d2fe2608abfc475bc99e71",
|
||||
"keyword": "e9382a9be337abce3db2b1132e85751379dc05c5",
|
||||
"keyword": "cbcee0c0eb178c4b87f06a834085784f8dddad24",
|
||||
})
|
||||
|
||||
def __init__(self, match):
|
||||
|
@ -18,13 +18,13 @@ class HitomiGalleryExtractor(ChapterExtractor):
|
||||
category = "hitomi"
|
||||
subcategory = "gallery"
|
||||
directory_fmt = ("{category}", "{gallery_id} {title}")
|
||||
filename_fmt = "{category}_{gallery_id}_{page:>03}_{name}.{extension}"
|
||||
filename_fmt = "{category}_{gallery_id}_{page:>03}_{filename}.{extension}"
|
||||
archive_fmt = "{gallery_id}_{page}"
|
||||
pattern = r"(?:https?://)?hitomi\.la/(?:galleries|reader)/(\d+)"
|
||||
test = (
|
||||
("https://hitomi.la/galleries/867789.html", {
|
||||
"url": "cb759868d090fe0e2655c3e29ebf146054322b6d",
|
||||
"keyword": "85e453d01ee7f137669e75a764ccdc65ca092ad2",
|
||||
"keyword": "52951edb50163180eb669a78aef0bab0522d32b7",
|
||||
}),
|
||||
("https://hitomi.la/galleries/1036181.html", {
|
||||
# "aa" subdomain for gallery-id ending in 1 (#142)
|
||||
|
@ -17,7 +17,7 @@ class ImagefapExtractor(Extractor):
|
||||
"""Base class for imagefap extractors"""
|
||||
category = "imagefap"
|
||||
directory_fmt = ("{category}", "{gallery_id} {title}")
|
||||
filename_fmt = "{category}_{gallery_id}_{name}.{extension}"
|
||||
filename_fmt = "{category}_{gallery_id}_{filename}.{extension}"
|
||||
archive_fmt = "{gallery_id}_{image_id}"
|
||||
root = "https://www.imagefap.com"
|
||||
|
||||
@ -30,12 +30,12 @@ class ImagefapGalleryExtractor(ImagefapExtractor):
|
||||
test = (
|
||||
("https://www.imagefap.com/pictures/7102714", {
|
||||
"url": "268995eac5d01ddecd0fe58cfa9828390dc85a84",
|
||||
"keyword": "3b90205f434bd1e0461bdbd5d2d9c34056b50fe6",
|
||||
"keyword": "b5bd65ab2ff574ed1639db9a43c7b1b8583c85ef",
|
||||
"content": "694a0a57385980a6f90fbc296cadcd6c11ba2dab",
|
||||
}),
|
||||
("https://www.imagefap.com/gallery/5486966", {
|
||||
"url": "14906b4f0b8053d1d69bc730a325acb793cbc898",
|
||||
"keyword": "66ccb98b69cb52f89540224260641002f41f6ece",
|
||||
"keyword": "ab90972f3527a2011478fabc621a2c99a541f752",
|
||||
}),
|
||||
("https://www.imagefap.com/gallery.php?gid=7102714"),
|
||||
)
|
||||
@ -97,7 +97,7 @@ class ImagefapImageExtractor(ImagefapExtractor):
|
||||
pattern = r"(?:https?://)?(?:www\.)?imagefap\.com/photo/(\d+)"
|
||||
test = ("https://www.imagefap.com/photo/1369341772/", {
|
||||
"url": "b31ee405b61ff0450020a1bf11c0581ca9adb471",
|
||||
"keyword": "b49940c04ed30bfc1c28ec39eb08b3be5753ce8a",
|
||||
"keyword": "eadaa8f8012298384996efd21cf1f9e9e0dddb9b",
|
||||
})
|
||||
|
||||
def __init__(self, match):
|
||||
|
@ -76,12 +76,12 @@ class ImxtoImageExtractor(ImagehostImageExtractor):
|
||||
test = (
|
||||
("https://imx.to/i/1qdeva", { # new-style URL
|
||||
"url": "ab2173088a6cdef631d7a47dec4a5da1c6a00130",
|
||||
"keyword": "7bb48a2327561ae04ea7a6d4e18e715379e2f497",
|
||||
"keyword": "1153a986c939d7aed599905588f5c940048bc517",
|
||||
"content": "0c8768055e4e20e7c7259608b67799171b691140",
|
||||
}),
|
||||
("https://imx.to/img-57a2050547b97.html", { # old-style URL
|
||||
"url": "a83fe6ef1909a318c4d49fcf2caf62f36c3f9204",
|
||||
"keyword": "451ad3d4745489c2e663acb1281d89c36ada940a",
|
||||
"keyword": "fd2240aee77a21b8252d5b829a1f7e542f927f09",
|
||||
"content": "54592f2635674c25677c6872db3709d343cdf92f",
|
||||
}),
|
||||
("https://img.yt/img-57a2050547b97.html", { # img.yt domain
|
||||
@ -119,7 +119,7 @@ class AcidimgImageExtractor(ImagehostImageExtractor):
|
||||
pattern = r"(?:https?://)?((?:www\.)?acidimg\.cc/img-([a-z0-9]+)\.html)"
|
||||
test = ("https://acidimg.cc/img-5acb6b9de4640.html", {
|
||||
"url": "f132a630006e8d84f52d59555191ed82b3b64c04",
|
||||
"keyword": "183098c59d9244650f666b6cb4df96d76d2aeae8",
|
||||
"keyword": "a8bb9ab8b2f6844071945d31f8c6e04724051f37",
|
||||
"content": "0c8768055e4e20e7c7259608b67799171b691140",
|
||||
})
|
||||
https = True
|
||||
@ -156,7 +156,7 @@ class ImagetwistImageExtractor(ImagehostImageExtractor):
|
||||
pattern = r"(?:https?://)?((?:www\.)?imagetwist\.com/([a-z0-9]{12}))"
|
||||
test = ("https://imagetwist.com/4e46hv31tu0q/test.jpg", {
|
||||
"url": "c999dc1a5dec0525ac9eb8c092f173dfe6dba0b0",
|
||||
"keyword": "30dd34dcb06b5b51c6cfff199c610b24edb7b9bc",
|
||||
"keyword": "a9f2e01757ec96d4ee4752cbd8446ede80f7935e",
|
||||
"content": "96b1fd099b06faad5879fce23a7e4eb8290d8810",
|
||||
})
|
||||
https = True
|
||||
@ -196,7 +196,7 @@ class PixhostImageExtractor(ImagehostImageExtractor):
|
||||
r"/show/\d+/(\d+)_[^/?&#]+)")
|
||||
test = ("https://pixhost.to/show/224/96246707_test-.png", {
|
||||
"url": "8f3d41fdd2dbec4c844e5ee45bf49961fbd79c67",
|
||||
"keyword": "d7b19630acf8da39036581d3d5597f97da883626",
|
||||
"keyword": "ecefe2d5814286f9d1dff3d88d9bdc78dd456c5d",
|
||||
"content": "0c8768055e4e20e7c7259608b67799171b691140",
|
||||
})
|
||||
https = True
|
||||
@ -216,7 +216,7 @@ class PostimgImageExtractor(ImagehostImageExtractor):
|
||||
r"/(?:image/)?([^/?&#]+)/?)")
|
||||
test = ("https://postimg.cc/Wtn2b3hC", {
|
||||
"url": "0794cfda9b8951a8ac3aa692472484200254ab86",
|
||||
"keyword": "dd8822e7d359c33dba85280fe31bea7d098cd1d1",
|
||||
"keyword": "2d05808d04e4e83e33200db83521af06e3147a84",
|
||||
"content": "cfaa8def53ed1a575e0c665c9d6d8cf2aac7a0ee",
|
||||
})
|
||||
https = True
|
||||
@ -235,7 +235,7 @@ class TurboimagehostImageExtractor(ImagehostImageExtractor):
|
||||
r"/p/(\d+)/[^/?&#]+\.html)")
|
||||
test = ("https://www.turboimagehost.com/p/39078423/test--.png.html", {
|
||||
"url": "b94de43612318771ced924cb5085976f13b3b90e",
|
||||
"keyword": "c1391465dc7b590b0eb8ea2a8cd235733c6fce2b",
|
||||
"keyword": "704757ca8825f51cec516ec44c1e627c1f2058ca",
|
||||
"content": "0c8768055e4e20e7c7259608b67799171b691140",
|
||||
})
|
||||
https = True
|
||||
|
@ -62,18 +62,18 @@ class ImgboxGalleryExtractor(AsynchronousMixin, ImgboxExtractor):
|
||||
"""Extractor for image galleries from imgbox.com"""
|
||||
subcategory = "gallery"
|
||||
directory_fmt = ("{category}", "{title} - {gallery_key}")
|
||||
filename_fmt = "{num:>03}-{name}.{extension}"
|
||||
filename_fmt = "{num:>03}-{filename}.{extension}"
|
||||
archive_fmt = "{gallery_key}_{image_key}"
|
||||
pattern = r"(?:https?://)?(?:www\.)?imgbox\.com/g/([A-Za-z0-9]{10})"
|
||||
test = (
|
||||
("https://imgbox.com/g/JaX5V5HX7g", {
|
||||
"url": "678f0bca1251d810372326ea4f16582cafa800e4",
|
||||
"keyword": "92499344257cf8c72695a8dab4ccc15ca7655c1e",
|
||||
"keyword": "4b1e62820ac2c6205b7ad0b6322cc8e00dbe1b0c",
|
||||
"content": "d20307dc8511ac24d688859c55abf2e2cc2dd3cc",
|
||||
}),
|
||||
("https://imgbox.com/g/cUGEkRbdZZ", {
|
||||
"url": "d839d47cbbbeb121f83c520072512f7e51f52107",
|
||||
"keyword": "b352ca26009ba10d80b5e46067a78b4a51c6c2c9",
|
||||
"keyword": "fb0427b87983197849fb2887905e758f3e50cb6e",
|
||||
}),
|
||||
("https://imgbox.com/g/JaX5V5HX7h", {
|
||||
"exception": exception.NotFoundError,
|
||||
@ -111,7 +111,7 @@ class ImgboxImageExtractor(ImgboxExtractor):
|
||||
test = (
|
||||
("https://imgbox.com/qHhw7lpG", {
|
||||
"url": "d931f675a9b848fa7cb9077d6c2b14eb07bdb80f",
|
||||
"keyword": "a7a65a05a49d9a0eae95d637019af55faad09c5e",
|
||||
"keyword": "dfc72310026b45f3feb4f9cada20c79b2575e1af",
|
||||
"content": "0c8768055e4e20e7c7259608b67799171b691140",
|
||||
}),
|
||||
("https://imgbox.com/qHhw7lpH", {
|
||||
|
@ -22,7 +22,7 @@ class ImgthGalleryExtractor(Extractor):
|
||||
pattern = r"(?:https?://)?imgth\.com/gallery/(\d+)"
|
||||
test = ("http://imgth.com/gallery/37/wallpaper-anime", {
|
||||
"url": "4ae1d281ca2b48952cf5cca57e9914402ad72748",
|
||||
"keyword": "e62d14f20ded393d28c2789fcc34ea2c30bc6a7c",
|
||||
"keyword": "6f8c00d6849ea89d1a028764675ec1fe9dbd87e2",
|
||||
})
|
||||
|
||||
def __init__(self, match):
|
||||
|
@ -17,7 +17,7 @@ class KhinsiderSoundtrackExtractor(AsynchronousMixin, Extractor):
|
||||
category = "khinsider"
|
||||
subcategory = "soundtrack"
|
||||
directory_fmt = ("{category}", "{album}")
|
||||
archive_fmt = "{album}_{name}.{extension}"
|
||||
archive_fmt = "{album}_{filename}.{extension}"
|
||||
pattern = (r"(?:https?://)?downloads\.khinsider\.com"
|
||||
r"/game-soundtracks/album/([^/?&#]+)")
|
||||
test = (("https://downloads.khinsider.com"
|
||||
@ -25,7 +25,7 @@ class KhinsiderSoundtrackExtractor(AsynchronousMixin, Extractor):
|
||||
"pattern": r"https?://\d+\.\d+\.\d+\.\d+/ost/horizon-riders-wii/[^/]+"
|
||||
r"/Horizon%20Riders%20Wii%20-%20Full%20Soundtrack\.mp3",
|
||||
"count": 1,
|
||||
"keyword": "d91cf3edee6713b536eaf3995743f0be7dc72f68",
|
||||
"keyword": "b4f460c78dd23e1f1121f4ac784dd67ded7c2679",
|
||||
})
|
||||
root = "https://downloads.khinsider.com"
|
||||
|
||||
|
@ -74,19 +74,19 @@ class KissmangaChapterExtractor(KissmangaBase, ChapterExtractor):
|
||||
test = (
|
||||
("https://kissmanga.com/Manga/Dropout/Ch-000---Oneshot-?id=145847", {
|
||||
"url": "46e63fd63e9e16f19bc1e6c7a45dc060815642fd",
|
||||
"keyword": "4a3a9341d453541de0dbfa24cd6b2e3ed39c0182",
|
||||
"keyword": "1cd0b5214ac7ae4d53e2fd8fec40ceec84cd09bf",
|
||||
}),
|
||||
("https://kissmanga.com/Manga/Urban-Tales/a?id=256717", {
|
||||
"url": "c26be8bf9c2abacee2076979d021634092cf38f1",
|
||||
"keyword": "ffc11b630da44fe67709ed0473756cf51b90a05c",
|
||||
"keyword": "e1d16780df8e04076ed2b5f0637c5b710ec2f2ea",
|
||||
}),
|
||||
("https://kissmanga.com/Manga/Monster/Monster-79?id=7608", {
|
||||
"count": 23,
|
||||
"keyword": "d47c94f4c57f4ab690a34b60fefac7b294468856",
|
||||
"keyword": "f433a7a8fae840e17dace316a243fa27faab86de",
|
||||
}),
|
||||
("https://kissmanga.com/Manga/Houseki-no-Kuni/Oneshot?id=404189", {
|
||||
"count": 49,
|
||||
"keyword": "7835a19c9fc54ec4f2b345e8be3e865cfa57da5c",
|
||||
"keyword": "d44d1b21d08e4dbf888b0c450a3f1bc919588b4f",
|
||||
}),
|
||||
("https://kissmanga.com/mAnGa/mOnStEr/Monster-79?id=7608"),
|
||||
)
|
||||
|
@ -52,12 +52,12 @@ class KomikcastChapterExtractor(KomikcastBase, ChapterExtractor):
|
||||
(("https://komikcast.com/chapter/"
|
||||
"apotheosis-chapter-02-2-bahasa-indonesia/"), {
|
||||
"url": "2a108bf8a96753266610afef625d248f858e13f3",
|
||||
"keyword": "9964a7ce7c8a518aebdccdea0e05858439c7ad92",
|
||||
"keyword": "5c677ec86957f3bdad2bd5102a69a872a11c0f92",
|
||||
}),
|
||||
(("https://komikcast.com/chapter/"
|
||||
"tonari-no-kashiwagi-san-chapter-18b/"), {
|
||||
"url": "aff90dd21dbb945a726778b10bdef522af7c42fe",
|
||||
"keyword": "94bb85aec6654ab5af0c10419ca388fcd9c73b47",
|
||||
"keyword": "2469acd77c635fedcc131b5d40e7acc36e4674ad",
|
||||
}),
|
||||
)
|
||||
|
||||
|
@ -50,13 +50,13 @@ class MangadexChapterExtractor(MangadexExtractor):
|
||||
pattern = r"(?:https?://)?(?:www\.)?mangadex\.(?:org|com)/chapter/(\d+)"
|
||||
test = (
|
||||
("https://mangadex.org/chapter/122094", {
|
||||
"keyword": "7bd7f82ab9d3f06976c4b68afe78d0040851ac3c",
|
||||
"keyword": "1c834dca33025f521e1874aee1f71c51e28ebf99",
|
||||
"content": "7ab3bef5caccb62b881f8e6e70359d3c7be8137f",
|
||||
}),
|
||||
# oneshot
|
||||
("https://mangadex.org/chapter/138086", {
|
||||
"count": 64,
|
||||
"keyword": "435e157dc5529d152458ba751ffe5bfbaf4850fb",
|
||||
"keyword": "178777bd0352fb19eb934cbee5630d16e3fb60ab",
|
||||
}),
|
||||
)
|
||||
|
||||
|
@ -19,7 +19,7 @@ class MangafoxChapterExtractor(ChapterExtractor):
|
||||
r"(/manga/[^/]+/((?:v(\d+)/)?c(\d+)([^/?&#]*)))")
|
||||
test = (
|
||||
("http://fanfox.net/manga/kidou_keisatsu_patlabor/v05/c006.2/1.html", {
|
||||
"keyword": "36b570e9ef11b4748407324fe08bebbe4856e6fd",
|
||||
"keyword": "5661dab258d42d09d98f194f7172fb9851a49766",
|
||||
"content": "5c50c252dcf12ffecf68801f4db8a2167265f66c",
|
||||
}),
|
||||
("http://mangafox.me/manga/kidou_keisatsu_patlabor/v05/c006.2/"),
|
||||
|
@ -27,7 +27,7 @@ class MangahereChapterExtractor(MangahereBase, ChapterExtractor):
|
||||
r"([^/]+(?:/v0*(\d+))?/c([^/?&#]+))")
|
||||
test = (
|
||||
("https://www.mangahere.cc/manga/dongguo_xiaojie/c004.2/", {
|
||||
"keyword": "6407556817bd1fd2bdc8dee3fd2a718f5724ddc0",
|
||||
"keyword": "7c98d7b50a47e6757b089aa875a53aa970cac66f",
|
||||
"content": "708d475f06893b88549cbd30df1e3f9428f2c884",
|
||||
}),
|
||||
("http://www.mangahere.co/manga/dongguo_xiaojie/c003.2/"),
|
||||
|
@ -22,7 +22,7 @@ class MangapandaChapterExtractor(MangapandaBase, MangareaderChapterExtractor):
|
||||
pattern = r"(?:https?://)?(?:www\.)?mangapanda\.com((/[^/?&#]+)/(\d+))"
|
||||
test = ("https://www.mangapanda.com/red-storm/2", {
|
||||
"url": "1f633f776e950531ba9b1e81965316458e785261",
|
||||
"keyword": "32b5e84017c2bf5f122b339ecf40899e41f18cc9",
|
||||
"keyword": "b24df4b9cc36383fb6a44e06d32a3884a4dcb5fb",
|
||||
})
|
||||
|
||||
|
||||
|
@ -45,16 +45,16 @@ class MangaparkChapterExtractor(MangaparkBase, ChapterExtractor):
|
||||
test = (
|
||||
("https://mangapark.me/manga/gosu/i811615/c55/1", {
|
||||
"count": 50,
|
||||
"keyword": "a18e07119b3317d7e795ef37ee69ce0bbb806350",
|
||||
"keyword": "373d678048d29492f9763743ccaa9b6d840f17cf",
|
||||
}),
|
||||
(("https://mangapark.me/manga"
|
||||
"/ad-astra-per-aspera-hata-kenjirou/i662054/c001.2/1"), {
|
||||
"count": 40,
|
||||
"keyword": "3f286631279e2017ce87c1b8db05d7b3f15e2971",
|
||||
"keyword": "8e9cce4ed0e25d12a45e02f840d6f32ef838e257",
|
||||
}),
|
||||
("https://mangapark.me/manga/gekkan-shoujo-nozaki-kun/i655476/c70/1", {
|
||||
"count": 15,
|
||||
"keyword": "3abb13e6d1ea7f8808b0ec415270b3afac97f98b",
|
||||
"keyword": "19f730617074d65f91c0781f429de324890925bf",
|
||||
}),
|
||||
("https://mangapark.net/manga/gosu/i811615/c55/1"),
|
||||
("https://mangapark.com/manga/gosu/i811615/c55/1"),
|
||||
|
@ -39,7 +39,7 @@ class MangareaderChapterExtractor(MangareaderBase, ChapterExtractor):
|
||||
test = (("https://www.mangareader.net"
|
||||
"/karate-shoukoushi-kohinata-minoru/11"), {
|
||||
"url": "061cc92a07edf17bb991ce0821fa4c77a147a860",
|
||||
"keyword": "2893cfcd1916859fb498f3345f1929f868fe667f",
|
||||
"keyword": "133e3e2f7c0529a35bbb16149e34c40546f8dfd6",
|
||||
})
|
||||
|
||||
def __init__(self, match):
|
||||
|
@ -23,12 +23,12 @@ class MyportfolioGalleryExtractor(Extractor):
|
||||
subcategory = "gallery"
|
||||
directory_fmt = ("{category}", "{user}", "{title}")
|
||||
filename_fmt = "{num:>02}.{extension}"
|
||||
archive_fmt = "{user}_{name}"
|
||||
archive_fmt = "{user}_{filename}"
|
||||
pattern = BASE_PATTERN + r"/(?!projects/?$)([^/?&#]+)"
|
||||
test = (
|
||||
("https://hannahcosgrove.myportfolio.com/chloe", {
|
||||
"url": "d5cf993a05439a9d8a99590aa61e14e5ac8d0cd0",
|
||||
"keyword": "cdb9ca8bdc16efa6ce04aba384f7932d1610b22f",
|
||||
"keyword": "89b055a6ce833ba4f060ab1f97f086e58ce8bbd1",
|
||||
}),
|
||||
("myportfolio:https://tooco.com.ar/6-of-diamonds-paradise-bird", {
|
||||
"count": 3,
|
||||
|
@ -97,7 +97,7 @@ class NewgroundsUserExtractor(NewgroundsExtractor):
|
||||
test = (
|
||||
("https://blitzwuff.newgrounds.com/art", {
|
||||
"url": "24b19c4a135a09889fac7b46a74e427e4308d02b",
|
||||
"keyword": "68c235e5c4ce94f2f9e001d84fe801441e5500f1",
|
||||
"keyword": "f221ddb00f51aa4f17a73809fd9be3c3352fc6b7",
|
||||
}),
|
||||
("https://blitzwuff.newgrounds.com/"),
|
||||
)
|
||||
@ -115,12 +115,12 @@ class NewgroundsImageExtractor(NewgroundsExtractor):
|
||||
test = (
|
||||
("https://www.newgrounds.com/art/view/blitzwuff/ffx", {
|
||||
"url": "e7778c4597a2fb74b46e5f04bb7fa1d80ca02818",
|
||||
"keyword": "5738e2bf19137898204f36c5ae573826672b612c",
|
||||
"keyword": "731bf24b9fa7da3bdf094a0f6d181123aae16394",
|
||||
"content": "cb067d6593598710292cdd340d350d14a26fe075",
|
||||
}),
|
||||
("https://art.ngfiles.com/images/587000/587551_blitzwuff_ffx.png", {
|
||||
"url": "e7778c4597a2fb74b46e5f04bb7fa1d80ca02818",
|
||||
"keyword": "5738e2bf19137898204f36c5ae573826672b612c",
|
||||
"keyword": "731bf24b9fa7da3bdf094a0f6d181123aae16394",
|
||||
}),
|
||||
)
|
||||
|
||||
|
@ -20,7 +20,7 @@ class NgomikChapterExtractor(ChapterExtractor):
|
||||
r"(/[^/?&#]+-chapter-[^/?&#]+)")
|
||||
test = ("https://www.ngomik.in/14-sai-no-koi-chapter-1-6/", {
|
||||
"url": "8e67fdf751bbc79bc6f4dead7675008ddb8e32a4",
|
||||
"keyword": "7cc913ed2b9018afbd3336755d28b8252d83044c",
|
||||
"keyword": "204d177f09d438fd50c9c28d98c73289194640d8",
|
||||
})
|
||||
|
||||
def metadata(self, page):
|
||||
|
@ -127,7 +127,7 @@ class NijieUserExtractor(NijieExtractor):
|
||||
test = (
|
||||
("https://nijie.info/members_illust.php?id=44", {
|
||||
"url": "585d821df4716b1098660a0be426d01db4b65f2a",
|
||||
"keyword": "1eb3387196f1f30d6d74a41f4c77faaadd588e52",
|
||||
"keyword": "d629c69e3172db1d7e026145e8eb640ac31ac16a",
|
||||
}),
|
||||
("https://nijie.info/members_illust.php?id=43", {
|
||||
"exception": exception.NotFoundError,
|
||||
@ -175,7 +175,7 @@ class NijieImageExtractor(NijieExtractor):
|
||||
test = (
|
||||
("https://nijie.info/view.php?id=70720", {
|
||||
"url": "a10d4995645b5f260821e32c60a35f73546c2699",
|
||||
"keyword": "0728fc3bbef1e192abfd59f88f07921d3d336804",
|
||||
"keyword": "408393d010307c76d52cbd0a4368d6d357805aea",
|
||||
"content": "d85e3ea896ed5e4da0bca2390ad310a4df716ca6",
|
||||
}),
|
||||
("https://nijie.info/view.php?id=70724", {
|
||||
|
@ -47,7 +47,7 @@ class PahealTagExtractor(PahealExtractor):
|
||||
r"/post/list/([^/?&#]+)")
|
||||
test = ("https://rule34.paheal.net/post/list/k-on/1", {
|
||||
"url": "0f5a777cea524635760de32dd85a3de5ac5f3f43",
|
||||
"keyword": "fddaa6329bae5b99e8a666eeeb1cb7721d21bf6d",
|
||||
"keyword": "2ee365be3f21f40529ca742485de8f8090dcff7d",
|
||||
})
|
||||
per_page = 70
|
||||
|
||||
@ -96,7 +96,7 @@ class PahealPostExtractor(PahealExtractor):
|
||||
r"/post/view/(\d+)")
|
||||
test = ("https://rule34.paheal.net/post/view/481609", {
|
||||
"url": "3aa2189c8d1fa952a4d3420def93fd2bd54d6741",
|
||||
"keyword": "d7a0bd6d8b0a5bd8300857044ed2d53d481d37cf",
|
||||
"keyword": "99f631ebbde1324bbbedec40f0d4d6858619ba84",
|
||||
"content": "7b924bcf150b352ac75c9d281d061e174c851a11",
|
||||
})
|
||||
|
||||
|
@ -254,19 +254,19 @@ class JoyreactorPostExtractor(ReactorPostExtractor):
|
||||
test = (
|
||||
("http://joyreactor.com/post/3721876", { # single image
|
||||
"url": "904779f6571436f3d5adbce30c2c272f6401e14a",
|
||||
"keyword": "0d231f6ae36c5dca1f7eb71443bab3b2659fcacc",
|
||||
"keyword": "e8deb51e66325341fe33f6e99938b8548093d34b",
|
||||
}),
|
||||
("http://joyreactor.com/post/3713804", { # 4 images
|
||||
"url": "99c614416b959f22001f7da3f68df03b1551abdf",
|
||||
"keyword": "1f0bf40f5030c803de6f8969099689e36fe885e6",
|
||||
"keyword": "c5a6893e2425d31393139e355370e208754eb8fa",
|
||||
}),
|
||||
("http://joyreactor.com/post/3726210", { # gif / video
|
||||
"url": "33a48e1eca6cb2d298fbbb6536b3283799d6515b",
|
||||
"keyword": "b2514c20f59b9c521545e96ca1a9ad504d6fa7e5",
|
||||
"keyword": "11cfce3f2ea336979ca6cc5da604fbe02aeda345",
|
||||
}),
|
||||
("http://joyreactor.com/post/3668724", { # youtube embed
|
||||
"url": "be2589e2e8f3ffcaf41b34bc28bfad850ccea34a",
|
||||
"keyword": "97e2cdef751fba13e43d789ddfb806683a903fae",
|
||||
"keyword": "889206164b4a180aed6bf6186d2456cf31afbed8",
|
||||
}),
|
||||
("http://joyreactor.cc/post/1299", { # "malformed" JSON
|
||||
"url": "d45337fec926159afe11c59e32d259d793dd00b3",
|
||||
|
@ -31,7 +31,7 @@ class ReadcomiconlineIssueExtractor(ReadcomiconlineBase, ChapterExtractor):
|
||||
r"(/Comic/[^/?&#]+/[^/?&#]+\?id=(\d+))")
|
||||
test = ("https://readcomiconline.to/Comic/W-i-t-c-h/Issue-130?id=22289", {
|
||||
"url": "2bbab6ec4fbc05d269cca420a82a9b5acda28682",
|
||||
"keyword": "c6de1c9c8a307dc4be56783c4ac6f1338ffac6fc",
|
||||
"keyword": "30fe110273e871305001f33c18634516a0a51421",
|
||||
})
|
||||
|
||||
def __init__(self, match):
|
||||
|
@ -128,7 +128,7 @@ class RedditImageExtractor(Extractor):
|
||||
"""Extractor for reddit-hosted images"""
|
||||
category = "reddit"
|
||||
subcategory = "image"
|
||||
archive_fmt = "{name}"
|
||||
archive_fmt = "{filename}"
|
||||
pattern = (r"(?:https?://)?i\.redd(?:\.it|ituploads\.com)"
|
||||
r"/[^/?&#]+(?:\?[^#]*)?")
|
||||
test = (
|
||||
|
@ -26,7 +26,7 @@ class SimplyhentaiGalleryExtractor(ChapterExtractor):
|
||||
(("https://original-work.simply-hentai.com"
|
||||
"/amazon-no-hiyaku-amazon-elixir"), {
|
||||
"url": "258289249990502c3138719cb89e995a60861e49",
|
||||
"keyword": "5ea1498a1a902d76d337946910082755d168b941",
|
||||
"keyword": "468a0a3db4fc6ad7fcae0facefb9753831c0404d",
|
||||
}),
|
||||
("https://www.simply-hentai.com/notfound", {
|
||||
"exception": exception.GalleryDLException,
|
||||
@ -91,11 +91,11 @@ class SimplyhentaiImageExtractor(Extractor):
|
||||
(("https://www.simply-hentai.com/image"
|
||||
"/pheromomania-vol-1-kanzenban-isao-3949d8b3-400c-4b6"), {
|
||||
"url": "0338eb137830ab6f81e5f410d3936ef785d063d9",
|
||||
"keyword": "0209cc8657c80e2b5fed8f2f3f2aa3a57e2cc8b6",
|
||||
"keyword": "e10e5588481cab68329ef6ec1e5325206b2079a2",
|
||||
}),
|
||||
("https://www.simply-hentai.com/gif/8915dfcf-0b6a-47c", {
|
||||
"url": "11c060d7ec4dfd0bd105300b6e1fd454674a5af1",
|
||||
"keyword": "de26851c4eb7a204364ea26943b1581a0fd43da5",
|
||||
"keyword": "dd97a4bb449c397d6fec9f43a1303c0fb168ae65",
|
||||
}),
|
||||
)
|
||||
|
||||
@ -124,7 +124,7 @@ class SimplyhentaiImageExtractor(Extractor):
|
||||
"tags": tags,
|
||||
"type": self.type,
|
||||
})
|
||||
data["token"] = data["name"].rpartition("_")[2]
|
||||
data["token"] = data["filename"].rpartition("_")[2]
|
||||
|
||||
yield Message.Version, 1
|
||||
yield Message.Directory, data
|
||||
@ -143,13 +143,13 @@ class SimplyhentaiVideoExtractor(Extractor):
|
||||
("https://videos.simply-hentai.com/creamy-pie-episode-02", {
|
||||
"pattern": r"https://www\.googleapis\.com/drive/v3/files"
|
||||
r"/0B1ecQ8ZVLm3JcHZzQzBnVy1ZUmc\?alt=media&key=[\w-]+",
|
||||
"keyword": "5aefc5c15ae4f56beee93ad2ff2a68cf0c3e6f29",
|
||||
"keyword": "29d63987fed33f0a9f4b3786d1d71b03d793250a",
|
||||
"count": 1,
|
||||
}),
|
||||
(("https://videos.simply-hentai.com"
|
||||
"/1715-tifa-in-hentai-gang-bang-3d-movie"), {
|
||||
"url": "ad9a36ae06c601b6490e3c401834b4949d947eb0",
|
||||
"keyword": "9cbd03aab04c3f258cb14d13d45c703969ed54ab",
|
||||
"keyword": "c561341aa3c6999f615abf1971d28fb2a83da2a7",
|
||||
}),
|
||||
)
|
||||
|
||||
|
@ -98,13 +98,13 @@ class SmugmugImageExtractor(SmugmugExtractor):
|
||||
test = (
|
||||
("https://acapella.smugmug.com/Micro-Macro/Drops/i-g2Dmf9z", {
|
||||
"url": "78f0bf3516b6d670b7319216bdeccb35942ca4cf",
|
||||
"keyword": "8ebb25fb493d3cd5cfcb8f3a4601fa721afe1d83",
|
||||
"keyword": "f913cc0db3fa4b3799828a25a426fcc0aa80784c",
|
||||
"content": "64a8f69a1d824921eebbdf2420087937adfa45cd",
|
||||
}),
|
||||
# no "ImageOwner"
|
||||
("https://www.smugmug.com/gallery/n-GLCjnD/i-JD62fQk", {
|
||||
"url": "d4047637947b35e4ef49e3c7cb70303cc224a3a0",
|
||||
"keyword": "0a1b12efd789c42d9b061f01b2a1fcfd6af32003",
|
||||
"keyword": "63ed3f5f9e5d52e317a83a8c7c8f1c3d6a2239fc",
|
||||
}),
|
||||
)
|
||||
|
||||
|
@ -155,7 +155,7 @@ class TumblrExtractor(Extractor):
|
||||
def _prepare(url, post):
|
||||
text.nameext_from_url(url, post)
|
||||
post["num"] += 1
|
||||
post["hash"] = post["name"].partition("_")[2]
|
||||
post["hash"] = post["filename"].partition("_")[2]
|
||||
return Message.Url, url, post
|
||||
|
||||
@staticmethod
|
||||
@ -163,12 +163,12 @@ class TumblrExtractor(Extractor):
|
||||
text.nameext_from_url(url, post)
|
||||
post["num"] += 1
|
||||
|
||||
parts = post["name"].split("_")
|
||||
parts = post["filename"].split("_")
|
||||
try:
|
||||
post["hash"] = parts[1] if parts[1] != "inline" else parts[2]
|
||||
except IndexError:
|
||||
# filename doesn't follow the usual pattern (#129)
|
||||
post["hash"] = post["name"]
|
||||
post["hash"] = post["filename"]
|
||||
|
||||
return Message.Url, url, post
|
||||
|
||||
|
@ -105,7 +105,7 @@ class TwitterTimelineExtractor(TwitterExtractor):
|
||||
test = ("https://twitter.com/PicturesEarth", {
|
||||
"range": "1-40",
|
||||
"url": "2f4d51cbba81e56c1c755677b3ad58fc167c9771",
|
||||
"keyword": "cbae53b6f4ba133078bb13c95dbd3cbb4fa40b9f",
|
||||
"keyword": "19c02623fa144ca9a863b1f687ab749b3b8e38a5",
|
||||
})
|
||||
|
||||
def tweets(self):
|
||||
@ -138,12 +138,12 @@ class TwitterTweetExtractor(TwitterExtractor):
|
||||
test = (
|
||||
("https://twitter.com/PicturesEarth/status/672897688871018500", {
|
||||
"url": "d9e68d41301d2fe382eb27711dea28366be03b1a",
|
||||
"keyword": "46c8e739a892000848a8a2184da91346c9cbe4bf",
|
||||
"keyword": "fb19f00ab96a854f7de6e1eb85d632565c8a1a43",
|
||||
"content": "a1f2f04cb2d8df24b1afa7a39910afda23484342",
|
||||
}),
|
||||
("https://twitter.com/perrypumas/status/894001459754180609", {
|
||||
"url": "c8a262a9698cb733fb27870f5a8f75faf77d79f6",
|
||||
"keyword": "7729cd3ff16a5647b0b5ffdec9d428c91eedafbe",
|
||||
"keyword": "3e665d795fcd3ddd0c2f18c9b6b56fc3267fdf7d",
|
||||
}),
|
||||
)
|
||||
|
||||
|
@ -73,8 +73,8 @@ def nameext_from_url(url, data=None):
|
||||
"""Extract the last part of an URL and fill 'data' accordingly"""
|
||||
if data is None:
|
||||
data = {}
|
||||
data["filename"] = unquote(filename_from_url(url))
|
||||
data["name"], ext = os.path.splitext(data["filename"])
|
||||
name = unquote(filename_from_url(url))
|
||||
data["filename"], ext = os.path.splitext(name)
|
||||
data["extension"] = ext[1:].lower()
|
||||
return data
|
||||
|
||||
|
@ -45,7 +45,7 @@ class TestDownloaderBase(unittest.TestCase):
|
||||
kwdict = {
|
||||
"category": "test",
|
||||
"subcategory": "test",
|
||||
"name": name,
|
||||
"filename": name,
|
||||
"extension": extension,
|
||||
}
|
||||
pathfmt = PathFormat(cls.extractor)
|
||||
|
@ -122,9 +122,8 @@ class TestText(unittest.TestCase):
|
||||
self.assertEqual(f(value), "")
|
||||
|
||||
def test_nameext_from_url(self, f=text.nameext_from_url):
|
||||
empty = {"filename": "", "name": "", "extension": ""}
|
||||
result = {"filename": "filename.ext",
|
||||
"name": "filename", "extension": "ext"}
|
||||
empty = {"filename": "", "extension": ""}
|
||||
result = {"filename": "filename", "extension": "ext"}
|
||||
|
||||
# standard usage
|
||||
self.assertEqual(f(""), empty)
|
||||
|
Loading…
x
Reference in New Issue
Block a user