mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 06:35:12 +00:00 
			
		
		
		
	Completely change project name to yt-dlp (#85)
* All modules and binary names are changed * All documentation references changed * yt-dlp no longer loads youtube-dlc config files * All URLs changed to point to organization account Co-authored-by: Pccode66 Co-authored-by: pukkandan
This commit is contained in:
		
							
								
								
									
										119
									
								
								yt_dlp/extractor/sapo.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										119
									
								
								yt_dlp/extractor/sapo.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,119 @@ | ||||
| # coding: utf-8 | ||||
| from __future__ import unicode_literals | ||||
|  | ||||
| import re | ||||
|  | ||||
| from .common import InfoExtractor | ||||
| from ..utils import ( | ||||
|     parse_duration, | ||||
|     unified_strdate, | ||||
| ) | ||||
|  | ||||
|  | ||||
| class SapoIE(InfoExtractor): | ||||
|     IE_DESC = 'SAPO Vídeos' | ||||
|     _VALID_URL = r'https?://(?:(?:v2|www)\.)?videos\.sapo\.(?:pt|cv|ao|mz|tl)/(?P<id>[\da-zA-Z]{20})' | ||||
|  | ||||
|     _TESTS = [ | ||||
|         { | ||||
|             'url': 'http://videos.sapo.pt/UBz95kOtiWYUMTA5Ghfi', | ||||
|             'md5': '79ee523f6ecb9233ac25075dee0eda83', | ||||
|             'note': 'SD video', | ||||
|             'info_dict': { | ||||
|                 'id': 'UBz95kOtiWYUMTA5Ghfi', | ||||
|                 'ext': 'mp4', | ||||
|                 'title': 'Benfica - Marcas na Hitória', | ||||
|                 'description': 'md5:c9082000a128c3fd57bf0299e1367f22', | ||||
|                 'duration': 264, | ||||
|                 'uploader': 'tiago_1988', | ||||
|                 'upload_date': '20080229', | ||||
|                 'categories': ['benfica', 'cabral', 'desporto', 'futebol', 'geovanni', 'hooijdonk', 'joao', 'karel', 'lisboa', 'miccoli'], | ||||
|             }, | ||||
|         }, | ||||
|         { | ||||
|             'url': 'http://videos.sapo.pt/IyusNAZ791ZdoCY5H5IF', | ||||
|             'md5': '90a2f283cfb49193fe06e861613a72aa', | ||||
|             'note': 'HD video', | ||||
|             'info_dict': { | ||||
|                 'id': 'IyusNAZ791ZdoCY5H5IF', | ||||
|                 'ext': 'mp4', | ||||
|                 'title': 'Codebits VII - Report', | ||||
|                 'description': 'md5:6448d6fd81ce86feac05321f354dbdc8', | ||||
|                 'duration': 144, | ||||
|                 'uploader': 'codebits', | ||||
|                 'upload_date': '20140427', | ||||
|                 'categories': ['codebits', 'codebits2014'], | ||||
|             }, | ||||
|         }, | ||||
|         { | ||||
|             'url': 'http://v2.videos.sapo.pt/yLqjzPtbTimsn2wWBKHz', | ||||
|             'md5': 'e5aa7cc0bdc6db9b33df1a48e49a15ac', | ||||
|             'note': 'v2 video', | ||||
|             'info_dict': { | ||||
|                 'id': 'yLqjzPtbTimsn2wWBKHz', | ||||
|                 'ext': 'mp4', | ||||
|                 'title': 'Hipnose Condicionativa 4', | ||||
|                 'description': 'md5:ef0481abf8fb4ae6f525088a6dadbc40', | ||||
|                 'duration': 692, | ||||
|                 'uploader': 'sapozen', | ||||
|                 'upload_date': '20090609', | ||||
|                 'categories': ['condicionativa', 'heloisa', 'hipnose', 'miranda', 'sapo', 'zen'], | ||||
|             }, | ||||
|         }, | ||||
|     ] | ||||
|  | ||||
|     def _real_extract(self, url): | ||||
|         mobj = re.match(self._VALID_URL, url) | ||||
|         video_id = mobj.group('id') | ||||
|  | ||||
|         item = self._download_xml( | ||||
|             'http://rd3.videos.sapo.pt/%s/rss2' % video_id, video_id).find('./channel/item') | ||||
|  | ||||
|         title = item.find('./title').text | ||||
|         description = item.find('./{http://videos.sapo.pt/mrss/}synopse').text | ||||
|         thumbnail = item.find('./{http://search.yahoo.com/mrss/}content').get('url') | ||||
|         duration = parse_duration(item.find('./{http://videos.sapo.pt/mrss/}time').text) | ||||
|         uploader = item.find('./{http://videos.sapo.pt/mrss/}author').text | ||||
|         upload_date = unified_strdate(item.find('./pubDate').text) | ||||
|         view_count = int(item.find('./{http://videos.sapo.pt/mrss/}views').text) | ||||
|         comment_count = int(item.find('./{http://videos.sapo.pt/mrss/}comment_count').text) | ||||
|         tags = item.find('./{http://videos.sapo.pt/mrss/}tags').text | ||||
|         categories = tags.split() if tags else [] | ||||
|         age_limit = 18 if item.find('./{http://videos.sapo.pt/mrss/}m18').text == 'true' else 0 | ||||
|  | ||||
|         video_url = item.find('./{http://videos.sapo.pt/mrss/}videoFile').text | ||||
|         video_size = item.find('./{http://videos.sapo.pt/mrss/}videoSize').text.split('x') | ||||
|  | ||||
|         formats = [{ | ||||
|             'url': video_url, | ||||
|             'ext': 'mp4', | ||||
|             'format_id': 'sd', | ||||
|             'width': int(video_size[0]), | ||||
|             'height': int(video_size[1]), | ||||
|         }] | ||||
|  | ||||
|         if item.find('./{http://videos.sapo.pt/mrss/}HD').text == 'true': | ||||
|             formats.append({ | ||||
|                 'url': re.sub(r'/mov/1$', '/mov/39', video_url), | ||||
|                 'ext': 'mp4', | ||||
|                 'format_id': 'hd', | ||||
|                 'width': 1280, | ||||
|                 'height': 720, | ||||
|             }) | ||||
|  | ||||
|         self._sort_formats(formats) | ||||
|  | ||||
|         return { | ||||
|             'id': video_id, | ||||
|             'title': title, | ||||
|             'description': description, | ||||
|             'thumbnail': thumbnail, | ||||
|             'duration': duration, | ||||
|             'uploader': uploader, | ||||
|             'upload_date': upload_date, | ||||
|             'view_count': view_count, | ||||
|             'comment_count': comment_count, | ||||
|             'categories': categories, | ||||
|             'age_limit': age_limit, | ||||
|             'formats': formats, | ||||
|         } | ||||
		Reference in New Issue
	
	Block a user
	 Pccode66
					Pccode66