mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-30 22:25:19 +00:00 
			
		
		
		
	[camdemy] Fix camdemy
This commit is contained in:
		| @@ -1,7 +1,6 @@ | |||||||
| # coding: utf-8 | # coding: utf-8 | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
|  |  | ||||||
| import datetime |  | ||||||
| import re | import re | ||||||
|  |  | ||||||
| from .common import InfoExtractor | from .common import InfoExtractor | ||||||
| @@ -10,8 +9,9 @@ from ..compat import ( | |||||||
|     compat_urlparse, |     compat_urlparse, | ||||||
| ) | ) | ||||||
| from ..utils import ( | from ..utils import ( | ||||||
|     parse_iso8601, |     clean_html, | ||||||
|     str_to_int, |     str_to_int, | ||||||
|  |     unified_strdate, | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -26,14 +26,13 @@ class CamdemyIE(InfoExtractor): | |||||||
|             'ext': 'mp4', |             'ext': 'mp4', | ||||||
|             'title': 'Ch1-1 Introduction, Signals (02-23-2012)', |             'title': 'Ch1-1 Introduction, Signals (02-23-2012)', | ||||||
|             'thumbnail': 're:^https?://.*\.jpg$', |             'thumbnail': 're:^https?://.*\.jpg$', | ||||||
|             'description': '', |  | ||||||
|             'creator': 'ss11spring', |             'creator': 'ss11spring', | ||||||
|             'upload_date': '20130114', |             'upload_date': '20130114', | ||||||
|             'timestamp': 1358154556, |  | ||||||
|             'view_count': int, |             'view_count': int, | ||||||
|         } |         } | ||||||
|     }, { |     }, { | ||||||
|         # With non-empty description |         # With non-empty description | ||||||
|  |         # webpage returns "No permission or not login" | ||||||
|         'url': 'http://www.camdemy.com/media/13885', |         'url': 'http://www.camdemy.com/media/13885', | ||||||
|         'md5': '4576a3bb2581f86c61044822adbd1249', |         'md5': '4576a3bb2581f86c61044822adbd1249', | ||||||
|         'info_dict': { |         'info_dict': { | ||||||
| @@ -41,33 +40,34 @@ class CamdemyIE(InfoExtractor): | |||||||
|             'ext': 'mp4', |             'ext': 'mp4', | ||||||
|             'title': 'EverCam + Camdemy QuickStart', |             'title': 'EverCam + Camdemy QuickStart', | ||||||
|             'thumbnail': 're:^https?://.*\.jpg$', |             'thumbnail': 're:^https?://.*\.jpg$', | ||||||
|             'description': 'md5:050b62f71ed62928f8a35f1a41e186c9', |             'description': 'md5:2a9f989c2b153a2342acee579c6e7db6', | ||||||
|             'creator': 'evercam', |             'creator': 'evercam', | ||||||
|             'upload_date': '20140620', |  | ||||||
|             'timestamp': 1403271569, |  | ||||||
|         } |         } | ||||||
|     }, { |     }, { | ||||||
|         # External source |         # External source (YouTube) | ||||||
|         'url': 'http://www.camdemy.com/media/14842', |         'url': 'http://www.camdemy.com/media/14842', | ||||||
|         'md5': '50e1c3c3aa233d3d7b7daa2fa10b1cf7', |  | ||||||
|         'info_dict': { |         'info_dict': { | ||||||
|             'id': '2vsYQzNIsJo', |             'id': '2vsYQzNIsJo', | ||||||
|             'ext': 'mp4', |             'ext': 'mp4', | ||||||
|  |             'title': 'Excel 2013 Tutorial - How to add Password Protection', | ||||||
|  |             'description': 'Excel 2013 Tutorial for Beginners - How to add Password Protection', | ||||||
|             'upload_date': '20130211', |             'upload_date': '20130211', | ||||||
|             'uploader': 'Hun Kim', |             'uploader': 'Hun Kim', | ||||||
|             'description': 'Excel 2013 Tutorial for Beginners - How to add Password Protection', |  | ||||||
|             'uploader_id': 'hunkimtutorials', |             'uploader_id': 'hunkimtutorials', | ||||||
|             'title': 'Excel 2013 Tutorial - How to add Password Protection', |         }, | ||||||
|         } |         'params': { | ||||||
|  |             'skip_download': True, | ||||||
|  |         }, | ||||||
|     }] |     }] | ||||||
|  |  | ||||||
|     def _real_extract(self, url): |     def _real_extract(self, url): | ||||||
|         video_id = self._match_id(url) |         video_id = self._match_id(url) | ||||||
|         page = self._download_webpage(url, video_id) |  | ||||||
|  |         webpage = self._download_webpage(url, video_id) | ||||||
|  |  | ||||||
|         src_from = self._html_search_regex( |         src_from = self._html_search_regex( | ||||||
|             r"<div class='srcFrom'>Source: <a title='([^']+)'", page, |             r"class=['\"]srcFrom['\"][^>]*>Sources?(?:\s+from)?\s*:\s*<a[^>]+(?:href|title)=(['\"])(?P<url>(?:(?!\1).)+)\1", | ||||||
|             'external source', default=None) |             webpage, 'external source', default=None, group='url') | ||||||
|         if src_from: |         if src_from: | ||||||
|             return self.url_result(src_from) |             return self.url_result(src_from) | ||||||
|  |  | ||||||
| @@ -78,27 +78,31 @@ class CamdemyIE(InfoExtractor): | |||||||
|         video_folder = compat_urlparse.urljoin(thumb_url, 'video/') |         video_folder = compat_urlparse.urljoin(thumb_url, 'video/') | ||||||
|         file_list_doc = self._download_xml( |         file_list_doc = self._download_xml( | ||||||
|             compat_urlparse.urljoin(video_folder, 'fileList.xml'), |             compat_urlparse.urljoin(video_folder, 'fileList.xml'), | ||||||
|             video_id, 'Filelist XML') |             video_id, 'Downloading filelist XML') | ||||||
|         file_name = file_list_doc.find('./video/item/fileName').text |         file_name = file_list_doc.find('./video/item/fileName').text | ||||||
|         video_url = compat_urlparse.urljoin(video_folder, file_name) |         video_url = compat_urlparse.urljoin(video_folder, file_name) | ||||||
|  |  | ||||||
|         timestamp = parse_iso8601(self._html_search_regex( |         # Some URLs return "No permission or not login" in a webpage despite being | ||||||
|             r"<div class='title'>Posted\s*:</div>\s*<div class='value'>([^<>]+)<", |         # freely available via oembed JSON URL (e.g. http://www.camdemy.com/media/13885) | ||||||
|             page, 'creation time', fatal=False), |         upload_date = unified_strdate(self._search_regex( | ||||||
|             delimiter=' ', timezone=datetime.timedelta(hours=8)) |             r'>published on ([^<]+)<', webpage, | ||||||
|         view_count = str_to_int(self._html_search_regex( |             'upload date', default=None)) | ||||||
|             r"<div class='title'>Views\s*:</div>\s*<div class='value'>([^<>]+)<", |         view_count = str_to_int(self._search_regex( | ||||||
|             page, 'view count', fatal=False)) |             r'role=["\']viewCnt["\'][^>]*>([\d,.]+) views', | ||||||
|  |             webpage, 'view count', default=None)) | ||||||
|  |         description = self._html_search_meta( | ||||||
|  |             'description', webpage, default=None) or clean_html( | ||||||
|  |             oembed_obj.get('description')) | ||||||
|  |  | ||||||
|         return { |         return { | ||||||
|             'id': video_id, |             'id': video_id, | ||||||
|             'url': video_url, |             'url': video_url, | ||||||
|             'title': oembed_obj['title'], |             'title': oembed_obj['title'], | ||||||
|             'thumbnail': thumb_url, |             'thumbnail': thumb_url, | ||||||
|             'description': self._html_search_meta('description', page), |             'description': description, | ||||||
|             'creator': oembed_obj['author_name'], |             'creator': oembed_obj['author_name'], | ||||||
|             'duration': oembed_obj['duration'], |             'duration': oembed_obj['duration'], | ||||||
|             'timestamp': timestamp, |             'upload_date': upload_date, | ||||||
|             'view_count': view_count, |             'view_count': view_count, | ||||||
|         } |         } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Sergey M․
					Sergey M․