mirror of
https://cdm-project.com/Download-Tools/udemy-downloader.git
synced 2025-04-30 00:24:25 +02:00
fix quizzes in info
This commit is contained in:
parent
a461f5fc86
commit
935b2a41f3
179
main.py
179
main.py
@ -368,7 +368,6 @@ class Udemy:
|
|||||||
cj = browser_cookie3.vivaldi()
|
cj = browser_cookie3.vivaldi()
|
||||||
|
|
||||||
def _get_quiz(self, quiz_id):
|
def _get_quiz(self, quiz_id):
|
||||||
print(portal_name)
|
|
||||||
self.session._headers.update(
|
self.session._headers.update(
|
||||||
{
|
{
|
||||||
"Host": "{portal_name}.udemy.com".format(portal_name=portal_name),
|
"Host": "{portal_name}.udemy.com".format(portal_name=portal_name),
|
||||||
@ -376,7 +375,6 @@ class Udemy:
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
url = QUIZ_URL.format(portal_name=portal_name, quiz_id=quiz_id)
|
url = QUIZ_URL.format(portal_name=portal_name, quiz_id=quiz_id)
|
||||||
print(url)
|
|
||||||
try:
|
try:
|
||||||
resp = self.session._get(url).json()
|
resp = self.session._get(url).json()
|
||||||
except conn_error as error:
|
except conn_error as error:
|
||||||
@ -989,79 +987,92 @@ class Udemy:
|
|||||||
else:
|
else:
|
||||||
logger.warning(f"Unknown asset type: {asset_type}")
|
logger.warning(f"Unknown asset type: {asset_type}")
|
||||||
|
|
||||||
stream_urls = asset.get("stream_urls")
|
if asset != None:
|
||||||
if stream_urls != None:
|
stream_urls = asset.get("stream_urls")
|
||||||
# not encrypted
|
if stream_urls != None:
|
||||||
if stream_urls and isinstance(stream_urls, dict):
|
# not encrypted
|
||||||
sources = stream_urls.get("Video")
|
if stream_urls and isinstance(stream_urls, dict):
|
||||||
tracks = asset.get("captions")
|
sources = stream_urls.get("Video")
|
||||||
# duration = asset.get("time_estimation")
|
tracks = asset.get("captions")
|
||||||
sources = self._extract_sources(sources, skip_hls)
|
# duration = asset.get("time_estimation")
|
||||||
subtitles = self._extract_subtitles(tracks)
|
sources = self._extract_sources(sources, skip_hls)
|
||||||
sources_count = len(sources)
|
subtitles = self._extract_subtitles(tracks)
|
||||||
subtitle_count = len(subtitles)
|
sources_count = len(sources)
|
||||||
lecture.pop("data") # remove the raw data object after processing
|
subtitle_count = len(subtitles)
|
||||||
lecture = {
|
lecture.pop("data") # remove the raw data object after processing
|
||||||
**lecture,
|
lecture = {
|
||||||
"assets": retVal,
|
**lecture,
|
||||||
"assets_count": len(retVal),
|
"assets": retVal,
|
||||||
"sources": sources,
|
"assets_count": len(retVal),
|
||||||
"subtitles": subtitles,
|
"sources": sources,
|
||||||
"subtitle_count": subtitle_count,
|
"subtitles": subtitles,
|
||||||
"sources_count": sources_count,
|
"subtitle_count": subtitle_count,
|
||||||
"is_encrypted": False,
|
"sources_count": sources_count,
|
||||||
"asset_id": asset.get("id"),
|
"is_encrypted": False,
|
||||||
}
|
"asset_id": asset.get("id"),
|
||||||
|
"type": asset.get("asset_type")
|
||||||
|
}
|
||||||
|
else:
|
||||||
|
lecture.pop("data") # remove the raw data object after processing
|
||||||
|
lecture = {
|
||||||
|
**lecture,
|
||||||
|
"html_content": asset.get("body"),
|
||||||
|
"extension": "html",
|
||||||
|
"assets": retVal,
|
||||||
|
"assets_count": len(retVal),
|
||||||
|
"subtitle_count": 0,
|
||||||
|
"sources_count": 0,
|
||||||
|
"is_encrypted": False,
|
||||||
|
"asset_id": asset.get("id"),
|
||||||
|
"type": asset.get("asset_type")
|
||||||
|
}
|
||||||
else:
|
else:
|
||||||
lecture.pop("data") # remove the raw data object after processing
|
# encrypted
|
||||||
lecture = {
|
media_sources = asset.get("media_sources")
|
||||||
**lecture,
|
if media_sources and isinstance(media_sources, list):
|
||||||
"html_content": asset.get("body"),
|
sources = self._extract_media_sources(media_sources)
|
||||||
"extension": "html",
|
tracks = asset.get("captions")
|
||||||
"assets": retVal,
|
# duration = asset.get("time_estimation")
|
||||||
"assets_count": len(retVal),
|
subtitles = self._extract_subtitles(tracks)
|
||||||
"subtitle_count": 0,
|
sources_count = len(sources)
|
||||||
"sources_count": 0,
|
subtitle_count = len(subtitles)
|
||||||
"is_encrypted": False,
|
lecture.pop("data") # remove the raw data object after processing
|
||||||
"asset_id": asset.get("id"),
|
lecture = {
|
||||||
}
|
**lecture,
|
||||||
else:
|
# "duration": duration,
|
||||||
# encrypted
|
"assets": retVal,
|
||||||
media_sources = asset.get("media_sources")
|
"assets_count": len(retVal),
|
||||||
if media_sources and isinstance(media_sources, list):
|
"video_sources": sources,
|
||||||
sources = self._extract_media_sources(media_sources)
|
"subtitles": subtitles,
|
||||||
tracks = asset.get("captions")
|
"subtitle_count": subtitle_count,
|
||||||
# duration = asset.get("time_estimation")
|
"sources_count": sources_count,
|
||||||
subtitles = self._extract_subtitles(tracks)
|
"is_encrypted": True,
|
||||||
sources_count = len(sources)
|
"asset_id": asset.get("id"),
|
||||||
subtitle_count = len(subtitles)
|
"type": asset.get("asset_type")
|
||||||
lecture.pop("data") # remove the raw data object after processing
|
}
|
||||||
lecture = {
|
|
||||||
**lecture,
|
|
||||||
# "duration": duration,
|
|
||||||
"assets": retVal,
|
|
||||||
"assets_count": len(retVal),
|
|
||||||
"video_sources": sources,
|
|
||||||
"subtitles": subtitles,
|
|
||||||
"subtitle_count": subtitle_count,
|
|
||||||
"sources_count": sources_count,
|
|
||||||
"is_encrypted": True,
|
|
||||||
"asset_id": asset.get("id"),
|
|
||||||
}
|
|
||||||
|
|
||||||
else:
|
else:
|
||||||
lecture.pop("data") # remove the raw data object after processing
|
lecture.pop("data") # remove the raw data object after processing
|
||||||
lecture = {
|
lecture = {
|
||||||
**lecture,
|
**lecture,
|
||||||
"html_content": asset.get("body"),
|
"html_content": asset.get("body"),
|
||||||
"extension": "html",
|
"extension": "html",
|
||||||
"assets": retVal,
|
"assets": retVal,
|
||||||
"assets_count": len(retVal),
|
"assets_count": len(retVal),
|
||||||
"subtitle_count": 0,
|
"subtitle_count": 0,
|
||||||
"sources_count": 0,
|
"sources_count": 0,
|
||||||
"is_encrypted": False,
|
"is_encrypted": False,
|
||||||
"asset_id": asset.get("id"),
|
"asset_id": asset.get("id"),
|
||||||
}
|
"type": asset.get("asset_type")
|
||||||
|
}
|
||||||
|
else:
|
||||||
|
lecture = {
|
||||||
|
**lecture,
|
||||||
|
"assets": retVal,
|
||||||
|
"assets_count": len(retVal),
|
||||||
|
"asset_id": lecture_data.get("id"),
|
||||||
|
"type": lecture_data.get("type")
|
||||||
|
}
|
||||||
|
|
||||||
return lecture
|
return lecture
|
||||||
|
|
||||||
@ -1845,30 +1856,38 @@ def _print_course_info(udemy: Udemy, udemy_object: dict):
|
|||||||
parsed_lecture = udemy._parse_lecture(lecture)
|
parsed_lecture = udemy._parse_lecture(lecture)
|
||||||
|
|
||||||
lecture_sources = parsed_lecture.get("sources")
|
lecture_sources = parsed_lecture.get("sources")
|
||||||
lecture_is_encrypted = parsed_lecture.get("is_encrypted")
|
lecture_is_encrypted = parsed_lecture.get("is_encrypted", None)
|
||||||
lecture_extension = parsed_lecture.get("extension")
|
lecture_extension = parsed_lecture.get("extension")
|
||||||
lecture_asset_count = parsed_lecture.get("assets_count")
|
lecture_asset_count = parsed_lecture.get("assets_count")
|
||||||
lecture_subtitles = parsed_lecture.get("subtitles")
|
lecture_subtitles = parsed_lecture.get("subtitles")
|
||||||
lecture_video_sources = parsed_lecture.get("video_sources")
|
lecture_video_sources = parsed_lecture.get("video_sources")
|
||||||
|
lecture_type = parsed_lecture.get("type")
|
||||||
|
|
||||||
|
lecture_qualities = []
|
||||||
|
|
||||||
if lecture_sources:
|
if lecture_sources:
|
||||||
lecture_sources = sorted(lecture_sources, key=lambda x: int(x.get("height")), reverse=True)
|
lecture_sources = sorted(lecture_sources, key=lambda x: int(x.get("height")), reverse=True)
|
||||||
if lecture_video_sources:
|
if lecture_video_sources:
|
||||||
lecture_video_sources = sorted(lecture_video_sources, key=lambda x: int(x.get("height")), reverse=True)
|
lecture_video_sources = sorted(lecture_video_sources, key=lambda x: int(x.get("height")), reverse=True)
|
||||||
|
|
||||||
if lecture_is_encrypted:
|
if lecture_is_encrypted and lecture_video_sources != None:
|
||||||
lecture_qualities = ["{}@{}x{}".format(x.get("type"), x.get("width"), x.get("height")) for x in lecture_video_sources]
|
lecture_qualities = ["{}@{}x{}".format(x.get("type"), x.get("width"), x.get("height")) for x in lecture_video_sources]
|
||||||
elif not lecture_is_encrypted and lecture_sources:
|
elif lecture_is_encrypted == False and lecture_sources != None:
|
||||||
lecture_qualities = ["{}@{}x{}".format(x.get("type"), x.get("height"), x.get("width")) for x in lecture_sources]
|
lecture_qualities = ["{}@{}x{}".format(x.get("type"), x.get("height"), x.get("width")) for x in lecture_sources]
|
||||||
|
|
||||||
if lecture_extension:
|
if lecture_extension:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
logger.info(" > Lecture: {} ({} of {})".format(lecture_title, lecture_index, chapter_lecture_count))
|
logger.info(" > Lecture: {} ({} of {})".format(lecture_title, lecture_index, chapter_lecture_count))
|
||||||
logger.info(" > DRM: {}".format(lecture_is_encrypted))
|
logger.info(" > Type: {}".format(lecture_type))
|
||||||
logger.info(" > Asset Count: {}".format(lecture_asset_count))
|
if lecture_is_encrypted != None:
|
||||||
logger.info(" > Captions: {}".format(", ".join([x.get("language") for x in lecture_subtitles])))
|
logger.info(" > DRM: {}".format(lecture_is_encrypted))
|
||||||
logger.info(" > Qualities: {}".format(lecture_qualities))
|
if lecture_asset_count:
|
||||||
|
logger.info(" > Asset Count: {}".format(lecture_asset_count))
|
||||||
|
if lecture_subtitles:
|
||||||
|
logger.info(" > Captions: {}".format(", ".join([x.get("language") for x in lecture_subtitles])))
|
||||||
|
if lecture_qualities:
|
||||||
|
logger.info(" > Qualities: {}".format(lecture_qualities))
|
||||||
|
|
||||||
if chapter_index != chapter_count:
|
if chapter_index != chapter_count:
|
||||||
logger.info("==========================================")
|
logger.info("==========================================")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user