[viki] Rewrite dict selection codes
This commit is contained in:
		
							parent
							
								
									41597d9bed
								
							
						
					
					
						commit
						b73b14f72c
					
				| @ -88,6 +88,14 @@ class VikiBaseIE(InfoExtractor): | |||||||
|         if not self._token: |         if not self._token: | ||||||
|             self.report_warning('Unable to get session token, login has probably failed') |             self.report_warning('Unable to get session token, login has probably failed') | ||||||
| 
 | 
 | ||||||
|  |     @staticmethod | ||||||
|  |     def dict_selection(dict_obj, preferred_key): | ||||||
|  |         if preferred_key in dict_obj: | ||||||
|  |             return dict_obj.get(preferred_key) | ||||||
|  | 
 | ||||||
|  |         filtered_dict = list(filter(None, [dict_obj.get(k) for k in dict_obj.keys()])) | ||||||
|  |         return filtered_dict[0] if filtered_dict else None | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| class VikiIE(VikiBaseIE): | class VikiIE(VikiBaseIE): | ||||||
|     IE_NAME = 'viki' |     IE_NAME = 'viki' | ||||||
| @ -194,23 +202,14 @@ class VikiIE(VikiBaseIE): | |||||||
|         video = self._call_api( |         video = self._call_api( | ||||||
|             'videos/%s.json' % video_id, video_id, 'Downloading video JSON') |             'videos/%s.json' % video_id, video_id, 'Downloading video JSON') | ||||||
| 
 | 
 | ||||||
|         title = None |         title = self.dict_selection(video.get('titles', {}), 'en') | ||||||
|         titles = video.get('titles') |  | ||||||
|         if titles: |  | ||||||
|             title = titles.get('en') or titles[titles.keys()[0]] |  | ||||||
|         if not title: |         if not title: | ||||||
|             title = 'Episode %d' % video.get('number') if video.get('type') == 'episode' else video.get('id') or video_id |             title = 'Episode %d' % video.get('number') if video.get('type') == 'episode' else video.get('id') or video_id | ||||||
|             container_titles = video.get('container', {}).get('titles') |             container_titles = video.get('container', {}).get('titles', {}) | ||||||
|             if container_titles: |             container_title = self.dict_selection(container_titles, 'en') | ||||||
|                 container_title = container_titles.get('en') or container_titles[container_titles.keys()[0]] |  | ||||||
|             title = '%s - %s' % (container_title, title) |             title = '%s - %s' % (container_title, title) | ||||||
| 
 | 
 | ||||||
|         descriptions = video.get('descriptions', {}) |         description = self.dict_selection(video.get('descriptions', {}), 'en') | ||||||
|         description = descriptions.get('en') |  | ||||||
|         if description is None: |  | ||||||
|             filtered_descriptions = list(filter(None, [descriptions.get(k) for k in titles.keys()])) |  | ||||||
|             if filtered_descriptions: |  | ||||||
|                 description = filtered_descriptions[0] |  | ||||||
| 
 | 
 | ||||||
|         duration = int_or_none(video.get('duration')) |         duration = int_or_none(video.get('duration')) | ||||||
|         timestamp = parse_iso8601(video.get('created_at')) |         timestamp = parse_iso8601(video.get('created_at')) | ||||||
| @ -316,11 +315,9 @@ class VikiChannelIE(VikiBaseIE): | |||||||
|             'containers/%s.json' % channel_id, channel_id, |             'containers/%s.json' % channel_id, channel_id, | ||||||
|             'Downloading channel JSON') |             'Downloading channel JSON') | ||||||
| 
 | 
 | ||||||
|         titles = channel['titles'] |         title = self.dict_selection(channel['titles'], 'en') | ||||||
|         title = titles.get('en') or titles[titles.keys()[0]] |  | ||||||
| 
 | 
 | ||||||
|         descriptions = channel['descriptions'] |         description = self.dict_selection(channel['descriptions'], 'en') | ||||||
|         description = descriptions.get('en') or descriptions[descriptions.keys()[0]] |  | ||||||
| 
 | 
 | ||||||
|         entries = [] |         entries = [] | ||||||
|         for video_type in ('episodes', 'clips', 'movies'): |         for video_type in ('episodes', 'clips', 'movies'): | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user