[gfycat] fix extraction

/cajax/get/<id> doesn't work anymore
This commit is contained in:
Mike Fährmann
2018-11-28 13:26:21 +01:00
parent ba56827f36
commit c59f56fe7e

View File

@@ -9,7 +9,8 @@
"""Extract images from https://gfycat.com/""" """Extract images from https://gfycat.com/"""
from .common import Extractor, Message from .common import Extractor, Message
from .. import exception from .. import text
import json
class GfycatExtractor(Extractor): class GfycatExtractor(Extractor):
@@ -33,18 +34,17 @@ class GfycatExtractor(Extractor):
return "" return ""
def _get_info(self, gfycat_id): def _get_info(self, gfycat_id):
url = "{}/cajax/get/{}".format(self.root, gfycat_id) url = "{}/ifr/{}".format(self.root, gfycat_id)
data = self.request(url).json() page = self.request(url).text
if "error" in data: data = json.loads(text.extract(page, '___INITIAL_STATE__=', ';')[0])
raise exception.NotFoundError("animation") return data["cache"]["gifs"][gfycat_id.lower()]
return data["gfyItem"]
class GfycatImageExtractor(GfycatExtractor): class GfycatImageExtractor(GfycatExtractor):
"""Extractor for individual images from gfycat.com""" """Extractor for individual images from gfycat.com"""
subcategory = "image" subcategory = "image"
pattern = [r"(?:https?://)?(?:\w+\.)?gfycat\.com" pattern = [r"(?:https?://)?(?:\w+\.)?gfycat\.com"
r"/(?:\w+/|gifs/detail/)?([A-Za-z]+)"] r"/(?:gifs/detail/|\w+/)?([A-Za-z]+)"]
test = [ test = [
("https://gfycat.com/GrayGenerousCowrie", { ("https://gfycat.com/GrayGenerousCowrie", {
"url": "e0b5e1d7223108249b15c3c7898dd358dbfae045", "url": "e0b5e1d7223108249b15c3c7898dd358dbfae045",
@@ -55,12 +55,12 @@ class GfycatImageExtractor(GfycatExtractor):
"gfyNumber": "755075459", "gfyNumber": "755075459",
"title": "Bottom's up", "title": "Bottom's up",
"userName": "jackson3oh3", "userName": "jackson3oh3",
"createDate": "1495884169", "createDate": 1495884169,
"md5": "a4796e05b0db9ba9ce5140145cd318aa", "md5": "a4796e05b0db9ba9ce5140145cd318aa",
"width": "400", "width": 400,
"height": "224", "height": 224,
"frameRate": "23", "frameRate": 23,
"numFrames": "158", "numFrames": 158,
"views": int, "views": int,
}, },
}), }),