X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=youtube_dl%2Fextractor%2Fkuwo.py;h=f94804d06865c9e5b72c936818dbce5f4bf09229;hb=3c20208eff29fcd3e5d4b13f3d4ffa1be7c56309;hp=51137a982a9581fc6e2e39a1dafdc47351282b3a;hpb=c44c7895b8774fb819b0b664bfcf64a7ebeea4e8;p=youtube-dl.git diff --git a/youtube_dl/extractor/kuwo.py b/youtube_dl/extractor/kuwo.py index 51137a982..f94804d06 100644 --- a/youtube_dl/extractor/kuwo.py +++ b/youtube_dl/extractor/kuwo.py @@ -23,7 +23,7 @@ class KuwoBaseIE(InfoExtractor): {'format': 'aac', 'ext': 'aac', 'abr': 48, 'preference': 10} ] - def _get_formats(self, song_id): + def _get_formats(self, song_id, tolerate_ip_deny=False): formats = [] for file_format in self._FORMATS: song_url = self._download_webpage( @@ -31,6 +31,10 @@ class KuwoBaseIE(InfoExtractor): (file_format['ext'], file_format.get('br', ''), song_id), song_id, note='Download %s url info' % file_format['format'], ) + + if song_url == 'IPDeny' and not tolerate_ip_deny: + raise ExtractorError('This song is blocked in this region', expected=True) + if song_url.startswith('http://') or song_url.startswith('https://'): formats.append({ 'url': song_url, @@ -39,7 +43,12 @@ class KuwoBaseIE(InfoExtractor): 'preference': file_format['preference'], 'abr': file_format.get('abr'), }) - self._sort_formats(formats) + + # XXX _sort_formats fails if there are not formats, while it's not the + # desired behavior if 'IPDeny' is ignored + # This check can be removed if https://github.com/rg3/youtube-dl/pull/8051 is merged + if not tolerate_ip_deny: + self._sort_formats(formats) return formats @@ -64,6 +73,7 @@ class KuwoIE(KuwoBaseIE): 'id': '6446136', 'ext': 'mp3', 'title': 'å¿', + 'description': 'md5:b2ab6295d014005bfc607525bfc1e38a', 'creator': 'IU', 'upload_date': '20150518', }, @@ -77,9 +87,11 @@ class KuwoIE(KuwoBaseIE): webpage = self._download_webpage( url, song_id, note='Download song detail info', errnote='Unable to get song detail info') + if '对ä¸èµ·ï¼è¯¥ææ²ç±äºçæé®é¢å·²è¢«ä¸çº¿ï¼å°è¿åç½ç«é¦é¡µ' in webpage: + raise ExtractorError('this song has been offline because of copyright issues', expected=True) song_name = self._html_search_regex( - r'(?s)class="[^"]*title[^"]*".*?