]> jfr.im git - yt-dlp.git/blame - yt_dlp/extractor/southpark.py
[ie/orf:on] Improve extraction (#9677)
[yt-dlp.git] / yt_dlp / extractor / southpark.py
CommitLineData
84db8181 1from .mtv import MTVServicesInfoExtractor
5a6fecc3
JMF
2
3
10d00a75
JMF
4class SouthParkIE(MTVServicesInfoExtractor):
5 IE_NAME = 'southpark.cc.com'
fec41d17 6 _VALID_URL = r'https?://(?:www\.)?(?P<url>southpark(?:\.cc|studios)\.com/((?:video-)?clips|(?:full-)?episodes|collections)/(?P<id>.+?)(\?|#|$))'
5a6fecc3 7
10db0d2f 8 _FEED_URL = 'http://feeds.mtvnservices.com/od/feed/intl-mrss-player-feed'
5a6fecc3 9
1672647a 10 _TESTS = [{
fec41d17 11 'url': 'https://southpark.cc.com/video-clips/d7wr06/south-park-you-all-agreed-to-counseling',
d55433bb 12 'info_dict': {
d55433bb 13 'ext': 'mp4',
fec41d17
S
14 'title': 'You All Agreed to Counseling',
15 'description': 'Kenny, Cartman, Stan, and Kyle visit Mr. Mackey and ask for his help getting Mrs. Nelson to come back. Mr. Mackey reveals the only way to get things back to normal is to get the teachers vaccinated.',
16 'timestamp': 1615352400,
17 'upload_date': '20210310',
5a6fecc3 18 },
99d6e696
S
19 }, {
20 'url': 'http://southpark.cc.com/collections/7758/fan-favorites/1',
21 'only_matching': True,
10db0d2f 22 }, {
23 'url': 'https://www.southparkstudios.com/episodes/h4o269/south-park-stunning-and-brave-season-19-ep-1',
24 'only_matching': True,
1672647a 25 }]
5a6fecc3 26
10db0d2f 27 def _get_feed_query(self, uri):
28 return {
29 'accountOverride': 'intl.mtvi.com',
30 'arcEp': 'shared.southpark.global',
31 'ep': '90877963',
32 'imageEp': 'shared.southpark.global',
33 'mgid': uri,
34 }
35
746f491f 36
6368e2e6 37class SouthParkEsIE(SouthParkIE): # XXX: Do not subclass from concrete IE
642f23bd 38 IE_NAME = 'southpark.cc.com:español'
fec41d17 39 _VALID_URL = r'https?://(?:www\.)?(?P<url>southpark\.cc\.com/es/episodios/(?P<id>.+?)(\?|#|$))'
e4a5e772
S
40 _LANG = 'es'
41
42 _TESTS = [{
fec41d17 43 'url': 'http://southpark.cc.com/es/episodios/s01e01-cartman-consigue-una-sonda-anal#source=351c1323-0b96-402d-a8b9-40d01b2e9bde&position=1&sort=!airdate',
a3aa814b
YCH
44 'info_dict': {
45 'title': 'Cartman Consigue Una Sonda Anal',
46 'description': 'Cartman Consigue Una Sonda Anal',
47 },
e4a5e772 48 'playlist_count': 4,
165c54e9 49 'skip': 'Geo-restricted',
e4a5e772
S
50 }]
51
52
6368e2e6 53class SouthParkDeIE(SouthParkIE): # XXX: Do not subclass from concrete IE
d55433bb 54 IE_NAME = 'southpark.de'
02def271 55 _VALID_URL = r'https?://(?:www\.)?(?P<url>southpark\.de/(?:(en/(videoclip|collections|episodes|video-clips))|(videoclip|collections|folgen))/(?P<id>(?P<unique_id>.+?)/.+?)(?:\?|#|$))'
746f491f 56 _TESTS = [{
bc887cdd
U
57 'url': 'https://www.southpark.de/videoclip/rsribv/south-park-rueckzug-zum-gummibonbon-wald',
58 'only_matching': True,
bd690a9f 59 }, {
bc887cdd
U
60 'url': 'https://www.southpark.de/folgen/jiru42/south-park-verkabelung-staffel-23-ep-9',
61 'only_matching': True,
99d6e696 62 }, {
bc887cdd 63 'url': 'https://www.southpark.de/collections/zzno5a/south-park-good-eats/7q26gp',
99d6e696 64 'only_matching': True,
02def271 65 }, {
66 # clip
67 'url': 'https://www.southpark.de/en/video-clips/ct46op/south-park-tooth-fairy-cartman',
68 'info_dict': {
69 'id': 'e99d45ea-ed00-11e0-aca6-0026b9414f30',
70 'ext': 'mp4',
71 'title': 'Tooth Fairy Cartman',
72 'description': 'md5:db02e23818b4dc9cb5f0c5a7e8833a68',
73 },
74 }, {
75 # episode
76 'url': 'https://www.southpark.de/en/episodes/yy0vjs/south-park-the-pandemic-special-season-24-ep-1',
77 'info_dict': {
78 'id': 'f5fbd823-04bc-11eb-9b1b-0e40cf2fc285',
79 'ext': 'mp4',
80 'title': 'South Park',
81 'description': 'md5:ae0d875eff169dcbed16b21531857ac1',
82 },
83 }, {
84 # clip
85 'url': 'https://www.southpark.de/videoclip/ct46op/south-park-zahnfee-cartman',
86 'info_dict': {
87 'id': 'e99d45ea-ed00-11e0-aca6-0026b9414f30',
88 'ext': 'mp4',
89 'title': 'Zahnfee Cartman',
90 'description': 'md5:b917eec991d388811d911fd1377671ac'
91 },
92 }, {
93 # episode
94 'url': 'https://www.southpark.de/folgen/242csn/south-park-her-mit-dem-hirn-staffel-1-ep-7',
95 'info_dict': {
96 'id': '607115f3-496f-40c3-8647-2b0bcff486c0',
97 'ext': 'mp4',
98 'title': 'md5:South Park | Pink Eye | E 0107 | HDSS0107X deu | Version: 634312 | Comedy Central S1',
99 },
746f491f 100 }]
e10dc0e1 101
320724f9
U
102 def _get_feed_url(self, uri, url=None):
103 video_id = self._id_from_uri(uri)
104 config = self._download_json(
105 'http://media.mtvnservices.com/pmt/e1/access/index.html?uri=%s&configtype=edge&ref=%s' % (uri, url), video_id)
106 return self._remove_template_parameter(config['feedWithQueryParams'])
107
02def271 108 def _get_feed_query(self, uri):
109 return
110
e10dc0e1 111
6368e2e6 112class SouthParkLatIE(SouthParkIE): # XXX: Do not subclass from concrete IE
bde0132e
AT
113 IE_NAME = 'southpark.lat'
114 _VALID_URL = r'https?://(?:www\.)?southpark\.lat/(?:en/)?(?:video-?clips?|collections|episod(?:e|io)s)/(?P<id>[^/?#&]+)'
115 _TESTS = [{
116 'url': 'https://www.southpark.lat/en/video-clips/ct46op/south-park-tooth-fairy-cartman',
117 'only_matching': True,
118 }, {
119 'url': 'https://www.southpark.lat/episodios/9h0qbg/south-park-orgia-gatuna-temporada-3-ep-7',
120 'only_matching': True,
121 }, {
122 'url': 'https://www.southpark.lat/en/collections/29ve08/south-park-heating-up/lydbrc',
123 'only_matching': True,
124 }, {
125 # clip
126 'url': 'https://www.southpark.lat/en/video-clips/ct46op/south-park-tooth-fairy-cartman',
127 'info_dict': {
128 'id': 'e99d45ea-ed00-11e0-aca6-0026b9414f30',
129 'ext': 'mp4',
130 'title': 'Tooth Fairy Cartman',
131 'description': 'md5:db02e23818b4dc9cb5f0c5a7e8833a68',
132 },
133 }, {
134 # episode
135 'url': 'https://www.southpark.lat/episodios/9h0qbg/south-park-orgia-gatuna-temporada-3-ep-7',
136 'info_dict': {
137 'id': 'f5fbd823-04bc-11eb-9b1b-0e40cf2fc285',
138 'ext': 'mp4',
139 'title': 'South Park',
140 'description': 'md5:ae0d875eff169dcbed16b21531857ac1',
141 },
142 }]
143
144 def _get_feed_url(self, uri, url=None):
145 video_id = self._id_from_uri(uri)
146 config = self._download_json(
147 f'http://media.mtvnservices.com/pmt/e1/access/index.html?uri={uri}&configtype=edge&ref={url}',
148 video_id)
149 return self._remove_template_parameter(config['feedWithQueryParams'])
150
151 def _get_feed_query(self, uri):
152 return
153
154
6368e2e6 155class SouthParkNlIE(SouthParkIE): # XXX: Do not subclass from concrete IE
e10dc0e1 156 IE_NAME = 'southpark.nl'
6289e078 157 _VALID_URL = r'https?://(?:www\.)?(?P<url>southpark\.nl/(?:clips|(?:full-)?episodes|collections)/(?P<id>.+?)(\?|#|$))'
e10dc0e1 158 _FEED_URL = 'http://www.southpark.nl/feeds/video-player/mrss/'
159
160 _TESTS = [{
161 'url': 'http://www.southpark.nl/full-episodes/s18e06-freemium-isnt-free',
a3aa814b
YCH
162 'info_dict': {
163 'title': 'Freemium Isn\'t Free',
164 'description': 'Stan is addicted to the new Terrance and Phillip mobile game.',
165 },
166 'playlist_mincount': 3,
e10dc0e1 167 }]
968ee176 168
6d3f5935 169
6368e2e6 170class SouthParkDkIE(SouthParkIE): # XXX: Do not subclass from concrete IE
6d3f5935 171 IE_NAME = 'southparkstudios.dk'
e0ab5657 172 _VALID_URL = r'https?://(?:www\.)?(?P<url>southparkstudios\.(?:dk|nu)/(?:clips|full-episodes|collections)/(?P<id>.+?)(\?|#|$))'
968ee176 173 _FEED_URL = 'http://www.southparkstudios.dk/feeds/video-player/mrss/'
174
175 _TESTS = [{
176 'url': 'http://www.southparkstudios.dk/full-episodes/s18e07-grounded-vindaloop',
a3aa814b
YCH
177 'info_dict': {
178 'title': 'Grounded Vindaloop',
179 'description': 'Butters is convinced he\'s living in a virtual reality.',
180 },
181 'playlist_mincount': 3,
99d6e696
S
182 }, {
183 'url': 'http://www.southparkstudios.dk/collections/2476/superhero-showdown/1',
184 'only_matching': True,
e0ab5657
S
185 }, {
186 'url': 'http://www.southparkstudios.nu/collections/2476/superhero-showdown/1',
187 'only_matching': True,
968ee176 188 }]