The Daily Show Podcast support

pull/8/head
felix 2015-03-16 20:05:02 +01:00
rodzic 90183a46d8
commit 2e90dff2c2
3 zmienionych plików z 64 dodań i 1 usunięć

Wyświetl plik

@ -84,7 +84,7 @@ from .cnn import (
)
from .collegehumor import CollegeHumorIE
from .collegerama import CollegeRamaIE
from .comedycentral import ComedyCentralIE, ComedyCentralShowsIE
from .comedycentral import ComedyCentralIE, ComedyCentralShowsIE, TheDailyShowPodcastIE
from .comcarcoff import ComCarCoffIE
from .commonmistakes import CommonMistakesIE, UnicodeBOMIE
from .condenast import CondeNastIE
@ -250,6 +250,7 @@ from .letv import (
LetvPlaylistIE
)
from .lifenews import LifeNewsIE
from .libsyn import LibsynIE
from .liveleak import LiveLeakIE
from .livestream import (
LivestreamIE,

Wyświetl plik

@ -2,6 +2,7 @@ from __future__ import unicode_literals
import re
from .common import InfoExtractor
from .mtv import MTVServicesInfoExtractor
from ..compat import (
compat_str,
@ -272,3 +273,23 @@ class ComedyCentralShowsIE(MTVServicesInfoExtractor):
'title': show_name + ' ' + title,
'description': description,
}
class TheDailyShowPodcastIE(InfoExtractor):
_VALID_URL = r'(?P<scheme>https?:)?//thedailyshow\.cc\.com/podcast/(?P<id>[a-z\-]+)'
def _real_extract(self, url):
display_id = self._match_id(url)
webpage = self._download_webpage(url, display_id)
player_url = self._search_regex(r'<iframe(?:\s+[^>]+)?\s*src="((?:https?:)?//html5-player\.libsyn\.com/embed/episode/id/[0-9]+)', webpage, 'player URL')
if player_url.startswith('//'):
mobj = re.match(self._VALID_URL, url)
scheme = mobj.group('scheme')
if not scheme:
scheme = 'https:'
player_url = scheme + player_url
return {
'_type': 'url_transparent',
'url': player_url,
}

Wyświetl plik

@ -0,0 +1,41 @@
# encoding: utf-8
from .common import InfoExtractor
from ..utils import (
unified_strdate,
)
class LibsynIE(InfoExtractor):
_VALID_URL = r'(?:https?:)?//html5-player\.libsyn\.com/embed/episode/id/(?P<id>[0-9]+)(?:/.*)?'
def _real_extract(self, url):
if url.startswith('//'):
url = 'https:' + url
display_id = self._match_id(url)
webpage = self._download_webpage(url, display_id)
podcast_title = self._search_regex(r'<h2>(.*?)</h2>', webpage, 'show title')
podcast_episode_title = self._search_regex(r'<h3>(.*?)</h3>', webpage, 'episode title')
podcast_date = unified_strdate(self._search_regex(r'<div class="release_date">Released: (.*?)</div>', webpage, 'release date'))
podcast_description = self._search_regex(r'<div id="info_text_body">(.*?)</div>', webpage, 'description')
url0 = self._search_regex(r'var mediaURLLibsyn = "(?P<url0>https?://.*)";', webpage, 'first media URL')
url1 = self._search_regex(r'var mediaURL = "(?P<url1>https?://.*)";', webpage, 'second media URL')
if url0 != url1:
formats = [{
'url': url0
}, {
'url': url1
}]
else:
formats = [{
'url': url0
}]
return {
'id': display_id,
'title': podcast_episode_title,
'description': podcast_description,
'upload_date': podcast_date,
'formats': formats,
}