aboutsummaryrefslogtreecommitdiff
path: root/youtube_dl/extractor/neteasemusic.py
diff options
context:
space:
mode:
authorYen Chi Hsuan <yan12125@gmail.com>2016-01-20 04:15:46 +0800
committerYen Chi Hsuan <yan12125@gmail.com>2016-01-20 04:15:46 +0800
commita54fbf2ca6a2b9cebb151c7af70d3949967e21b0 (patch)
tree2cc7974789eeb1f97be6430f2155b3849d02553a /youtube_dl/extractor/neteasemusic.py
parentd8024aebe5b77b160006e7f3cfc144e8b9045a6b (diff)
parente0ef13ddebfab39d8c59c8cd9c11882cfc604070 (diff)
Merge branch 'patch-8239' of https://github.com/ping/youtube-dl into ping-patch-8239
Diffstat (limited to 'youtube_dl/extractor/neteasemusic.py')
-rw-r--r--youtube_dl/extractor/neteasemusic.py35
1 files changed, 22 insertions, 13 deletions
diff --git a/youtube_dl/extractor/neteasemusic.py b/youtube_dl/extractor/neteasemusic.py
index 15eca825a..435cd8e2e 100644
--- a/youtube_dl/extractor/neteasemusic.py
+++ b/youtube_dl/extractor/neteasemusic.py
@@ -32,23 +32,32 @@ class NetEaseMusicBaseIE(InfoExtractor):
result = b64encode(m.digest()).decode('ascii')
return result.replace('/', '_').replace('+', '-')
- @classmethod
- def extract_formats(cls, info):
+ def extract_formats(self, info):
formats = []
- for song_format in cls._FORMATS:
+ for song_format in self._FORMATS:
details = info.get(song_format)
if not details:
continue
- formats.append({
- 'url': 'http://m5.music.126.net/%s/%s.%s' %
- (cls._encrypt(details['dfsId']), details['dfsId'],
- details['extension']),
- 'ext': details.get('extension'),
- 'abr': details.get('bitrate', 0) / 1000,
- 'format_id': song_format,
- 'filesize': details.get('size'),
- 'asr': details.get('sr')
- })
+ song_file_path = '/%s/%s.%s' % (
+ self._encrypt(details['dfsId']), details['dfsId'], details['extension'])
+
+ # 203.130.59.9, 124.40.233.182, 115.231.74.139, etc is a reverse proxy-like feature
+ # from NetEase's CDN provider that can be used if m5.music.126.net does not
+ # work, especially for users outside of Mainland China
+ # via: https://github.com/JixunMoe/unblock-163/issues/3#issuecomment-163115880
+ for host in ('http://m5.music.126.net', 'http://115.231.74.139/m1.music.126.net',
+ 'http://124.40.233.182/m1.music.126.net', 'http://203.130.59.9/m1.music.126.net'):
+ song_url = host + song_file_path
+ if self._is_valid_url(song_url, info['id'], 'song'):
+ formats.append({
+ 'url': song_url,
+ 'ext': details.get('extension'),
+ 'abr': details.get('bitrate', 0) / 1000,
+ 'format_id': song_format,
+ 'filesize': details.get('size'),
+ 'asr': details.get('sr')
+ })
+ break
return formats
@classmethod