mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 06:35:12 +00:00 
			
		
		
		
	[pluralsight:course] Fix extraction (closes #12075)
This commit is contained in:
		| @@ -18,6 +18,7 @@ from ..utils import ( | ||||
|     parse_duration, | ||||
|     qualities, | ||||
|     srt_subtitles_timecode, | ||||
|     update_url_query, | ||||
|     urlencode_postdata, | ||||
| ) | ||||
|  | ||||
| @@ -331,25 +332,44 @@ class PluralsightCourseIE(PluralsightBaseIE): | ||||
|         # TODO: PSM cookie | ||||
|  | ||||
|         course = self._download_json( | ||||
|             '%s/data/course/%s' % (self._API_BASE, course_id), | ||||
|             course_id, 'Downloading course JSON') | ||||
|             '%s/player/functions/rpc' % self._API_BASE, course_id, | ||||
|             'Downloading course JSON', | ||||
|             data=json.dumps({ | ||||
|                 'fn': 'bootstrapPlayer', | ||||
|                 'payload': { | ||||
|                     'courseId': course_id, | ||||
|                 } | ||||
|             }).encode('utf-8'), | ||||
|             headers={ | ||||
|                 'Content-Type': 'application/json;charset=utf-8' | ||||
|             })['payload']['course'] | ||||
|  | ||||
|         title = course['title'] | ||||
|         course_name = course['name'] | ||||
|         course_data = course['modules'] | ||||
|         description = course.get('description') or course.get('shortDescription') | ||||
|  | ||||
|         course_data = self._download_json( | ||||
|             '%s/data/course/content/%s' % (self._API_BASE, course_id), | ||||
|             course_id, 'Downloading course data JSON') | ||||
|  | ||||
|         entries = [] | ||||
|         for num, module in enumerate(course_data, 1): | ||||
|             author = module.get('author') | ||||
|             module_name = module.get('name') | ||||
|             if not author or not module_name: | ||||
|                 continue | ||||
|             for clip in module.get('clips', []): | ||||
|                 player_parameters = clip.get('playerParameters') | ||||
|                 if not player_parameters: | ||||
|                 clip_index = int_or_none(clip.get('index')) | ||||
|                 if clip_index is None: | ||||
|                     continue | ||||
|                 clip_url = update_url_query( | ||||
|                     '%s/player' % self._API_BASE, query={ | ||||
|                         'mode': 'live', | ||||
|                         'course': course_name, | ||||
|                         'author': author, | ||||
|                         'name': module_name, | ||||
|                         'clip': clip_index, | ||||
|                     }) | ||||
|                 entries.append({ | ||||
|                     '_type': 'url_transparent', | ||||
|                     'url': '%s/training/player?%s' % (self._API_BASE, player_parameters), | ||||
|                     'url': clip_url, | ||||
|                     'ie_key': PluralsightIE.ie_key(), | ||||
|                     'chapter': module.get('title'), | ||||
|                     'chapter_number': num, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Sergey M․
					Sergey M․