mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-30 22:25:19 +00:00 
			
		
		
		
	[hypem] Move into own file
This commit is contained in:
		| @@ -34,6 +34,7 @@ from .extractor.gametrailers import GametrailersIE | ||||
| from .extractor.generic import GenericIE | ||||
| from .extractor.googleplus import GooglePlusIE | ||||
| from .extractor.googlesearch import GoogleSearchIE | ||||
| from .extractor.hypem import HypemIE | ||||
| from .extractor.ina import InaIE | ||||
| from .extractor.infoq import InfoQIE | ||||
| from .extractor.justintv import JustinTVIE | ||||
| @@ -280,55 +281,7 @@ class XHamsterIE(InfoExtractor): | ||||
|             'thumbnail': video_thumbnail | ||||
|         }] | ||||
|  | ||||
| class HypemIE(InfoExtractor): | ||||
|     """Information Extractor for hypem""" | ||||
|     _VALID_URL = r'(?:http://)?(?:www\.)?hypem\.com/track/([^/]+)/([^/]+)' | ||||
|  | ||||
|     def _real_extract(self, url): | ||||
|         mobj = re.match(self._VALID_URL, url) | ||||
|         if mobj is None: | ||||
|             raise ExtractorError(u'Invalid URL: %s' % url) | ||||
|         track_id = mobj.group(1) | ||||
|  | ||||
|         data = { 'ax': 1, 'ts': time.time() } | ||||
|         data_encoded = compat_urllib_parse.urlencode(data) | ||||
|         complete_url = url + "?" + data_encoded | ||||
|         request = compat_urllib_request.Request(complete_url) | ||||
|         response, urlh = self._download_webpage_handle(request, track_id, u'Downloading webpage with the url') | ||||
|         cookie = urlh.headers.get('Set-Cookie', '') | ||||
|  | ||||
|         self.report_extraction(track_id) | ||||
|  | ||||
|         html_tracks = self._html_search_regex(r'<script type="application/json" id="displayList-data">(.*?)</script>', | ||||
|             response, u'tracks', flags=re.MULTILINE|re.DOTALL).strip() | ||||
|         try: | ||||
|             track_list = json.loads(html_tracks) | ||||
|             track = track_list[u'tracks'][0] | ||||
|         except ValueError: | ||||
|             raise ExtractorError(u'Hypemachine contained invalid JSON.') | ||||
|  | ||||
|         key = track[u"key"] | ||||
|         track_id = track[u"id"] | ||||
|         artist = track[u"artist"] | ||||
|         title = track[u"song"] | ||||
|  | ||||
|         serve_url = "http://hypem.com/serve/source/%s/%s" % (compat_str(track_id), compat_str(key)) | ||||
|         request = compat_urllib_request.Request(serve_url, "" , {'Content-Type': 'application/json'}) | ||||
|         request.add_header('cookie', cookie) | ||||
|         song_data_json = self._download_webpage(request, track_id, u'Downloading metadata') | ||||
|         try: | ||||
|             song_data = json.loads(song_data_json) | ||||
|         except ValueError: | ||||
|             raise ExtractorError(u'Hypemachine contained invalid JSON.') | ||||
|         final_url = song_data[u"url"] | ||||
|  | ||||
|         return [{ | ||||
|             'id':       track_id, | ||||
|             'url':      final_url, | ||||
|             'ext':      "mp3", | ||||
|             'title':    title, | ||||
|             'artist':   artist, | ||||
|         }] | ||||
|  | ||||
|  | ||||
|  | ||||
|   | ||||
							
								
								
									
										63
									
								
								youtube_dl/extractor/hypem.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								youtube_dl/extractor/hypem.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,63 @@ | ||||
| import json | ||||
| import re | ||||
| import time | ||||
|  | ||||
| from .common import InfoExtractor | ||||
| from ..utils import ( | ||||
|     compat_str, | ||||
|     compat_urllib_parse, | ||||
|     compat_urllib_request, | ||||
|  | ||||
|     ExtractorError, | ||||
| ) | ||||
|  | ||||
|  | ||||
| class HypemIE(InfoExtractor): | ||||
|     """Information Extractor for hypem""" | ||||
|     _VALID_URL = r'(?:http://)?(?:www\.)?hypem\.com/track/([^/]+)/([^/]+)' | ||||
|  | ||||
|     def _real_extract(self, url): | ||||
|         mobj = re.match(self._VALID_URL, url) | ||||
|         if mobj is None: | ||||
|             raise ExtractorError(u'Invalid URL: %s' % url) | ||||
|         track_id = mobj.group(1) | ||||
|  | ||||
|         data = { 'ax': 1, 'ts': time.time() } | ||||
|         data_encoded = compat_urllib_parse.urlencode(data) | ||||
|         complete_url = url + "?" + data_encoded | ||||
|         request = compat_urllib_request.Request(complete_url) | ||||
|         response, urlh = self._download_webpage_handle(request, track_id, u'Downloading webpage with the url') | ||||
|         cookie = urlh.headers.get('Set-Cookie', '') | ||||
|  | ||||
|         self.report_extraction(track_id) | ||||
|  | ||||
|         html_tracks = self._html_search_regex(r'<script type="application/json" id="displayList-data">(.*?)</script>', | ||||
|             response, u'tracks', flags=re.MULTILINE|re.DOTALL).strip() | ||||
|         try: | ||||
|             track_list = json.loads(html_tracks) | ||||
|             track = track_list[u'tracks'][0] | ||||
|         except ValueError: | ||||
|             raise ExtractorError(u'Hypemachine contained invalid JSON.') | ||||
|  | ||||
|         key = track[u"key"] | ||||
|         track_id = track[u"id"] | ||||
|         artist = track[u"artist"] | ||||
|         title = track[u"song"] | ||||
|  | ||||
|         serve_url = "http://hypem.com/serve/source/%s/%s" % (compat_str(track_id), compat_str(key)) | ||||
|         request = compat_urllib_request.Request(serve_url, "" , {'Content-Type': 'application/json'}) | ||||
|         request.add_header('cookie', cookie) | ||||
|         song_data_json = self._download_webpage(request, track_id, u'Downloading metadata') | ||||
|         try: | ||||
|             song_data = json.loads(song_data_json) | ||||
|         except ValueError: | ||||
|             raise ExtractorError(u'Hypemachine contained invalid JSON.') | ||||
|         final_url = song_data[u"url"] | ||||
|  | ||||
|         return [{ | ||||
|             'id':       track_id, | ||||
|             'url':      final_url, | ||||
|             'ext':      "mp3", | ||||
|             'title':    title, | ||||
|             'artist':   artist, | ||||
|         }] | ||||
		Reference in New Issue
	
	Block a user
	 Philipp Hagemeister
					Philipp Hagemeister