aboutsummaryrefslogtreecommitdiff
path: root/youtube_dl/extractor/xiami.py
diff options
context:
space:
mode:
Diffstat (limited to 'youtube_dl/extractor/xiami.py')
-rw-r--r--youtube_dl/extractor/xiami.py25
1 files changed, 14 insertions, 11 deletions
diff --git a/youtube_dl/extractor/xiami.py b/youtube_dl/extractor/xiami.py
index d017e03de..769aab331 100644
--- a/youtube_dl/extractor/xiami.py
+++ b/youtube_dl/extractor/xiami.py
@@ -7,10 +7,10 @@ from ..utils import int_or_none
class XiamiBaseIE(InfoExtractor):
- _API_BASE_URL = 'http://www.xiami.com/song/playlist/cat/json/id'
+ _API_BASE_URL = 'https://emumo.xiami.com/song/playlist/cat/json/id'
- def _download_webpage(self, *args, **kwargs):
- webpage = super(XiamiBaseIE, self)._download_webpage(*args, **kwargs)
+ def _download_webpage_handle(self, *args, **kwargs):
+ webpage = super(XiamiBaseIE, self)._download_webpage_handle(*args, **kwargs)
if '>Xiami is currently not available in your country.<' in webpage:
self.raise_geo_restricted('Xiami is currently not available in your country')
return webpage
@@ -40,9 +40,12 @@ class XiamiBaseIE(InfoExtractor):
'subtitles': subtitles,
}
- def _extract_tracks(self, item_id, typ=None):
+ def _extract_tracks(self, item_id, referer, typ=None):
playlist = self._download_json(
- '%s/%s%s' % (self._API_BASE_URL, item_id, '/type/%s' % typ if typ else ''), item_id)
+ '%s/%s%s' % (self._API_BASE_URL, item_id, '/type/%s' % typ if typ else ''),
+ item_id, headers={
+ 'Referer': referer,
+ })
return [
self._extract_track(track, item_id)
for track in playlist['data']['trackList']]
@@ -51,17 +54,17 @@ class XiamiBaseIE(InfoExtractor):
def _decrypt(origin):
n = int(origin[0])
origin = origin[1:]
- short_lenth = len(origin) // n
- long_num = len(origin) - short_lenth * n
+ short_length = len(origin) // n
+ long_num = len(origin) - short_length * n
l = tuple()
for i in range(0, n):
- length = short_lenth
+ length = short_length
if i < long_num:
length += 1
l += (origin[0:length], )
origin = origin[length:]
ans = ''
- for i in range(0, short_lenth + 1):
+ for i in range(0, short_length + 1):
for j in range(0, n):
if len(l[j]) > i:
ans += l[j][i]
@@ -135,13 +138,13 @@ class XiamiSongIE(XiamiBaseIE):
}]
def _real_extract(self, url):
- return self._extract_tracks(self._match_id(url))[0]
+ return self._extract_tracks(self._match_id(url), url)[0]
class XiamiPlaylistBaseIE(XiamiBaseIE):
def _real_extract(self, url):
item_id = self._match_id(url)
- return self.playlist_result(self._extract_tracks(item_id, self._TYPE), item_id)
+ return self.playlist_result(self._extract_tracks(item_id, url, self._TYPE), item_id)
class XiamiAlbumIE(XiamiPlaylistBaseIE):