mirror of
https://codeberg.org/polarisfm/youtube-dl
synced 2024-11-23 00:54:31 +01:00
[netease] IPs outside mainland China may access via CDNs.
Tests that work with this approach have been uncommented.
This commit is contained in:
parent
0c6422cdd6
commit
f352ea25ca
@ -19,7 +19,7 @@ from ..utils import (
|
|||||||
|
|
||||||
|
|
||||||
class NetEaseMusicBaseIE(InfoExtractor):
|
class NetEaseMusicBaseIE(InfoExtractor):
|
||||||
_FORMATS = ['bMusic', 'mMusic', 'hMusic']
|
_FORMATS = ['bMusic', 'mMusic', 'hMusic', 'lMusic']
|
||||||
_NETEASE_SALT = '3go8&$8*3*3h0k(2)2'
|
_NETEASE_SALT = '3go8&$8*3*3h0k(2)2'
|
||||||
_API_BASE = 'http://music.163.com/api/'
|
_API_BASE = 'http://music.163.com/api/'
|
||||||
|
|
||||||
@ -44,12 +44,9 @@ class NetEaseMusicBaseIE(InfoExtractor):
|
|||||||
song_file_path = '/%s/%s.%s' % (
|
song_file_path = '/%s/%s.%s' % (
|
||||||
self._encrypt(details['dfsId']), details['dfsId'], details['extension'])
|
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
|
# 2016-AUG-23: For users outside mainland China, use the following hostname which resolve to CDN CNAMEs
|
||||||
# from NetEase's CDN provider that can be used if m5.music.126.net does not
|
# e.g. oversea.video.speedcdns.com, n2.panthercdn.com.
|
||||||
# work, especially for users outside of Mainland China
|
for host in ('http://%c%i.music.126.net' % (c, i) for c in ('p', 'm') for i in range(1, 10)):
|
||||||
# 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
|
song_url = host + song_file_path
|
||||||
if self._is_valid_url(song_url, info['id'], 'song'):
|
if self._is_valid_url(song_url, info['id'], 'song'):
|
||||||
formats.append({
|
formats.append({
|
||||||
@ -61,6 +58,17 @@ class NetEaseMusicBaseIE(InfoExtractor):
|
|||||||
'asr': details.get('sr')
|
'asr': details.get('sr')
|
||||||
})
|
})
|
||||||
break
|
break
|
||||||
|
|
||||||
|
# Another URL in broad daylight, but lower quality and without details such as bitrate etc.
|
||||||
|
# and also need to change its hostname, m2.music.126.net, which resolves to 1.1.1.1 outside mainland China
|
||||||
|
# Included just as a safety net.
|
||||||
|
if info.get('mp3Url'):
|
||||||
|
for host in ('http://%c%i.music.126.net' % (c, i) for c in ('p', 'm') for i in range(1, 10)):
|
||||||
|
song_url = re.sub('http://\w+\.music\.126\.net', host, info['mp3Url'])
|
||||||
|
if self._is_valid_url(song_url, info['id'], 'song'):
|
||||||
|
formats.append({'url': song_url})
|
||||||
|
break
|
||||||
|
|
||||||
return formats
|
return formats
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@ -89,7 +97,7 @@ class NetEaseMusicIE(NetEaseMusicBaseIE):
|
|||||||
'timestamp': 1431878400,
|
'timestamp': 1431878400,
|
||||||
'description': 'md5:a10a54589c2860300d02e1de821eb2ef',
|
'description': 'md5:a10a54589c2860300d02e1de821eb2ef',
|
||||||
},
|
},
|
||||||
'skip': 'Blocked outside Mainland China',
|
'skip': 'Behind paywall',
|
||||||
}, {
|
}, {
|
||||||
'note': 'No lyrics translation.',
|
'note': 'No lyrics translation.',
|
||||||
'url': 'http://music.163.com/#/song?id=29822014',
|
'url': 'http://music.163.com/#/song?id=29822014',
|
||||||
@ -102,7 +110,6 @@ class NetEaseMusicIE(NetEaseMusicBaseIE):
|
|||||||
'timestamp': 1419523200,
|
'timestamp': 1419523200,
|
||||||
'description': 'md5:a4d8d89f44656af206b7b2555c0bce6c',
|
'description': 'md5:a4d8d89f44656af206b7b2555c0bce6c',
|
||||||
},
|
},
|
||||||
'skip': 'Blocked outside Mainland China',
|
|
||||||
}, {
|
}, {
|
||||||
'note': 'No lyrics.',
|
'note': 'No lyrics.',
|
||||||
'url': 'http://music.163.com/song?id=17241424',
|
'url': 'http://music.163.com/song?id=17241424',
|
||||||
@ -114,7 +121,6 @@ class NetEaseMusicIE(NetEaseMusicBaseIE):
|
|||||||
'upload_date': '20080211',
|
'upload_date': '20080211',
|
||||||
'timestamp': 1202745600,
|
'timestamp': 1202745600,
|
||||||
},
|
},
|
||||||
'skip': 'Blocked outside Mainland China',
|
|
||||||
}, {
|
}, {
|
||||||
'note': 'Has translated name.',
|
'note': 'Has translated name.',
|
||||||
'url': 'http://music.163.com/#/song?id=22735043',
|
'url': 'http://music.163.com/#/song?id=22735043',
|
||||||
@ -189,7 +195,7 @@ class NetEaseMusicAlbumIE(NetEaseMusicBaseIE):
|
|||||||
IE_NAME = 'netease:album'
|
IE_NAME = 'netease:album'
|
||||||
IE_DESC = '网易云音乐 - 专辑'
|
IE_DESC = '网易云音乐 - 专辑'
|
||||||
_VALID_URL = r'https?://music\.163\.com/(#/)?album\?id=(?P<id>[0-9]+)'
|
_VALID_URL = r'https?://music\.163\.com/(#/)?album\?id=(?P<id>[0-9]+)'
|
||||||
_TEST = {
|
_TESTS = [{
|
||||||
'url': 'http://music.163.com/#/album?id=220780',
|
'url': 'http://music.163.com/#/album?id=220780',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
'id': '220780',
|
'id': '220780',
|
||||||
@ -197,7 +203,14 @@ class NetEaseMusicAlbumIE(NetEaseMusicBaseIE):
|
|||||||
},
|
},
|
||||||
'playlist_count': 23,
|
'playlist_count': 23,
|
||||||
'skip': 'Blocked outside Mainland China',
|
'skip': 'Blocked outside Mainland China',
|
||||||
}
|
}, {
|
||||||
|
'url': 'http://music.163.com/#/album?id=3317645',
|
||||||
|
'info_dict': {
|
||||||
|
'id': '3317645',
|
||||||
|
'title': 'Paradox Interactive Music Hits! - Platypus Edition',
|
||||||
|
},
|
||||||
|
'playlist_count': 12,
|
||||||
|
}]
|
||||||
|
|
||||||
def _real_extract(self, url):
|
def _real_extract(self, url):
|
||||||
album_id = self._match_id(url)
|
album_id = self._match_id(url)
|
||||||
@ -238,6 +251,13 @@ class NetEaseMusicSingerIE(NetEaseMusicBaseIE):
|
|||||||
},
|
},
|
||||||
'playlist_count': 50,
|
'playlist_count': 50,
|
||||||
'skip': 'Blocked outside Mainland China',
|
'skip': 'Blocked outside Mainland China',
|
||||||
|
}, {
|
||||||
|
'url': 'http://music.163.com/#/artist?id=837067',
|
||||||
|
'info_dict': {
|
||||||
|
'id': '837067',
|
||||||
|
'title': 'Andreas Waldetoft',
|
||||||
|
},
|
||||||
|
'playlist_count': 50,
|
||||||
}]
|
}]
|
||||||
|
|
||||||
def _real_extract(self, url):
|
def _real_extract(self, url):
|
||||||
@ -323,7 +343,6 @@ class NetEaseMusicMvIE(NetEaseMusicBaseIE):
|
|||||||
'creator': '白雅言',
|
'creator': '白雅言',
|
||||||
'upload_date': '20150520',
|
'upload_date': '20150520',
|
||||||
},
|
},
|
||||||
'skip': 'Blocked outside Mainland China',
|
|
||||||
}
|
}
|
||||||
|
|
||||||
def _real_extract(self, url):
|
def _real_extract(self, url):
|
||||||
@ -367,7 +386,6 @@ class NetEaseMusicProgramIE(NetEaseMusicBaseIE):
|
|||||||
'upload_date': '20150613',
|
'upload_date': '20150613',
|
||||||
'duration': 900,
|
'duration': 900,
|
||||||
},
|
},
|
||||||
'skip': 'Blocked outside Mainland China',
|
|
||||||
}, {
|
}, {
|
||||||
'note': 'This program has accompanying songs.',
|
'note': 'This program has accompanying songs.',
|
||||||
'url': 'http://music.163.com/#/program?id=10141022',
|
'url': 'http://music.163.com/#/program?id=10141022',
|
||||||
|
Loading…
Reference in New Issue
Block a user