aboutsummaryrefslogtreecommitdiff
path: root/youtube_dl/extractor
diff options
context:
space:
mode:
authorSergey M․ <dstftw@gmail.com>2014-09-02 21:39:22 +0700
committerSergey M․ <dstftw@gmail.com>2014-09-02 21:39:22 +0700
commita7862a1bc81343a8b9c415ef3443076e6707b203 (patch)
treeb471b61ee4f8d6c55c185f2fade0c93766a3dd1c /youtube_dl/extractor
parent3baa62e8d1aa98bdb42ddf91e8b139d2dd36ff9e (diff)
[eporner] Extract all formats
Diffstat (limited to 'youtube_dl/extractor')
-rw-r--r--youtube_dl/extractor/eporner.py29
1 files changed, 23 insertions, 6 deletions
diff --git a/youtube_dl/extractor/eporner.py b/youtube_dl/extractor/eporner.py
index 6926fcda3..522aa3d63 100644
--- a/youtube_dl/extractor/eporner.py
+++ b/youtube_dl/extractor/eporner.py
@@ -11,12 +11,13 @@ from ..utils import (
class EpornerIE(InfoExtractor):
- _VALID_URL = r'https?://(?:www\.)?eporner\.com/hd-porn/(?P<id>\d+)/(?P<title_dash>[\w-]+)/?'
+ _VALID_URL = r'https?://(?:www\.)?eporner\.com/hd-porn/(?P<id>\d+)/(?P<display_id>[\w-]+)'
_TEST = {
'url': 'http://www.eporner.com/hd-porn/95008/Infamous-Tiffany-Teen-Strip-Tease-Video/',
'md5': '3b427ae4b9d60619106de3185c2987cd',
'info_dict': {
'id': '95008',
+ 'display_id': 'Infamous-Tiffany-Teen-Strip-Tease-Video',
'ext': 'flv',
'title': 'Infamous Tiffany Teen Strip Tease Video',
'duration': 194,
@@ -28,7 +29,9 @@ class EpornerIE(InfoExtractor):
def _real_extract(self, url):
mobj = re.match(self._VALID_URL, url)
video_id = mobj.group('id')
- webpage = self._download_webpage(url, video_id)
+ display_id = mobj.group('display_id')
+
+ webpage = self._download_webpage(url, display_id)
title = self._html_search_regex(
r'<title>(.*?) - EPORNER', webpage, 'title')
@@ -37,9 +40,22 @@ class EpornerIE(InfoExtractor):
webpage, 'redirect_code')
redirect_url = 'http://www.eporner.com/config5/%s/%s' % (video_id, redirect_code)
player_code = self._download_webpage(
- redirect_url, video_id, note='Downloading player config')
- video_url = self._html_search_regex(
- r'file: "(.*?)",', player_code, 'video_url')
+ redirect_url, display_id, note='Downloading player config')
+
+ sources = self._search_regex(
+ r'(?s)sources\s*:\s*\[\s*({.+?})\s*\]', player_code, 'sources')
+
+ formats = []
+ for video_url, format_id in re.findall(r'file\s*:\s*"([^"]+)",\s*label\s*:\s*"([^"]+)"', sources):
+ fmt = {
+ 'url': video_url,
+ 'format_id': format_id,
+ }
+ m = re.search(r'^(\d+)', format_id)
+ if m:
+ fmt['height'] = int(m.group(1))
+ formats.append(fmt)
+ self._sort_formats(formats)
duration = parse_duration(self._search_regex(
r'class="mbtim">([0-9:]+)</div>', webpage, 'duration',
@@ -50,9 +66,10 @@ class EpornerIE(InfoExtractor):
return {
'id': video_id,
- 'url': video_url,
+ 'display_id': display_id,
'title': title,
'duration': duration,
'view_count': view_count,
+ 'formats': formats,
'age_limit': self._rta_search(webpage),
}