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.generic import GenericIE | ||||||
| from .extractor.googleplus import GooglePlusIE | from .extractor.googleplus import GooglePlusIE | ||||||
| from .extractor.googlesearch import GoogleSearchIE | from .extractor.googlesearch import GoogleSearchIE | ||||||
|  | from .extractor.hypem import HypemIE | ||||||
| from .extractor.ina import InaIE | from .extractor.ina import InaIE | ||||||
| from .extractor.infoq import InfoQIE | from .extractor.infoq import InfoQIE | ||||||
| from .extractor.justintv import JustinTVIE | from .extractor.justintv import JustinTVIE | ||||||
| @@ -280,55 +281,7 @@ class XHamsterIE(InfoExtractor): | |||||||
|             'thumbnail': video_thumbnail |             '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