# 29.06.24 import os import sys import logging from urllib.parse import urlparse # Internal utilities from Src.Util.message import start_message from Src.Util.os import create_folder, can_create_file, remove_special_characters from Src.Lib.Downloader import MP4_downloader # Logic class from .Player.lonelil import ApiManager from ..Template.Class.SearchType import MediaItem from Src.Lib.Driver import WebAutomation # Variable from .costant import ROOT_PATH, SITE_NAME, SERIES_FOLDER def download_film(media: MediaItem, main_driver: WebAutomation): """ Downloads a media title using its API manager and WebAutomation driver. Parameters: - media (MediaItem): The media item to be downloaded. - main_driver (WebAutomation): The web automation driver instance. """ start_message() # Initialize the API manager with the media and driver api_manager = ApiManager(media, main_driver) # Get the URL of the media playlist url_playlist = api_manager.get_playlist() # Construct the MP4 file name and path mp4_name = remove_special_characters(media.name) + ".mp4" mp4_path = os.path.join(ROOT_PATH, SITE_NAME, SERIES_FOLDER, remove_special_characters(media.name)) # Ensure the folder path exists create_folder(mp4_path) # Check if the MP4 file can be created if not can_create_file(mp4_name): logging.error("Invalid mp4 name.") sys.exit(0) # Parse the URL of the playlist parsed_url = urlparse(url_playlist) # Quit the main driver instance main_driver.quit() # Initiate the MP4 downloader with necessary parameters MP4_downloader( url=url_playlist, path=os.path.join(mp4_path, mp4_name), referer=f"{parsed_url.scheme}://{parsed_url.netloc}/", )