projects
/
youtube-dl
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[youtube] Fix test
[youtube-dl]
/
youtube_dl
/
extractor
/
neteasemusic.py
diff --git
a/youtube_dl/extractor/neteasemusic.py
b/youtube_dl/extractor/neteasemusic.py
index e73c77f89b47f5ac3e9b5b460cb173be3247c86a..bb336206968af1e21603952c6c9a42c1a5f819e1 100644
(file)
--- a/
youtube_dl/extractor/neteasemusic.py
+++ b/
youtube_dl/extractor/neteasemusic.py
@@
-4,13
+4,14
@@
from __future__ import unicode_literals
from hashlib import md5
from base64 import b64encode
from datetime import datetime
from hashlib import md5
from base64 import b64encode
from datetime import datetime
-import itertools
import re
from .common import InfoExtractor
from ..compat import (
compat_urllib_request,
compat_urllib_parse,
import re
from .common import InfoExtractor
from ..compat import (
compat_urllib_request,
compat_urllib_parse,
+ compat_str,
+ compat_itertools_count,
)
)
@@
-21,14
+22,14
@@
class NetEaseMusicBaseIE(InfoExtractor):
@classmethod
def _encrypt(cls, dfsid):
@classmethod
def _encrypt(cls, dfsid):
- salt_bytes = bytearray(cls._NETEASE_SALT
, 'utf-8'
)
- string_bytes = bytearray(
str(dfsid
))
+ salt_bytes = bytearray(cls._NETEASE_SALT
.encode('utf-8')
)
+ string_bytes = bytearray(
compat_str(dfsid).encode('ascii'
))
salt_len = len(salt_bytes)
for i in range(len(string_bytes)):
string_bytes[i] = string_bytes[i] ^ salt_bytes[i % salt_len]
m = md5()
salt_len = len(salt_bytes)
for i in range(len(string_bytes)):
string_bytes[i] = string_bytes[i] ^ salt_bytes[i % salt_len]
m = md5()
- m.update(
string_bytes
)
- result = b64encode(m.digest())
+ m.update(
bytes(string_bytes)
)
+ result = b64encode(m.digest())
.decode('ascii')
return result.replace('/', '_').replace('+', '-')
@classmethod
return result.replace('/', '_').replace('+', '-')
@classmethod
@@
-39,7
+40,7
@@
class NetEaseMusicBaseIE(InfoExtractor):
if not details:
continue
formats.append({
if not details:
continue
formats.append({
- 'url': 'http://m
1
.music.126.net/%s/%s.%s' %
+ 'url': 'http://m
5
.music.126.net/%s/%s.%s' %
(cls._encrypt(details['dfsId']), details['dfsId'],
details['extension']),
'ext': details.get('extension'),
(cls._encrypt(details['dfsId']), details['dfsId'],
details['extension']),
'ext': details.get('extension'),
@@
-62,6
+63,7
@@
class NetEaseMusicBaseIE(InfoExtractor):
class NetEaseMusicIE(NetEaseMusicBaseIE):
IE_NAME = 'netease:song'
class NetEaseMusicIE(NetEaseMusicBaseIE):
IE_NAME = 'netease:song'
+ IE_DESC = '网易云音乐'
_VALID_URL = r'https?://music\.163\.com/(#/)?song\?id=(?P<id>[0-9]+)'
_TESTS = [{
'url': 'http://music.163.com/#/song?id=32102397',
_VALID_URL = r'https?://music\.163\.com/(#/)?song\?id=(?P<id>[0-9]+)'
_TESTS = [{
'url': 'http://music.163.com/#/song?id=32102397',
@@
-169,6
+171,7
@@
class NetEaseMusicIE(NetEaseMusicBaseIE):
class NetEaseMusicAlbumIE(NetEaseMusicBaseIE):
IE_NAME = 'netease:album'
class NetEaseMusicAlbumIE(NetEaseMusicBaseIE):
IE_NAME = 'netease:album'
+ IE_DESC = '网易云音乐 - 专辑'
_VALID_URL = r'https?://music\.163\.com/(#/)?album\?id=(?P<id>[0-9]+)'
_TEST = {
'url': 'http://music.163.com/#/album?id=220780',
_VALID_URL = r'https?://music\.163\.com/(#/)?album\?id=(?P<id>[0-9]+)'
_TEST = {
'url': 'http://music.163.com/#/album?id=220780',
@@
-198,6
+201,7
@@
class NetEaseMusicAlbumIE(NetEaseMusicBaseIE):
class NetEaseMusicSingerIE(NetEaseMusicBaseIE):
IE_NAME = 'netease:singer'
class NetEaseMusicSingerIE(NetEaseMusicBaseIE):
IE_NAME = 'netease:singer'
+ IE_DESC = '网易云音乐 - 歌手'
_VALID_URL = r'https?://music\.163\.com/(#/)?artist\?id=(?P<id>[0-9]+)'
_TESTS = [{
'note': 'Singer has aliases.',
_VALID_URL = r'https?://music\.163\.com/(#/)?artist\?id=(?P<id>[0-9]+)'
_TESTS = [{
'note': 'Singer has aliases.',
@@
-228,7
+232,7
@@
class NetEaseMusicSingerIE(NetEaseMusicBaseIE):
if info['artist']['trans']:
name = '%s - %s' % (name, info['artist']['trans'])
if info['artist']['alias']:
if info['artist']['trans']:
name = '%s - %s' % (name, info['artist']['trans'])
if info['artist']['alias']:
- name = '%s - %s' % (name,
";"
.join(info['artist']['alias']))
+ name = '%s - %s' % (name,
';'
.join(info['artist']['alias']))
entries = [
self.url_result('http://music.163.com/#/song?id=%s' % song['id'],
entries = [
self.url_result('http://music.163.com/#/song?id=%s' % song['id'],
@@
-240,6
+244,7
@@
class NetEaseMusicSingerIE(NetEaseMusicBaseIE):
class NetEaseMusicListIE(NetEaseMusicBaseIE):
IE_NAME = 'netease:playlist'
class NetEaseMusicListIE(NetEaseMusicBaseIE):
IE_NAME = 'netease:playlist'
+ IE_DESC = '网易云音乐 - 歌单'
_VALID_URL = r'https?://music\.163\.com/(#/)?(playlist|discover/toplist)\?id=(?P<id>[0-9]+)'
_TESTS = [{
'url': 'http://music.163.com/#/playlist?id=79177352',
_VALID_URL = r'https?://music\.163\.com/(#/)?(playlist|discover/toplist)\?id=(?P<id>[0-9]+)'
_TESTS = [{
'url': 'http://music.163.com/#/playlist?id=79177352',
@@
-285,6
+290,7
@@
class NetEaseMusicListIE(NetEaseMusicBaseIE):
class NetEaseMusicMvIE(NetEaseMusicBaseIE):
IE_NAME = 'netease:mv'
class NetEaseMusicMvIE(NetEaseMusicBaseIE):
IE_NAME = 'netease:mv'
+ IE_DESC = '网易云音乐 - MV'
_VALID_URL = r'https?://music\.163\.com/(#/)?mv\?id=(?P<id>[0-9]+)'
_TEST = {
'url': 'http://music.163.com/#/mv?id=415350',
_VALID_URL = r'https?://music\.163\.com/(#/)?mv\?id=(?P<id>[0-9]+)'
_TEST = {
'url': 'http://music.163.com/#/mv?id=415350',
@@
-325,6
+331,7
@@
class NetEaseMusicMvIE(NetEaseMusicBaseIE):
class NetEaseMusicProgramIE(NetEaseMusicBaseIE):
IE_NAME = 'netease:program'
class NetEaseMusicProgramIE(NetEaseMusicBaseIE):
IE_NAME = 'netease:program'
+ IE_DESC = '网易云音乐 - 电台节目'
_VALID_URL = r'https?://music\.163\.com/(#/?)program\?id=(?P<id>[0-9]+)'
_TESTS = [{
'url': 'http://music.163.com/#/program?id=10109055',
_VALID_URL = r'https?://music\.163\.com/(#/?)program\?id=(?P<id>[0-9]+)'
_TESTS = [{
'url': 'http://music.163.com/#/program?id=10109055',
@@
-409,6
+416,7
@@
class NetEaseMusicProgramIE(NetEaseMusicBaseIE):
class NetEaseMusicDjRadioIE(NetEaseMusicBaseIE):
IE_NAME = 'netease:djradio'
class NetEaseMusicDjRadioIE(NetEaseMusicBaseIE):
IE_NAME = 'netease:djradio'
+ IE_DESC = '网易云音乐 - 电台'
_VALID_URL = r'https?://music\.163\.com/(#/)?djradio\?id=(?P<id>[0-9]+)'
_TEST = {
'url': 'http://music.163.com/#/djradio?id=42',
_VALID_URL = r'https?://music\.163\.com/(#/)?djradio\?id=(?P<id>[0-9]+)'
_TEST = {
'url': 'http://music.163.com/#/djradio?id=42',
@@
-427,7
+435,7
@@
class NetEaseMusicDjRadioIE(NetEaseMusicBaseIE):
name = None
desc = None
entries = []
name = None
desc = None
entries = []
- for offset in
itertools.
count(start=0, step=self._PAGE_SIZE):
+ for offset in
compat_itertools_
count(start=0, step=self._PAGE_SIZE):
info = self.query_api(
'dj/program/byradio?asc=false&limit=%d&radioId=%s&offset=%d'
% (self._PAGE_SIZE, dj_id, offset),
info = self.query_api(
'dj/program/byradio?asc=false&limit=%d&radioId=%s&offset=%d'
% (self._PAGE_SIZE, dj_id, offset),