X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=youtube_dl%2Fextractor%2Fhypem.py;h=9ca28d632eb2199b770159cfd3d6a60fd2db5db1;hb=HEAD;hp=cca3dd4985dd9ce1587852b34e83e0d8f9e27249;hpb=46b4070f3f8cbe2b66baadb2927eba03fbdd1129;p=youtube-dl diff --git a/youtube_dl/extractor/hypem.py b/youtube_dl/extractor/hypem.py index cca3dd498..9ca28d632 100644 --- a/youtube_dl/extractor/hypem.py +++ b/youtube_dl/extractor/hypem.py @@ -1,18 +1,11 @@ from __future__ import unicode_literals -import json -import time - from .common import InfoExtractor -from ..compat import compat_urllib_parse -from ..utils import ( - ExtractorError, - sanitized_Request, -) +from ..utils import int_or_none class HypemIE(InfoExtractor): - _VALID_URL = r'http://(?:www\.)?hypem\.com/track/(?P[^/]+)/' + _VALID_URL = r'https?://(?:www\.)?hypem\.com/track/(?P[0-9a-z]{5})' _TEST = { 'url': 'http://hypem.com/track/1v6ga/BODYWORK+-+TAME', 'md5': 'b9cc91b5af8995e9f0c1cee04c575828', @@ -21,45 +14,36 @@ class HypemIE(InfoExtractor): 'ext': 'mp3', 'title': 'Tame', 'uploader': 'BODYWORK', + 'timestamp': 1371810457, + 'upload_date': '20130621', } } def _real_extract(self, url): track_id = self._match_id(url) - data = {'ax': 1, 'ts': time.time()} - data_encoded = compat_urllib_parse.urlencode(data) - complete_url = url + "?" + data_encoded - request = sanitized_Request(complete_url) - response, urlh = self._download_webpage_handle( - request, track_id, 'Downloading webpage with the url') - cookie = urlh.headers.get('Set-Cookie', '') + response = self._download_webpage(url, track_id) - html_tracks = self._html_search_regex( - r'(?ms)', - response, 'tracks') - try: - track_list = json.loads(html_tracks) - track = track_list['tracks'][0] - except ValueError: - raise ExtractorError('Hypemachine contained invalid JSON.') + track = self._parse_json(self._html_search_regex( + r'(?s)(.+?)', + response, 'tracks'), track_id)['tracks'][0] - key = track['key'] track_id = track['id'] - artist = track['artist'] title = track['song'] - serve_url = "http://hypem.com/serve/source/%s/%s" % (track_id, key) - request = sanitized_Request( - serve_url, '', {'Content-Type': 'application/json'}) - request.add_header('cookie', cookie) - song_data = self._download_json(request, track_id, 'Downloading metadata') - final_url = song_data["url"] + 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': artist, + 'uploader': track.get('artist'), + 'duration': int_or_none(track.get('time')), + 'timestamp': int_or_none(track.get('ts')), + 'track': title, }