From 2da597aec9b5eab814920a2bdef4d951a4b0e9da Mon Sep 17 00:00:00 2001 From: Erik Bostrom Date: Wed, 8 Jul 2015 16:34:29 +0300 Subject: [PATCH] Added Biqle.ru extractor. --- youtube_dl/extractor/__init__.py | 1 + youtube_dl/extractor/biqle.py | 67 ++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 youtube_dl/extractor/biqle.py diff --git a/youtube_dl/extractor/__init__.py b/youtube_dl/extractor/__init__.py index f7c1f07a4..0c25b5cdb 100644 --- a/youtube_dl/extractor/__init__.py +++ b/youtube_dl/extractor/__init__.py @@ -45,6 +45,7 @@ from .beatportpro import BeatportProIE from .bet import BetIE from .bild import BildIE from .bilibili import BiliBiliIE +from .biqle import BiqleIE from .blinkx import BlinkxIE from .bliptv import BlipTVIE, BlipTVUserIE from .bloomberg import BloombergIE diff --git a/youtube_dl/extractor/biqle.py b/youtube_dl/extractor/biqle.py new file mode 100644 index 000000000..bb476eb4b --- /dev/null +++ b/youtube_dl/extractor/biqle.py @@ -0,0 +1,67 @@ +# coding: utf-8 +from __future__ import unicode_literals + +from .common import InfoExtractor + +import re + +class BiqleIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?biqle\.ru/watch/(?P-?[0-9]+_[0-9]+)' + _TEST = { + 'url': 'http://www.biqle.ru/watch/847655_160197695', + 'md5': 'ad5f746a874ccded7b8f211aeea96637', + 'info_dict': { + 'id': '847655_160197695', + 'ext': 'mp4', + 'title': 'Foo Fighters - The Pretender (Live at Wembley Stadium) — BIQLE Видео' + } + } + + def _real_extract(self, url): + video_id = self._match_id(url) + webpage = self._download_webpage(url, video_id) + + chr_index = video_id.find('_') + oid = video_id[:chr_index] + vid = video_id[chr_index + 1:] + + title = self._html_search_regex(r'(.*?)', webpage, 'title') + + foo = self._html_search_regex(r'', webpage, 'foo') + embed_hash = self._search_regex(r'hash=(.*?)&', foo, 'embed_hash') + api_url = "https://api.vk.com/method/video.getEmbed?oid=" + oid + "&video_id=" + vid + "&embed_hash=" + embed_hash + "&callback=daxabAjaxFn" + vk_api = self._download_webpage(api_url, "vk.com api") + + url240 = self._search_regex(r'"url240":"(.*?.mp4)', vk_api, 'url240', fatal=False) + url360 = self._search_regex(r'"url360":"(.*?.mp4)', vk_api, 'url360', fatal=False) + url480 = self._search_regex(r'"url480":"(.*?.mp4)', vk_api, 'url480', fatal=False) + url720 = self._search_regex(r'"url720":"(.*?.mp4)', vk_api, 'url720', fatal=False) + + formats = [] + + if(url240 != None): + formats.append({ + 'url': re.sub(r'\\', '', url240), + 'format':'240p mp4' + }) + if(url360 != None): + formats.append({ + 'url': re.sub(r'\\', '', url360), + 'format':'360p mp4' + }) + if(url480 != None): + formats.append({ + 'url': re.sub(r'\\', '', url480), + 'format':'480p mp4' + }) + if(url720 != None): + formats.append({ + 'url': re.sub(r'\\', '', url720), + 'format':'720p mp4' + }) + + return { + 'id': video_id, + 'title': title, + 'formats': formats + } \ No newline at end of file