Added prototype for a youtube extractor
This commit is contained in:
		
							
								
								
									
										38
									
								
								src/extractors/youtube.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								src/extractors/youtube.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,38 @@ | ||||
| # -*- coding: utf-8 -*- | ||||
| import youtube_dl | ||||
| from googleapiclient.discovery import build | ||||
| from googleapiclient.errors import HttpError | ||||
| from .import baseFile | ||||
|  | ||||
| DEVELOPER_KEY = "AIzaSyCU_hvZJEjLlAGAnlscquKEkE8l0lVOfn0" | ||||
| YOUTUBE_API_SERVICE_NAME = "youtube" | ||||
| YOUTUBE_API_VERSION = "v3" | ||||
|  | ||||
| class interface(object): | ||||
|  | ||||
| 	def __init__(self): | ||||
| 		self.results = [] | ||||
|  | ||||
| 	def search(self, text, page=1): | ||||
| 		type = "video" | ||||
| 		max_results = 20 | ||||
| 		youtube = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION, developerKey=DEVELOPER_KEY) | ||||
| 		search_response = youtube.search().list(q=text, part="id,snippet", maxResults=max_results, type=type).execute() | ||||
| 		self.results = [] | ||||
| 		for search_result in search_response.get("items", []): | ||||
| 			if search_result["id"]["kind"] == "youtube#video": | ||||
| 				s = baseFile.song(self) | ||||
| 				s.title = search_result["snippet"]["title"] | ||||
| 				s.url = "https://www.youtube.com/watch?v="+search_result["id"]["videoId"] | ||||
| 				print(search_result.keys()) | ||||
| 				self.results.append(s) | ||||
|  | ||||
| 	def get_download_url(self, url): | ||||
| 		ydl = youtube_dl.YoutubeDL({'quiet': True, 'format': 'bestaudio/best', 'outtmpl': u'%(id)s%(ext)s'}) | ||||
| 		with ydl: | ||||
| 			result = ydl.extract_info(url, download=False) | ||||
| 			if 'entries' in result: | ||||
| 				video = result['entries'][0] | ||||
| 			else: | ||||
| 				video = result | ||||
| 		return video["url"] | ||||
		Reference in New Issue
	
	Block a user