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, |     parse_duration, | ||||||
|     qualities, |     qualities, | ||||||
|     srt_subtitles_timecode, |     srt_subtitles_timecode, | ||||||
|  |     update_url_query, | ||||||
|     urlencode_postdata, |     urlencode_postdata, | ||||||
| ) | ) | ||||||
|  |  | ||||||
| @@ -331,25 +332,44 @@ class PluralsightCourseIE(PluralsightBaseIE): | |||||||
|         # TODO: PSM cookie |         # TODO: PSM cookie | ||||||
|  |  | ||||||
|         course = self._download_json( |         course = self._download_json( | ||||||
|             '%s/data/course/%s' % (self._API_BASE, course_id), |             '%s/player/functions/rpc' % self._API_BASE, course_id, | ||||||
|             course_id, 'Downloading course JSON') |             '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'] |         title = course['title'] | ||||||
|  |         course_name = course['name'] | ||||||
|  |         course_data = course['modules'] | ||||||
|         description = course.get('description') or course.get('shortDescription') |         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 = [] |         entries = [] | ||||||
|         for num, module in enumerate(course_data, 1): |         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', []): |             for clip in module.get('clips', []): | ||||||
|                 player_parameters = clip.get('playerParameters') |                 clip_index = int_or_none(clip.get('index')) | ||||||
|                 if not player_parameters: |                 if clip_index is None: | ||||||
|                     continue |                     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({ |                 entries.append({ | ||||||
|                     '_type': 'url_transparent', |                     '_type': 'url_transparent', | ||||||
|                     'url': '%s/training/player?%s' % (self._API_BASE, player_parameters), |                     'url': clip_url, | ||||||
|                     'ie_key': PluralsightIE.ie_key(), |                     'ie_key': PluralsightIE.ie_key(), | ||||||
|                     'chapter': module.get('title'), |                     'chapter': module.get('title'), | ||||||
|                     'chapter_number': num, |                     'chapter_number': num, | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Sergey M․
					Sergey M․