mirror of
				https://github.com/ytdl-org/youtube-dl
				synced 2025-10-26 15:22:52 +00:00 
			
		
		
		
	[core] Re-factor with _fill_common_fields() as used in yt-dlp
				
					
				
			This commit is contained in:
		
							parent
							
								
									b4ff08bd2d
								
							
						
					
					
						commit
						50f6c5668a
					
				| @ -1597,6 +1597,28 @@ class YoutubeDL(object): | ||||
|         self.cookiejar.add_cookie_header(pr) | ||||
|         return pr.get_header('Cookie') | ||||
| 
 | ||||
|     def _fill_common_fields(self, info_dict, final=True): | ||||
| 
 | ||||
|         for ts_key, date_key in ( | ||||
|                 ('timestamp', 'upload_date'), | ||||
|                 ('release_timestamp', 'release_date'), | ||||
|         ): | ||||
|             if info_dict.get(date_key) is None and info_dict.get(ts_key) is not None: | ||||
|                 # Working around out-of-range timestamp values (e.g. negative ones on Windows, | ||||
|                 # see http://bugs.python.org/issue1646728) | ||||
|                 try: | ||||
|                     upload_date = datetime.datetime.utcfromtimestamp(info_dict[ts_key]) | ||||
|                     info_dict[date_key] = compat_str(upload_date.strftime('%Y%m%d')) | ||||
|                 except (ValueError, OverflowError, OSError): | ||||
|                     pass | ||||
| 
 | ||||
|         # Auto generate title fields corresponding to the *_number fields when missing | ||||
|         # in order to always have clean titles. This is very common for TV series. | ||||
|         if final: | ||||
|             for field in ('chapter', 'season', 'episode'): | ||||
|                 if info_dict.get('%s_number' % field) is not None and not info_dict.get(field): | ||||
|                     info_dict[field] = '%s %d' % (field.capitalize(), info_dict['%s_number' % field]) | ||||
| 
 | ||||
|     def process_video_result(self, info_dict, download=True): | ||||
|         assert info_dict.get('_type', 'video') == 'video' | ||||
| 
 | ||||
| @ -1664,24 +1686,7 @@ class YoutubeDL(object): | ||||
|         if 'display_id' not in info_dict and 'id' in info_dict: | ||||
|             info_dict['display_id'] = info_dict['id'] | ||||
| 
 | ||||
|         for ts_key, date_key in ( | ||||
|                 ('timestamp', 'upload_date'), | ||||
|                 ('release_timestamp', 'release_date'), | ||||
|         ): | ||||
|             if info_dict.get(date_key) is None and info_dict.get(ts_key) is not None: | ||||
|                 # Working around out-of-range timestamp values (e.g. negative ones on Windows, | ||||
|                 # see http://bugs.python.org/issue1646728) | ||||
|                 try: | ||||
|                     upload_date = datetime.datetime.utcfromtimestamp(info_dict[ts_key]) | ||||
|                     info_dict[date_key] = compat_str(upload_date.strftime('%Y%m%d')) | ||||
|                 except (ValueError, OverflowError, OSError): | ||||
|                     pass | ||||
| 
 | ||||
|         # Auto generate title fields corresponding to the *_number fields when missing | ||||
|         # in order to always have clean titles. This is very common for TV series. | ||||
|         for field in ('chapter', 'season', 'episode'): | ||||
|             if info_dict.get('%s_number' % field) is not None and not info_dict.get(field): | ||||
|                 info_dict[field] = '%s %d' % (field.capitalize(), info_dict['%s_number' % field]) | ||||
|         self._fill_common_fields(info_dict) | ||||
| 
 | ||||
|         for cc_kind in ('subtitles', 'automatic_captions'): | ||||
|             cc = info_dict.get(cc_kind) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 dirkf
						dirkf