1
0
mirror of https://github.com/mikf/gallery-dl.git synced 2024-11-26 12:42:29 +01:00

[shopify] skip deleted products (#175)

Product pages which return a 4xx status code will now be skipped instead
of raising an exception.
This commit is contained in:
Mike Fährmann 2019-06-05 11:12:10 +02:00
parent 096009367b
commit aa1ca4ed35
No known key found for this signature in database
GPG Key ID: 5680CA389D365A88

View File

@ -24,12 +24,12 @@ class ShopifyExtractor(SharedConfigMixin, Extractor):
Extractor.__init__(self, match)
self.item_url = self.root + match.group(1)
def request(self, url, method="GET", expect=(429, 430), **kwargs):
def request(self, url, method="GET", expect=range(400, 500), **kwargs):
tries = 0
kwargs["expect"] = expect
while True:
response = Extractor.request(self, url, method, **kwargs)
if response.status_code not in expect:
if response.status_code not in (429, 430):
return response
tries += 1
waittime = 2 ** (tries + 2)
@ -45,8 +45,12 @@ class ShopifyExtractor(SharedConfigMixin, Extractor):
headers = {"X-Requested-With": "XMLHttpRequest"}
for url in self.products():
product = self.request(
url + ".json", headers=headers).json()["product"]
response = self.request(url + ".json", headers=headers)
if response.status_code >= 400:
self.log.warning('Skipping %s ("%d: %s")',
url, response.status_code, response.reason)
continue
product = response.json()["product"]
del product["image"]
for num, image in enumerate(product.pop("images"), 1):