from .common import InfoExtractor
from ..compat import compat_urllib_parse
from ..utils import (
+ ExtractorError,
int_or_none,
qualities,
)
'uploader_id': '10922353@N03',
'uploader': 'Forest Wander',
'comment_count': int,
+ 'view_count': int,
+ 'tags': list,
}
}
}
if secret:
query['secret'] = secret
- return self._download_json(self._API_BASE_URL + compat_urllib_parse.urlencode(query), video_id, note)
+ data = self._download_json(self._API_BASE_URL + compat_urllib_parse.urlencode(query), video_id, note)
+ if data['stat'] != 'ok':
+ raise ExtractorError(data['message'])
+ return data
def _real_extract(self, url):
video_id = self._match_id(url)
- api_key = self._download_json('https://www.flickr.com/hermes_error_beacon.gne', video_id, 'Downloading api key',)['site_key']
+ api_key = self._download_json(
+ 'https://www.flickr.com/hermes_error_beacon.gne', video_id,
+ 'Downloading api key')['site_key']
- video_info = self._call_api('photos.getInfo', video_id, api_key, 'Downloading video info')['photo']
+ video_info = self._call_api(
+ 'photos.getInfo', video_id, api_key, 'Downloading video info')['photo']
if video_info['media'] == 'video':
- streams = self._call_api('video.getStreamInfo', video_id, api_key, 'Downloading streams info', video_info['secret'])['streams']
+ streams = self._call_api(
+ 'video.getStreamInfo', video_id, api_key,
+ 'Downloading streams info', video_info['secret'])['streams']
- preference = qualities(['iphone_wifi', '700', 'appletv', 'orig'])
+ preference = qualities(
+ ['288p', 'iphone_wifi', '100', '300', '700', '360p', 'appletv', '720p', '1080p', 'orig'])
formats = []
for stream in streams['stream']:
'uploader_id': owner.get('nsid'),
'uploader': owner.get('realname'),
'comment_count': int_or_none(video_info.get('comments', {}).get('_content')),
+ 'view_count': int_or_none(video_info.get('views')),
+ 'tags': [tag.get('_content') for tag in video_info.get('tags', {}).get('tag', [])]
}
+ else:
+ raise ExtractorError('not a video', expected=True)