]>
Commit | Line | Data |
---|---|---|
1dc31c27 ZB |
1 | from .common import InfoExtractor |
2 | from ..utils import ( | |
3 | str_to_int, | |
4 | ExtractorError | |
5 | ) | |
6 | ||
7 | ||
8 | class AppleConnectIE(InfoExtractor): | |
ed807c18 | 9 | _VALID_URL = r'https?://itunes\.apple\.com/\w{0,2}/?post/(?:id)?sa\.(?P<id>[\w-]+)' |
10 | _TESTS = [{ | |
1dc31c27 | 11 | 'url': 'https://itunes.apple.com/us/post/idsa.4ab17a39-2720-11e5-96c5-a5b38f6c42d3', |
ed807c18 | 12 | 'md5': 'c1d41f72c8bcaf222e089434619316e4', |
1dc31c27 ZB |
13 | 'info_dict': { |
14 | 'id': '4ab17a39-2720-11e5-96c5-a5b38f6c42d3', | |
15 | 'ext': 'm4v', | |
16 | 'title': 'Energy', | |
17 | 'uploader': 'Drake', | |
064fafe9 | 18 | 'thumbnail': r're:^https?://.*\.jpg$', |
1dc31c27 ZB |
19 | 'upload_date': '20150710', |
20 | 'timestamp': 1436545535, | |
21 | }, | |
ed807c18 | 22 | }, { |
23 | 'url': 'https://itunes.apple.com/us/post/sa.0fe0229f-2457-11e5-9f40-1bb645f2d5d9', | |
24 | 'only_matching': True, | |
25 | }] | |
1dc31c27 ZB |
26 | |
27 | def _real_extract(self, url): | |
28 | video_id = self._match_id(url) | |
29 | webpage = self._download_webpage(url, video_id) | |
30 | ||
31 | try: | |
32 | video_json = self._html_search_regex( | |
33 | r'class="auc-video-data">(\{.*?\})', webpage, 'json') | |
34 | except ExtractorError: | |
35 | raise ExtractorError('This post doesn\'t contain a video', expected=True) | |
36 | ||
37 | video_data = self._parse_json(video_json, video_id) | |
38 | timestamp = str_to_int(self._html_search_regex(r'data-timestamp="(\d+)"', webpage, 'timestamp')) | |
ed807c18 | 39 | like_count = str_to_int(self._html_search_regex(r'(\d+) Loves', webpage, 'like count', default=None)) |
1dc31c27 ZB |
40 | |
41 | return { | |
42 | 'id': video_id, | |
43 | 'url': video_data['sslSrc'], | |
44 | 'title': video_data['title'], | |
45 | 'description': video_data['description'], | |
46 | 'uploader': video_data['artistName'], | |
47 | 'thumbnail': video_data['artworkUrl'], | |
48 | 'timestamp': timestamp, | |
49 | 'like_count': like_count, | |
50 | } |