|
@ -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']) |