aboutsummaryrefslogtreecommitdiffstats
path: root/youtube_dl
diff options
context:
space:
mode:
authorPhilipp Hagemeister <phihag@phihag.de>2013-11-13 11:03:49 +0100
committerPhilipp Hagemeister <phihag@phihag.de>2013-11-13 11:03:49 +0100
commit6c5ad80cdcd3f51b61a9d21c55e21d51e6b2f39a (patch)
tree3b7538bc9a300b0a5a546e10a52ea956fb00df19 /youtube_dl
parentb5bdc2699a5fead926114f6db6f1178181d75c58 (diff)
parent5137ebac0b1438d22fe2c007e6172ee65e9311a5 (diff)
downloadyoutube-dl-6c5ad80cdcd3f51b61a9d21c55e21d51e6b2f39a.zip
youtube-dl-6c5ad80cdcd3f51b61a9d21c55e21d51e6b2f39a.tar.gz
youtube-dl-6c5ad80cdcd3f51b61a9d21c55e21d51e6b2f39a.tar.bz2
Merge remote-tracking branch 'saper/tvp'
Diffstat (limited to 'youtube_dl')
-rw-r--r--youtube_dl/extractor/__init__.py1
-rw-r--r--youtube_dl/extractor/tvp.py60
2 files changed, 61 insertions, 0 deletions
diff --git a/youtube_dl/extractor/__init__.py b/youtube_dl/extractor/__init__.py
index 67a0ad5..0594a36 100644
--- a/youtube_dl/extractor/__init__.py
+++ b/youtube_dl/extractor/__init__.py
@@ -135,6 +135,7 @@ from .tube8 import Tube8IE
from .tudou import TudouIE
from .tumblr import TumblrIE
from .tutv import TutvIE
+from .tvp import TvpIE
from .unistra import UnistraIE
from .ustream import UstreamIE, UstreamChannelIE
from .vbox7 import Vbox7IE
diff --git a/youtube_dl/extractor/tvp.py b/youtube_dl/extractor/tvp.py
new file mode 100644
index 0000000..63fb57b
--- /dev/null
+++ b/youtube_dl/extractor/tvp.py
@@ -0,0 +1,60 @@
+# encoding: utf-8
+import re
+import json
+
+from .common import InfoExtractor
+from ..utils import (
+ determine_ext,
+ ExtractorError,
+ RegexNotFoundError,
+)
+
+class TvpIE(InfoExtractor):
+ IE_NAME = u'tvp.pl'
+ _VALID_URL = r'https?://www\.tvp\.pl/.*?wideo/(?P<date>\d+)/(?P<id>\d+)'
+ _INFO_URL = 'http://www.tvp.pl/pub/stat/videofileinfo?video_id=%s'
+
+
+ _TEST = {
+ u'url': u'http://www.tvp.pl/warszawa/magazyny/campusnews/wideo/31102013/12878238',
+ u'file': u'31.10.2013-12878238.wmv',
+ u'info_dict': {
+ u'title': u'31.10.2013',
+ u'description': u'31.10.2013',
+ },
+ }
+
+ def _real_extract(self, url):
+ mobj = re.match(self._VALID_URL, url)
+ video_id = mobj.group('id')
+ webpage = self._download_webpage(url, video_id, "Downloading video webpage")
+ json_params = self._download_webpage(self._INFO_URL % video_id, video_id, "Downloading video metadata")
+
+ try:
+ params = json.loads(json_params)
+ except:
+ raise ExtractorError(u'Invalid JSON')
+
+ self.report_extraction(video_id)
+ try:
+ video_url = params['video_url']
+ except KeyError:
+ raise ExtractorError('Missing JSON parameter: ' + sys.exc_info()[1])
+
+ try:
+ title = self._og_search_title(webpage)
+ except RegexNotFoundError:
+ title = video_id
+ info = {
+ 'id': video_id,
+ 'title': title,
+ 'ext': 'wmv',
+ 'url': video_url,
+ }
+ try:
+ info['description'] = self._og_search_description(webpage)
+ info['thumbnail'] = self._og_search_thumbnail(webpage)
+ except RegexNotFoundError:
+ pass
+
+ return info