|
|
@ -8,31 +8,39 @@ from .common import InfoExtractor |
|
|
|
|
|
|
|
class GfycatIE(InfoExtractor): |
|
|
|
_VALID_URL = r'https?://(?:www\.)?gfycat\.com/(?P<id>[^/?#]+)' |
|
|
|
_TESTS = [{ |
|
|
|
'url': 'http://gfycat.com/DeadlyDecisiveGermanpinscher', |
|
|
|
'info_dict': { |
|
|
|
'id': 'DeadlyDecisiveGermanpinscher', |
|
|
|
'title': 'Ghost in the Shell', |
|
|
|
'ext': 'mp4', |
|
|
|
'upload_date': '20140913' |
|
|
|
} |
|
|
|
},{ |
|
|
|
'url': 'http://gfycat.com/pleasinghilariouskusimanse', |
|
|
|
'info_dict': { |
|
|
|
'id': 'pleasinghilariouskusimanse', |
|
|
|
'title': 'PleasingHilariousKusimanse', |
|
|
|
'ext': 'webm', |
|
|
|
'upload_date': '20150412' |
|
|
|
} |
|
|
|
},{ |
|
|
|
'url': 'http://gfycat.com/requiredunkemptbuzzard', |
|
|
|
'info_dict': { |
|
|
|
'id': 'requiredunkemptbuzzard', |
|
|
|
'title': 'Headshot!', |
|
|
|
'ext': 'gif', |
|
|
|
'upload_date': '20150130' |
|
|
|
} |
|
|
|
}] |
|
|
|
_TESTS = [ |
|
|
|
{ |
|
|
|
'url': 'http://gfycat.com/DeadlyDecisiveGermanpinscher', |
|
|
|
'info_dict': { |
|
|
|
'id': 'DeadlyDecisiveGermanpinscher', |
|
|
|
'title': 'Ghost in the Shell', |
|
|
|
'ext': 'mp4', |
|
|
|
'upload_date': '20140913' |
|
|
|
} |
|
|
|
},{ |
|
|
|
'url': 'http://gfycat.com/pleasinghilariouskusimanse', |
|
|
|
'info_dict': { |
|
|
|
'id': 'pleasinghilariouskusimanse', |
|
|
|
'title': 'PleasingHilariousKusimanse', |
|
|
|
'ext': 'webm', |
|
|
|
'upload_date': '20150412' |
|
|
|
}, |
|
|
|
'params': { |
|
|
|
'format': 'webm', |
|
|
|
}, |
|
|
|
},{ |
|
|
|
'url': 'http://gfycat.com/requiredunkemptbuzzard', |
|
|
|
'info_dict': { |
|
|
|
'id': 'requiredunkemptbuzzard', |
|
|
|
'title': 'Headshot!', |
|
|
|
'ext': 'gif', |
|
|
|
'upload_date': '20150129' |
|
|
|
}, |
|
|
|
'params': { |
|
|
|
'format': 'gif', |
|
|
|
}, |
|
|
|
}, |
|
|
|
] |
|
|
|
|
|
|
|
def _real_extract(self, url): |
|
|
|
video_id = self._match_id(url) |
|
|
|