|
@@ -11,6 +11,7 @@ from ..utils import (
|
|
|
|
|
|
|
|
|
|
class AppleTrailersIE(InfoExtractor):
|
|
class AppleTrailersIE(InfoExtractor):
|
|
|
|
+ IE_NAME = 'appletrailers'
|
|
_VALID_URL = r'https?://(?:www\.)?trailers\.apple\.com/(?:trailers|ca)/(?P<company>[^/]+)/(?P<movie>[^/]+)'
|
|
_VALID_URL = r'https?://(?:www\.)?trailers\.apple\.com/(?:trailers|ca)/(?P<company>[^/]+)/(?P<movie>[^/]+)'
|
|
_TESTS = [{
|
|
_TESTS = [{
|
|
'url': 'http://trailers.apple.com/trailers/wb/manofsteel/',
|
|
'url': 'http://trailers.apple.com/trailers/wb/manofsteel/',
|
|
@@ -144,3 +145,76 @@ class AppleTrailersIE(InfoExtractor):
|
|
'id': movie,
|
|
'id': movie,
|
|
'entries': playlist,
|
|
'entries': playlist,
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+class AppleTrailersSectionIE(InfoExtractor):
|
|
|
|
+ IE_NAME = 'appletrailers:section'
|
|
|
|
+ _SECTIONS = {
|
|
|
|
+ 'justadded': {
|
|
|
|
+ 'feed_path': 'just_added',
|
|
|
|
+ 'title': 'Just Added',
|
|
|
|
+ },
|
|
|
|
+ 'exclusive': {
|
|
|
|
+ 'feed_path': 'exclusive',
|
|
|
|
+ 'title': 'Exclusive',
|
|
|
|
+ },
|
|
|
|
+ 'justhd': {
|
|
|
|
+ 'feed_path': 'just_hd',
|
|
|
|
+ 'title': 'Just HD',
|
|
|
|
+ },
|
|
|
|
+ 'mostpopular': {
|
|
|
|
+ 'feed_path': 'most_pop',
|
|
|
|
+ 'title': 'Most Popular',
|
|
|
|
+ },
|
|
|
|
+ 'moviestudios': {
|
|
|
|
+ 'feed_path': 'studios',
|
|
|
|
+ 'title': 'Movie Studios',
|
|
|
|
+ },
|
|
|
|
+ }
|
|
|
|
+ _VALID_URL = r'https?://(?:www\.)?trailers\.apple\.com/#section=(?P<id>%s)' % '|'.join(_SECTIONS)
|
|
|
|
+ _TESTS = [{
|
|
|
|
+ 'url': 'http://trailers.apple.com/#section=justadded',
|
|
|
|
+ 'info_dict': {
|
|
|
|
+ 'title': 'Just Added',
|
|
|
|
+ 'id': 'justadded',
|
|
|
|
+ },
|
|
|
|
+ 'playlist_mincount': 80,
|
|
|
|
+ }, {
|
|
|
|
+ 'url': 'http://trailers.apple.com/#section=exclusive',
|
|
|
|
+ 'info_dict': {
|
|
|
|
+ 'title': 'Exclusive',
|
|
|
|
+ 'id': 'exclusive',
|
|
|
|
+ },
|
|
|
|
+ 'playlist_mincount': 80,
|
|
|
|
+ }, {
|
|
|
|
+ 'url': 'http://trailers.apple.com/#section=justhd',
|
|
|
|
+ 'info_dict': {
|
|
|
|
+ 'title': 'Just HD',
|
|
|
|
+ 'id': 'justhd',
|
|
|
|
+ },
|
|
|
|
+ 'playlist_mincount': 80,
|
|
|
|
+ }, {
|
|
|
|
+ 'url': 'http://trailers.apple.com/#section=mostpopular',
|
|
|
|
+ 'info_dict': {
|
|
|
|
+ 'title': 'Most Popular',
|
|
|
|
+ 'id': 'mostpopular',
|
|
|
|
+ },
|
|
|
|
+ 'playlist_mincount': 80,
|
|
|
|
+ }, {
|
|
|
|
+ 'url': 'http://trailers.apple.com/#section=moviestudios',
|
|
|
|
+ 'info_dict': {
|
|
|
|
+ 'title': 'Movie Studios',
|
|
|
|
+ 'id': 'moviestudios',
|
|
|
|
+ },
|
|
|
|
+ 'playlist_mincount': 80,
|
|
|
|
+ }]
|
|
|
|
+
|
|
|
|
+ def _real_extract(self, url):
|
|
|
|
+ section = self._match_id(url)
|
|
|
|
+ section_data = self._download_json(
|
|
|
|
+ 'http://trailers.apple.com/trailers/home/feeds/%s.json' % self._SECTIONS[section]['feed_path'],
|
|
|
|
+ section)
|
|
|
|
+ entries = [
|
|
|
|
+ self.url_result('http://trailers.apple.com' + e['location'])
|
|
|
|
+ for e in section_data]
|
|
|
|
+ return self.playlist_result(entries, section, self._SECTIONS[section]['title'])
|