diff options
Diffstat (limited to 'youtube_dl/extractor/gfycat.py')
| -rw-r--r-- | youtube_dl/extractor/gfycat.py | 28 | 
1 files changed, 24 insertions, 4 deletions
| diff --git a/youtube_dl/extractor/gfycat.py b/youtube_dl/extractor/gfycat.py index 397f1d42e..884700c52 100644 --- a/youtube_dl/extractor/gfycat.py +++ b/youtube_dl/extractor/gfycat.py @@ -6,12 +6,13 @@ from ..utils import (      int_or_none,      float_or_none,      qualities, +    ExtractorError,  )  class GfycatIE(InfoExtractor): -    _VALID_URL = r'https?://(?:www\.)?gfycat\.com/(?P<id>[^/?#]+)' -    _TEST = { +    _VALID_URL = r'https?://(?:www\.)?gfycat\.com/(?:ifr/)?(?P<id>[^/?#]+)' +    _TESTS = [{          'url': 'http://gfycat.com/DeadlyDecisiveGermanpinscher',          'info_dict': {              'id': 'DeadlyDecisiveGermanpinscher', @@ -27,14 +28,33 @@ class GfycatIE(InfoExtractor):              'categories': list,              'age_limit': 0,          } -    } +    }, { +        'url': 'http://gfycat.com/ifr/JauntyTimelyAmazontreeboa', +        'info_dict': { +            'id': 'JauntyTimelyAmazontreeboa', +            'ext': 'mp4', +            'title': 'JauntyTimelyAmazontreeboa', +            'timestamp': 1411720126, +            'upload_date': '20140926', +            'uploader': 'anonymous', +            'duration': 3.52, +            'view_count': int, +            'like_count': int, +            'dislike_count': int, +            'categories': list, +            'age_limit': 0, +        } +    }]      def _real_extract(self, url):          video_id = self._match_id(url)          gfy = self._download_json(              'http://gfycat.com/cajax/get/%s' % video_id, -            video_id, 'Downloading video info')['gfyItem'] +            video_id, 'Downloading video info') +        if 'error' in gfy: +            raise ExtractorError('Gfycat said: ' + gfy['error'], expected=True) +        gfy = gfy['gfyItem']          title = gfy.get('title') or gfy['gfyName']          description = gfy.get('description') | 
