You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.5 KiB
49 lines
1.5 KiB
from __future__ import unicode_literals |
|
|
|
from .common import InfoExtractor |
|
from ..utils import int_or_none |
|
|
|
|
|
class HypemIE(InfoExtractor): |
|
_VALID_URL = r'https?://(?:www\.)?hypem\.com/track/(?P<id>[0-9a-z]{5})' |
|
_TEST = { |
|
'url': 'http://hypem.com/track/1v6ga/BODYWORK+-+TAME', |
|
'md5': 'b9cc91b5af8995e9f0c1cee04c575828', |
|
'info_dict': { |
|
'id': '1v6ga', |
|
'ext': 'mp3', |
|
'title': 'Tame', |
|
'uploader': 'BODYWORK', |
|
'timestamp': 1371810457, |
|
'upload_date': '20130621', |
|
} |
|
} |
|
|
|
def _real_extract(self, url): |
|
track_id = self._match_id(url) |
|
|
|
response = self._download_webpage(url, track_id) |
|
|
|
track = self._parse_json(self._html_search_regex( |
|
r'(?s)<script\s+type="application/json"\s+id="displayList-data">(.+?)</script>', |
|
response, 'tracks'), track_id)['tracks'][0] |
|
|
|
track_id = track['id'] |
|
title = track['song'] |
|
|
|
final_url = self._download_json( |
|
'http://hypem.com/serve/source/%s/%s' % (track_id, track['key']), |
|
track_id, 'Downloading metadata', headers={ |
|
'Content-Type': 'application/json' |
|
})['url'] |
|
|
|
return { |
|
'id': track_id, |
|
'url': final_url, |
|
'ext': 'mp3', |
|
'title': title, |
|
'uploader': track.get('artist'), |
|
'duration': int_or_none(track.get('time')), |
|
'timestamp': int_or_none(track.get('ts')), |
|
'track': title, |
|
}
|
|
|