[gfycat] Add new extractor
This commit is contained in:
		
							parent
							
								
									8f02ad4f12
								
							
						
					
					
						commit
						afe4a8c769
					
				| @ -185,6 +185,7 @@ from .gametrailers import GametrailersIE | |||||||
| from .gazeta import GazetaIE | from .gazeta import GazetaIE | ||||||
| from .gdcvault import GDCVaultIE | from .gdcvault import GDCVaultIE | ||||||
| from .generic import GenericIE | from .generic import GenericIE | ||||||
|  | from .gfycat import GfycatIE | ||||||
| from .giantbomb import GiantBombIE | from .giantbomb import GiantBombIE | ||||||
| from .giga import GigaIE | from .giga import GigaIE | ||||||
| from .glide import GlideIE | from .glide import GlideIE | ||||||
|  | |||||||
							
								
								
									
										107
									
								
								youtube_dl/extractor/gfycat.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										107
									
								
								youtube_dl/extractor/gfycat.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,107 @@ | |||||||
|  | # coding: utf-8 | ||||||
|  | 
 | ||||||
|  | from __future__ import unicode_literals | ||||||
|  | 
 | ||||||
|  | import datetime | ||||||
|  | 
 | ||||||
|  | from .common import InfoExtractor | ||||||
|  | 
 | ||||||
|  | class GfycatIE(InfoExtractor): | ||||||
|  |     _VALID_URL = r'https?://(?:www\.)?gfycat\.com/(?P<id>[^/?#]+)' | ||||||
|  |     _TESTS = [{ | ||||||
|  |         'url': 'http://gfycat.com/DeadlyDecisiveGermanpinscher', | ||||||
|  |         'info_dict': { | ||||||
|  |             'id':          'DeadlyDecisiveGermanpinscher', | ||||||
|  |             'title':       'Ghost in the Shell', | ||||||
|  |             'ext':         'mp4', | ||||||
|  |             'upload_date': '20140913' | ||||||
|  |         } | ||||||
|  |     },{ | ||||||
|  |         'url': 'http://gfycat.com/pleasinghilariouskusimanse', | ||||||
|  |         'info_dict': { | ||||||
|  |             'id':          'pleasinghilariouskusimanse', | ||||||
|  |             'title':       'PleasingHilariousKusimanse', | ||||||
|  |             'ext':         'webm', | ||||||
|  |             'upload_date': '20150412' | ||||||
|  |         } | ||||||
|  |     },{ | ||||||
|  |         'url': 'http://gfycat.com/requiredunkemptbuzzard', | ||||||
|  |         'info_dict': { | ||||||
|  |             'id':          'requiredunkemptbuzzard', | ||||||
|  |             'title':       'Headshot!', | ||||||
|  |             'ext':         'gif', | ||||||
|  |             'upload_date': '20150130' | ||||||
|  |         } | ||||||
|  |     }] | ||||||
|  | 
 | ||||||
|  |     def _real_extract(self, url): | ||||||
|  |         video_id = self._match_id(url) | ||||||
|  |         json     = self._download_json("http://gfycat.com/cajax/get/" + video_id, video_id, 'Downloading video info')['gfyItem'] | ||||||
|  |          | ||||||
|  |         # Title | ||||||
|  |         # Use user title first, else fallback to url formated name | ||||||
|  |         if json['title']: | ||||||
|  |             video_title = json['title'] | ||||||
|  |         else: | ||||||
|  |             video_title = json['gfyName'] | ||||||
|  |          | ||||||
|  |         # Formats | ||||||
|  |         # Pref: mp4, webm, gif | ||||||
|  |         formats = [{ | ||||||
|  |             'format_id':  'mp4', | ||||||
|  |             'ext':        'mp4', | ||||||
|  |             'url':        json['mp4Url'], | ||||||
|  |             'width':      json['width'], | ||||||
|  |             'height':     json['height'], | ||||||
|  |             'fps':        json['frameRate'], | ||||||
|  |             'filesize':   json['mp4Size'], | ||||||
|  |             'preference': '-1' | ||||||
|  |         }, { | ||||||
|  |             'format_id': 'webm', | ||||||
|  |             'ext':       'webm', | ||||||
|  |             'url':        json['webmUrl'], | ||||||
|  |             'width':      json['width'], | ||||||
|  |             'height':     json['height'], | ||||||
|  |             'fps':        json['frameRate'], | ||||||
|  |             'filesize':   json['webmSize'], | ||||||
|  |             'preference': 0 | ||||||
|  |         }, { | ||||||
|  |             'format_id':  'gif', | ||||||
|  |             'ext':        'gif', | ||||||
|  |             'url':        json['gifUrl'], | ||||||
|  |             'width':      json['width'], | ||||||
|  |             'height':     json['height'], | ||||||
|  |             'fps':        json['frameRate'], | ||||||
|  |             'filesize':   json['gifSize'], | ||||||
|  |             'preference': 1 | ||||||
|  |         }] | ||||||
|  |          | ||||||
|  |         self._sort_formats(formats) | ||||||
|  |          | ||||||
|  |         # Date | ||||||
|  |         date = datetime.datetime.fromtimestamp( | ||||||
|  |             int(json['createDate']) | ||||||
|  |         ).strftime('%Y%m%d') | ||||||
|  |          | ||||||
|  |         # Length | ||||||
|  |         duration = json['numFrames'] / json['frameRate'] | ||||||
|  |          | ||||||
|  |         # Age limit | ||||||
|  |         # 1 = nsfw / 0 = sfw | ||||||
|  |         if json['nsfw'] == 1: | ||||||
|  |             age_limit = 18 | ||||||
|  |         else: | ||||||
|  |             age_limit = 0 | ||||||
|  |          | ||||||
|  |         return { | ||||||
|  |             'id':          video_id, | ||||||
|  |             'title':       video_title, | ||||||
|  |             'formats':     formats, | ||||||
|  |             'creator':     json['userName'], | ||||||
|  |             'description': json['description'], | ||||||
|  |             'upload_date': date, | ||||||
|  |             'categories':  json['tags'], | ||||||
|  |             'age_limit':   age_limit, | ||||||
|  |             'duration':    duration, | ||||||
|  |             'view_count':  json['views'] | ||||||
|  |         } | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user