|
|
|
@ -11,6 +11,7 @@ from ..utils import (
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class AppleTrailersIE(InfoExtractor):
|
|
|
|
|
IE_NAME = 'appletrailers'
|
|
|
|
|
_VALID_URL = r'https?://(?:www\.)?trailers\.apple\.com/(?:trailers|ca)/(?P<company>[^/]+)/(?P<movie>[^/]+)'
|
|
|
|
|
_TESTS = [{
|
|
|
|
|
'url': 'http://trailers.apple.com/trailers/wb/manofsteel/',
|
|
|
|
@ -144,3 +145,76 @@ class AppleTrailersIE(InfoExtractor):
|
|
|
|
|
'id': movie,
|
|
|
|
|
'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'])
|
|
|
|
|