1
0
mirror of https://github.com/ytdl-org/youtube-dl.git synced 2024-12-15 13:47:48 +01:00

[cloudy] Add new extractor. Closes

This commit is contained in:
naglis 2014-09-14 00:12:36 +03:00
parent e5a93354bc
commit 20ff802c9b
2 changed files with 68 additions and 0 deletions
youtube_dl/extractor

View File

@ -46,6 +46,7 @@ from .cinemassacre import CinemassacreIE
from .clipfish import ClipfishIE
from .cliphunter import CliphunterIE
from .clipsyndicate import ClipsyndicateIE
from .cloudy import CloudyIE
from .clubic import ClubicIE
from .cmt import CMTIE
from .cnet import CNETIE

View File

@ -0,0 +1,67 @@
# coding: utf-8
from __future__ import unicode_literals
import re
from .common import InfoExtractor
from ..utils import (
ExtractorError,
compat_parse_qs,
compat_urllib_parse,
)
class CloudyIE(InfoExtractor):
_VALID_URL = r'''(?x)
https?://(?:www\.)?cloudy\.ec/
(?:v/|embed\.php\?id=)
(?P<id>[A-Za-z0-9]+)
'''
_API_URL = 'http://www.cloudy.ec/api/player.api.php?%s'
_TEST = {
'url': 'https://www.cloudy.ec/v/af511e2527aac',
'md5': '5cb253ace826a42f35b4740539bedf07',
'info_dict': {
'id': 'af511e2527aac',
'ext': 'flv',
'title': 'Funny Cats and Animals Compilation june 2013',
}
}
def _real_extract(self, url):
mobj = re.match(self._VALID_URL, url)
video_id = mobj.group('id')
url = 'http://www.cloudy.ec/embed.php?id=%s' % video_id
webpage = self._download_webpage(url, video_id)
file_key = self._search_regex(
r'filekey\s*=\s*"([^"]+)"', webpage, 'file_key')
data_url = self._API_URL % compat_urllib_parse.urlencode({
'file': video_id,
'key': file_key,
})
player_data = self._download_webpage(
data_url, video_id, 'Downloading player data')
data = compat_parse_qs(player_data)
if 'error' in data:
raise ExtractorError(
'%s error: %s' % (self.IE_NAME, ' '.join(data['error_msg'])),
expected=True)
title = data.get('title', [None])[0]
if title:
title = title.replace('&asdasdas', '').strip()
formats = []
formats.append({
'format_id': 'sd',
'url': data.get('url', [None])[0],
})
return {
'id': video_id,
'title': title,
'formats': formats,
}