diff --git a/main_windows.py b/main_windows.py index 3503163..ecd4b3a 100644 --- a/main_windows.py +++ b/main_windows.py @@ -58,7 +58,6 @@ os.makedirs(DOWNLOAD_FOLDER, exist_ok=True) os.makedirs(CACHE_FOLDER, exist_ok=True) - # --- --- --- Section Load Session --- --- --- # if args.session_cookie is not None: @@ -69,6 +68,7 @@ import websocket import qrcode + def on_message(ws, message): global userinfo userinfo = json.loads(message) @@ -106,7 +106,7 @@ # Store session with open(f"{DOWNLOAD_FOLDER}/session.txt", "a", encoding='utf-8') as f: - f.write(rainclassroom_sess.cookies['sessionid']+ "\n") + f.write(rainclassroom_sess.cookies['sessionid'] + "\n") # --- --- --- Section Get Course List --- --- --- # @@ -187,7 +187,6 @@ lesson_video_data = rainclassroom_sess.get( f"https://{YKT_HOST}/api/v3/lesson-summary/replay?lesson_id={lesson['courseware_id']}").json() - name_prefix += "-" + lesson['title'].rstrip() # Remove illegal characters for Windows filenames name_prefix = re.sub(r'[<>:"\\|?*\xa0]', '_', name_prefix) @@ -232,7 +231,8 @@ concatenate_segments(CACHE_FOLDER, DOWNLOAD_FOLDER, name_prefix, len(lesson_video_data['data']['live'])) elif 'live_timeline' in lesson_video_data['data'] and len(lesson_video_data['data']['live_timeline']) > 0: print(f"Concatenating {name_prefix}") - concatenate_segments(CACHE_FOLDER, DOWNLOAD_FOLDER, name_prefix, len(lesson_video_data['data']['live_timeline'])) + concatenate_segments(CACHE_FOLDER, DOWNLOAD_FOLDER, name_prefix, + len(lesson_video_data['data']['live_timeline'])) else: print('concatenate cannot start due to previous failure') else: @@ -281,7 +281,7 @@ try: ppt_raw_data = rainclassroom_sess.get( f"https://{YKT_HOST}/api/v3/lesson-summary/student/presentation?presentation_id={ppt['id']}&lesson_id={lesson["courseware_id"]}").json() - download_ppt(3,args.ppt_problem_answer, args.ppt_to_pdf, CACHE_FOLDER, DOWNLOAD_FOLDER, + download_ppt(3, args.ppt_problem_answer, args.ppt_to_pdf, CACHE_FOLDER, DOWNLOAD_FOLDER, ppt_raw_data, name_prefix + f"-{index}") except Exception as e: diff --git a/video_processing.py b/video_processing.py index 5d9f89c..9581519 100644 --- a/video_processing.py +++ b/video_processing.py @@ -1,9 +1,8 @@ from concurrent.futures import ThreadPoolExecutor, as_completed -import subprocess,sys +import subprocess, sys -def download_segment(CACHE_FOLDER, url: str, order: int, name_prefix: str = "" ): - +def download_segment(CACHE_FOLDER, url: str, order: int, name_prefix: str = ""): print(f"Downloading {name_prefix} - {order}") video_download_command = (f".\\aria2c -o '{CACHE_FOLDER}/{name_prefix}-{order}.mp4'" @@ -12,8 +11,8 @@ return result -def download_segment_m3u8(CACHE_FOLDER, url: str, order: int, name_prefix: str = "" ): +def download_segment_m3u8(CACHE_FOLDER, url: str, order: int, name_prefix: str = ""): print(f"Downloading {name_prefix} - {order}") # video_download_command = (f".\\ffmpeg -i '{url}' -c copy -n '{CACHE_FOLDER}/{name_prefix}-{order}.mp4'" @@ -62,10 +61,11 @@ if fallback_flag: # Create a ThreadPoolExecutor to manage parallel downloads with ThreadPoolExecutor(max_workers=6) as executor: - # Dictionary to hold future results + # Dictionary to hold future results if 'm3u8' in lesson_video_data['data']['live_timeline'][0]['replay_url']: future_to_order = { - executor.submit(download_segment_m3u8, CACHE_FOLDER, segment['replay_url'], order, name_prefix): order + executor.submit(download_segment_m3u8, CACHE_FOLDER, segment['replay_url'], order, + name_prefix): order for order, segment in enumerate(lesson_video_data['data']['live_timeline']) } else: @@ -115,7 +115,6 @@ def concatenate_segments(CACHE_FOLDER, DOWNLOAD_FOLDER, name_prefix, num_segments): - with open(f"{CACHE_FOLDER}/concat.txt", "w", encoding='utf-8') as f: f.write("\n".join( [f"file '../{CACHE_FOLDER}/{name_prefix}-{i}.mp4'" for i in range(num_segments)] @@ -128,4 +127,4 @@ f"-c:a aac -ac 1 -rematrix_maxval 1.0 -b:a 64k '{DOWNLOAD_FOLDER}/{name_prefix}.mp4' -n " f"-hide_banner -loglevel error -stats") - subprocess.run(['powershell', '-Command', video_concatenating_command], text=True) \ No newline at end of file + subprocess.run(['powershell', '-Command', video_concatenating_command], text=True)