|
|
@ -249,14 +249,23 @@ class PatreonExtractor(Extractor):
|
|
|
|
return [genmap[ft] for ft in filetypes]
|
|
|
|
return [genmap[ft] for ft in filetypes]
|
|
|
|
|
|
|
|
|
|
|
|
def _extract_bootstrap(self, page):
|
|
|
|
def _extract_bootstrap(self, page):
|
|
|
|
if "window.patreon.bootstrap," in page:
|
|
|
|
bootstrap = text.extr(
|
|
|
|
return util.json_loads(text.extr(
|
|
|
|
page, 'window.patreon = {"bootstrap":', '},"apiServer"')
|
|
|
|
page, "window.patreon.bootstrap,", "});") + "}")
|
|
|
|
if bootstrap:
|
|
|
|
elif 'window.patreon = {"bootstrap":' in page:
|
|
|
|
return util.json_loads(bootstrap + "}")
|
|
|
|
return util.json_loads(text.extr(
|
|
|
|
|
|
|
|
page, 'window.patreon = {"bootstrap":', '},"apiServer"') + "}")
|
|
|
|
bootstrap = text.extr(page, "window.patreon.bootstrap,", "});")
|
|
|
|
else:
|
|
|
|
if bootstrap:
|
|
|
|
raise Exception("unknown HTML and JS structure")
|
|
|
|
return util.json_loads(bootstrap + "}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
data = text.extr(page, "window.patreon = {", "};\n")
|
|
|
|
|
|
|
|
if data:
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
|
|
|
return util.json_loads("{" + data + "}")["bootstrap"]
|
|
|
|
|
|
|
|
except Exception:
|
|
|
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
raise exception.StopExtraction("Unable to extract bootstrap data")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class PatreonCreatorExtractor(PatreonExtractor):
|
|
|
|
class PatreonCreatorExtractor(PatreonExtractor):
|
|
|
|