From d580e8b2bafc1a5d2b7731af85d6078e249954be Mon Sep 17 00:00:00 2001 From: coldsofttech <161084795+coldsofttech@users.noreply.github.com> Date: Sun, 1 Sep 2024 20:28:58 +0100 Subject: [PATCH] Updated to support pym3u8downloader 0.1.8 --- .github/ISSUE_TEMPLATE/bug_report.md | 49 ++ .github/ISSUE_TEMPLATE/feature_request.md | 24 + CHANGELOG.md | 3 +- README.md | 18 +- SECURITY.md | 39 ++ doc_images/doc_image_app_window.png | Bin 21961 -> 29243 bytes doc_images/doc_image_download_progress.png | Bin 32807 -> 42473 bytes .../doc_image_master_playlist_identified.png | Bin 0 -> 21637 bytes .../doc_image_master_playlist_variants.png | Bin 0 -> 46076 bytes requirements.txt | 7 +- setup.py | 4 +- src/__init__.py | 479 ++++++++++++------ tests/{unit => }/test_aboutui.py | 0 tests/{unit => }/test_downloadthread.py | 10 +- tests/{unit => }/test_m3u8downloaderui.py | 0 tests/{unit => }/test_stdoutredirector.py | 0 16 files changed, 454 insertions(+), 179 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md create mode 100644 SECURITY.md create mode 100644 doc_images/doc_image_master_playlist_identified.png create mode 100644 doc_images/doc_image_master_playlist_variants.png rename tests/{unit => }/test_aboutui.py (100%) rename tests/{unit => }/test_downloadthread.py (91%) rename tests/{unit => }/test_m3u8downloaderui.py (100%) rename tests/{unit => }/test_stdoutredirector.py (100%) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..7de6503 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,49 @@ +--- +name: Bug report +about: Create a report to help us improve +title: "[BUG] " +labels: bug +assignees: '' + +--- + +**Describe the bug** +Provide a clear and concise description of the bug you’re encountering. Include what you were trying to achieve and how +the bug disrupts this process. + +**Steps to Reproduce** +Outline a step-by-step guide to replicate the issue. Include any relevant screenshots if applicable. This +should be detailed enough to allow someone else to follow and observe the same behavior. +Step 1: Open ... +Step 2: Click on ... +Step 3: Go to ... +Step 4: ... + +**Expected behavior** +Clearly state what you anticipated should happen during this process. This helps in understanding what the correct +outcome should be. + +**Actual behavior** +Describe the actual outcome you experienced. Be specific about how this differs from the expected behavior. + +**Debug Logs** +If you have debug logging enabled, please attach or include the relevant log excerpts that capture the issue. This +information is crucial for diagnosing the problem. + +**Screenshots** +Attach any error/issue screenshots. This visual information is crucial for diagnosing the problem. + +**Environment (please complete the following information):** + +- Operating System: [e.g., Windows 10, Ubuntu 22.04, macOS Ventura] +- Python Version: [e.g., 3.12.1] +- pym3u8downloaderui Version: [e.g., 0.1.5] +- Additional Libraries/Dependencies: (if applicable) + +**Additional context** +Include any additional information that may help in understanding or resolving the issue. This could be related to +recent changes, specific configurations, or external factors that might be influencing the bug. + +**Possible Solution** +If you have any ideas or suggestions on how to fix the issue, please outline them here. Your insights could be valuable +in accelerating the resolution of the problem. \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..e73e195 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,24 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: "[FEATURE] " +labels: enhancement +assignees: '' + +--- + +**Describe the feature request** +Provide a clear and concise description of the feature you would like to see. Explain what functionality or improvement +you are proposing and how it would enhance the current experience or system. + +**Describe the desired outcome** +Explain what you hope to achieve with this feature. Detail how it would benefit users or improve the system’s overall +performance or usability. + +**Describe alternatives considered** +If applicable, list any alternative solutions or features you’ve considered. Explain why these alternatives might not +fully address your needs or how they differ from your proposed feature. + +**Additional context** +Include any additional information that may support your feature request. This can be screenshots, mockups, use cases, +or other relevant details that help illustrate the feature’s value and implementation. \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 594631b..9f00390 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # Version History -- 0.1.4: Fixed CVE-2024-35195 (latest) +- 0.1.5: Updated to support pym3u8downloader 0.1.8 (latest) +- 0.1.4: Fixed CVE-2024-35195 - 0.1.3: Fixed CVE-2024-6345 - 0.1.2: Updated Pipeline To Support Multi-OS & Added Support for PyPI Release - 0.1.1: Introduced Linting diff --git a/README.md b/README.md index acac53b..67e870a 100644 --- a/README.md +++ b/README.md @@ -46,22 +46,34 @@ executable. ![img.png](doc_images/doc_image_executable.png) **Step 2:** Enter the URL of the .m3u8 playlist file you wish to download into the **Input URL (.m3u8)** field. + **Step 3:** Specify the destination folder for the downloaded file by clicking the **...** button. +**Step 4:** Check `Skip SSL Verification` if you want to ignore any SSL warnings for https-based input URLs. + ![img.png](doc_images/doc_image_app_window.png) -**Step 4:** Once both the input URL and output file are specified, click the **Download** button. -**Step 5:** Track the download progress within the application. +**Step 5:** Once both the input URL and output file are specified, click the **Download** button. + +**Step 6:** Track the download progress within the application. ![img.png](doc_images/doc_image_download_progress.png) -**Step 6:** Upon successful completion of the download, a confirmation message will be displayed. +**Step 7:** Upon successful completion of the download, a confirmation message will be displayed. ![img.png](doc_images/doc_image_download_complete.png) **Step 8:** To initiate a new download and reset the controls, go to **File > New**. This action resets the controls and allows you to input a new URL and select a new output file. +**Step 9:** In case if the provided input file is identified as master playlist, you will be notified as below. + +![img.png](doc_images/doc_image_master_playlist_identified.png) + +**Step 10:** From the available variants, select the appropriate one and click on **Download** button again. + +![img.png](doc_images/doc_image_master_playlist_variants.png) + ## General Issues & Resolutions ### Invalid Input URL diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..b38c1d7 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,39 @@ +# Security Policy + +We only provide updates for the latest version of `pym3u8downloaderui`. Please ensure you are using the most recent +version, which is currently: + +| Version | Supported | +|---------|--------------------| +| 0.1.5 | :white_check_mark: | + +If you are using an older version, we highly recommend upgrading to the latest version to ensure you have the latest +security updates. + +## Reporting a Vulnerability + +If you discover a security vulnerability in `pym3u8downloaderui`, we encourage you to report it using GitHub's Private +Vulnerability Reporting feature. This method ensures that your report remains confidential and is handled securely. + +### How to Report a Vulnerability + +1. **Navigate to the Repository**: Go to the [pym3u8downloaderui](https://github.com/coldsofttech/pym3u8downloaderui) + GitHub Repository. + +2. **Access Security Advisories**: Click on the "Security" tab, then select "Report a Vulnerability." + +3. **Provide Detailed Information**: + - **Description**: Give a clear and concise description of the vulnerability. + - **Reproduction Steps**: Include steps to reproduce the vulnerability. + - **Impact**: Describe the potential impact of the vulnerability. + +4. **Submit the Report**: Once all necessary details are provided, submit the report. We will review and acknowledge + your report as soon as possible. + +### Best Effort on Resolution + +While we will strive to resolve the reported vulnerability as promptly as possible, we cannot guarantee a specific +timeline for the resolution. We will keep you updated on the progress and may reach out for additional information if +needed. + +Thank you for helping to keep `pym3u8downloaderui` secure! \ No newline at end of file diff --git a/doc_images/doc_image_app_window.png b/doc_images/doc_image_app_window.png index febfdd9dad480921a9114c05f07231e27afc1647..8f314be68052184afa6aabe5464cd6f510d6f3f0 100644 GIT binary patch literal 29243 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 literal 32807 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 A^8f$< diff --git a/doc_images/doc_image_master_playlist_identified.png b/doc_images/doc_image_master_playlist_identified.png new file mode 100644 index 0000000000000000000000000000000000000000..7d443bf660007bee0dde7538ae293f3943026a6f GIT binary patch literal 21637 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 literal 0 HcmV?d00001 diff --git a/doc_images/doc_image_master_playlist_variants.png b/doc_images/doc_image_master_playlist_variants.png new file mode 100644 index 0000000000000000000000000000000000000000..3f34d11ed5048693730ee6988bb42f55fdeed4cc GIT binary patch literal 46076 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 literal 0 HcmV?d00001 diff --git a/requirements.txt b/requirements.txt index 0a01a42..5af2cfa 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,3 @@ -pym3u8downloader -pytest~=7.4.0 -setuptools~=72.1.0 -requests>=2.32.0 \ No newline at end of file +pym3u8downloader~=0.1.8 +setuptools~=74.0.0 +requests~=2.32.3 \ No newline at end of file diff --git a/setup.py b/setup.py index 3eaa099..b7f9a1d 100644 --- a/setup.py +++ b/setup.py @@ -16,8 +16,8 @@ ] }, install_requires=[ - 'requests', - 'pym3u8downloader' + 'requests~=2.32.3', + 'pym3u8downloader~=0.1.8' ], requires_python=">=3.10", long_description=open('README.md').read(), diff --git a/src/__init__.py b/src/__init__.py index 40fdb62..3c1f3d4 100644 --- a/src/__init__.py +++ b/src/__init__.py @@ -1,46 +1,20 @@ import json import os import platform +import re import sys import threading import tkinter as tk import webbrowser from tkinter import messagebox, ttk, filedialog - - -class StdoutRedirector: - """Class for redirecting standard output to a Tkinter text variable.""" - - def __init__(self, text_variable) -> None: - """ - Initialize the StdoutRedirector class. - - :param text_variable: Tkinter text variable to store the output. - :type text_variable: tk.StringVar - """ - self.text_variable = text_variable - self.buffer = '' - - def write(self, message) -> None: - """ - Write the message to the text variable. - - :param message: The message to be written. - :type message: str - :return: None - """ - self.text_variable.set(message) - - def flush(self) -> None: - """Flush the output buffer.""" - pass +from typing import Optional class Constants: """This class holds all the constant values used in the application""" APP_TITLE = 'M3U8 Downloader' # Title of the application - APP_VERSION = '0.1.4' # Version of the application + APP_VERSION = '0.1.5' # Version of the application APP_PACKAGE_NAME = 'pym3u8downloaderui' # Package name of the application APP_PACKAGE_DESCRIPTION = """ M3U8 Downloader UI is a Python-based graphical user interface (GUI) application designed @@ -49,7 +23,7 @@ class Constants: merging video files from M3U8 playlists. """ # Description of the application APP_WINDOW_WIDTH = 450 # Width of the application window - APP_WINDOW_HEIGHT = 250 # Height of the application window + APP_WINDOW_HEIGHT = 350 # Height of the application window APP_PALETTE_BACKGROUND = '#FFFFFF' # Background color of the application APP_PALETTE_FOREGROUND = '#000000' # Foreground color of the application APP_THEME = 'xpnative' if platform.system().lower() == 'windows' else 'clam' # Theme of the application @@ -78,6 +52,8 @@ class Constants: LABEL_INPUT_TITLE = 'Input URL (.m3u8):' # Title for input URL label LABEL_OUTPUT_TITLE = 'Output File (.mp4):' # Title for output file label + LABEL_SKIP_SSL_VERIFICATION_TITLE = 'Skip SSL Verification' # Title for skip SSL verification label + LABEL_MASTER_CONFIGURATION_TITLE = 'Variants:' # Title for variants available in the master playlist BUTTON_BROWSE_TITLE = '...' # Title for browse button BUTTON_DOWNLOAD_TITLE = 'Download' # Title for download button @@ -94,6 +70,10 @@ class Constants: DOWNLOAD_COMPLETE_TITLE = 'Download' # Title for download complete message DOWNLOAD_COMPLETE_MESSAGE = 'Download completed successfully!' # Message for download complete message DOWNLOAD_ERROR_TITLE = 'Error' # Title for download error message + DOWNLOAD_MASTER_IDENTIFIED_TITLE = 'Master Playlist' # Title for playlist identified as master + DOWNLOAD_MASTER_IDENTIFIED_MESSAGE = ( + 'Identified m3u8 file as master playlist. Select appropriate configuration for download.' + ) # Message for playlist identified as master ABOUT_TITLE = 'About' # Title for about window ABOUT_WINDOW_WIDTH = 300 # Width of the about window @@ -101,6 +81,163 @@ class Constants: CONFIG_FILE = 'config.json' # File name for configuration file + PATTERN_MASTER_VARIANT_NAME = r'Name:\s*(?P[^|]+)' # Regex pattern for capturing name from the variant + # Regex pattern for capturing bandwidth from the variant + PATTERN_MASTER_VARIANT_BANDWIDTH = r'Bandwidth:\s*(?P[^|]+)' + # Regex pattern for capturing resolution from the variant + PATTERN_MASTER_VARIANT_RESOLUTION = r'Resolution:\s*(?P[^|]+)' + + +class StdoutRedirector: + """Class for redirecting standard output to a Tkinter text variable.""" + + def __init__(self, text_variable) -> None: + """ + Initialize the StdoutRedirector class. + + :param text_variable: Tkinter text variable to store the output. + :type text_variable: tk.StringVar + """ + self.text_variable = text_variable + self.buffer = '' + + def write(self, message) -> None: + """ + Write the message to the text variable. + + :param message: The message to be written. + :type message: str + :return: None + """ + self.text_variable.set(message) + + def flush(self) -> None: + """Flush the output buffer.""" + pass + + +class AboutUI: + """ + Class for creating an 'About' window in the M3U8 Downloader application. + """ + + def __init__(self, parent: tk.Tk) -> None: + """ + Initialize the AboutUI class. + + :param parent: The parent Tkinter root window. + :type parent: tk.Tk + """ + self.parent = parent + self.window = tk.Toplevel(self.parent) + self.window.title(Constants.ABOUT_TITLE) + self.window.resizable(False, False) + self.window.transient(self.parent) + self.window.grab_set() + + self._set_window_size() + self._set_defaults() + self._set_styles() + self._set_fonts() + self._set_controls() + + def _set_window_size(self) -> None: + """Set the size and position of the about window.""" + self.window_width = Constants.ABOUT_WINDOW_WIDTH + self.window_height = Constants.ABOUT_WINDOW_HEIGHT + screen_width = self.window.winfo_screenwidth() + screen_height = self.window.winfo_screenheight() + x = (screen_width - self.window_width) // 2 + y = (screen_height - self.window_height) // 2 + self.window.geometry(f'{self.window_width}x{self.window_height}+{x}+{y}') + + def _set_defaults(self) -> None: + """Set default values for various attributes.""" + self.header = 'About this app' + self.app_name = 'M3U8 Downloader' + self.app_version = Constants.APP_VERSION + self.copyrights = '© 2024 coldsofttech' + self.license_type = 'MIT License' + self.license_link = 'https://raw.githubusercontent.com/coldsofttech/pym3u8downloaderui/main/LICENSE' + + def _set_styles(self) -> None: + """Set styles for the about window.""" + self.window.tk_setPalette( + background=Constants.APP_PALETTE_BACKGROUND, foreground=Constants.APP_PALETTE_FOREGROUND + ) + self.style = ttk.Style() + self.style.theme_use(Constants.APP_THEME) + + self.no_background_style = ttk.Style() + self.no_background_style.configure('NoBackground.TLabel', background=self.window.cget('background')) + + def _set_fonts(self) -> None: + """Set font styles for labels.""" + self.font_header_style = (Constants.APP_LABEL_FONT_TYPE, 15, Constants.APP_LABEL_FONT_STYLE) + self.font_label_style = (Constants.APP_LABEL_FONT_TYPE, 10) + + def _set_controls(self) -> None: + """Set up various controls/widgets in the about window.""" + self.window.rowconfigure(0, minsize=Constants.APP_ROW_MIN_SIZE) + + self.header_label = ttk.Label( + self.window, text=self.header, font=self.font_header_style, style='NoBackground.TLabel' + ) + self.header_label.grid(row=1, column=0, sticky=tk.W, padx=Constants.APP_PADDING) + + self.window.rowconfigure(2, minsize=Constants.APP_ROW_MIN_SIZE) + + self._show_icon() + + self.window.rowconfigure(4, minsize=Constants.APP_ROW_MIN_SIZE) + + self.app_name_label = ttk.Label( + self.window, text=f'{self.app_name} {self.app_version}', font=self.font_label_style, + style='NoBackground.TLabel' + ) + self.app_name_label.grid(row=5, column=0, sticky=tk.W, padx=Constants.APP_PADDING) + + self.copyright_label = ttk.Label( + self.window, text=self.copyrights, font=self.font_label_style, style='NoBackground.TLabel' + ) + self.copyright_label.grid(row=6, column=0, sticky=tk.W, padx=Constants.APP_PADDING) + + self.window.rowconfigure(7, minsize=Constants.APP_ROW_MIN_SIZE) + + self.license_label = ttk.Label( + self.window, text=self.license_type, foreground='blue', cursor='hand2', font=self.font_label_style, + style='NoBackground.TLabel' + ) + self.license_label.grid(row=8, column=0, sticky=tk.W, padx=Constants.APP_PADDING) + self.license_label.bind('', self._open_license) + + def _show_icon(self) -> None: + """Show icon for the application.""" + import requests + + try: + response = requests.get(Constants.APP_ICON_IMAGE_FILE_PATH) + if response.status_code == 200: + image_data = response.content + self.image = tk.PhotoImage(data=image_data) + self.image = self.image.subsample(int(self.image.width() / 64), int(self.image.height() / 64)) + + self.icon_label = ttk.Label(self.window, image=self.image) + self.icon_label.image = self.image + self.icon_label.grid(row=3, column=0, sticky=tk.W, padx=Constants.APP_PADDING) + except requests.RequestException: + pass + + def _open_license(self, event) -> None: + """ + Open the license link in a web browser. + + :param event: Mouse click event. + :type event: tkinter.Event + :return: None + """ + webbrowser.open(self.license_link) + class M3U8DownloaderUI: """ @@ -143,7 +280,6 @@ def _set_icon(self) -> None: self.master.iconbitmap(default=Constants.APP_ICON_FILE_NAME) except requests.RequestException: pass - # elif platform.system().lower() == 'linux': else: if os.path.exists(Constants.APP_ICON_IMAGE_FILE_NAME): icon = tk.PhotoImage(file=Constants.APP_ICON_IMAGE_FILE_NAME) @@ -166,6 +302,7 @@ def _set_overrides(self) -> None: def _set_defaults(self) -> None: """Set default value for various attributes.""" self.selected_file_path = tk.StringVar() + self.skip_ssl = tk.BooleanVar(value=False) self.std_output = tk.StringVar() self.download_thread = None self.help_link = 'https://github.com/coldsofttech/pym3u8downloaderui/blob/main/README.md' @@ -229,21 +366,42 @@ def _set_controls(self) -> None: self.master.rowconfigure(6, minsize=Constants.APP_ROW_MIN_SIZE) + self.skip_ssl_checkbox = ttk.Checkbutton( + self.master, text=Constants.LABEL_SKIP_SSL_VERIFICATION_TITLE, variable=self.skip_ssl + ) + self.skip_ssl_checkbox.grid(row=7, column=0, sticky=tk.W, padx=(10, Constants.APP_PADDING)) + + self.configuration_label = ttk.Label( + self.master, text=Constants.LABEL_MASTER_CONFIGURATION_TITLE, font=self.font_label_style + ) + self.configuration_label.grid(row=8, column=0, sticky=tk.W, padx=Constants.APP_PADDING) + self.configuration_label.grid_remove() + + self.variants_combobox = ttk.Combobox( + self.master, state='readonly', width=65 + ) + self.variants_combobox.grid(row=9, column=0, columnspan=2, sticky=tk.W, padx=(10, Constants.APP_PADDING)) + self.variants_combobox.grid_remove() + + self.master.rowconfigure(10, minsize=Constants.APP_ROW_MIN_SIZE) + self.download_button = ttk.Button( self.master, text=Constants.BUTTON_DOWNLOAD_TITLE, command=self._download_button_callback ) - self.download_button.grid(row=7, column=0, columnspan=2, sticky=tk.E, padx=Constants.APP_PADDING) + self.download_button.grid(row=11, column=0, columnspan=2, sticky=tk.E, padx=Constants.APP_PADDING) - self.master.rowconfigure(8, minsize=Constants.APP_ROW_MIN_SIZE) + self.master.rowconfigure(12, minsize=Constants.APP_ROW_MIN_SIZE) self.stdout_label = ttk.Label(self.master, textvariable=self.std_output, wraplength=430) - self.stdout_label.grid(row=9, column=0, columnspan=2, sticky=tk.W, padx=Constants.APP_PADDING) + self.stdout_label.grid(row=13, column=0, columnspan=2, sticky=tk.W, padx=Constants.APP_PADDING) def disable_controls(self) -> None: """Disable all user controls.""" self.input_entry.config(state=tk.DISABLED) self.output_entry.config(state=tk.DISABLED) self.select_output_button.config(state=tk.DISABLED) + self.skip_ssl_checkbox.config(state=tk.DISABLED) + self.variants_combobox.config(state=tk.DISABLED) self.download_button.config(state=tk.DISABLED) self.file_menu.entryconfig(Constants.MENU_FILE_NEW_TITLE, state=tk.DISABLED) @@ -252,10 +410,39 @@ def enable_controls(self) -> None: self.input_entry.config(state=tk.NORMAL) self.output_entry.config(state='readonly') self.select_output_button.config(state=tk.NORMAL) + self.skip_ssl_checkbox.config(state=tk.NORMAL) + self.variants_combobox.config(state=tk.NORMAL) self.download_button.config(state=tk.NORMAL) self.file_menu.entryconfig(Constants.MENU_FILE_NEW_TITLE, state=tk.NORMAL) - def _download_playlist(self, input_url: str, output_file: str) -> None: + def show_master_configuration_controls(self, variants: list) -> None: + """Shows variant information in case playlist is identified as master.""" + self.configuration_label.grid() + self.configuration_label.grid_rowconfigure(8, weight=1) + self.configuration_label.grid_columnconfigure(0, weight=1) + self.variants_combobox.grid() + self.variants_combobox.grid_rowconfigure(9, weight=1) + self.variants_combobox.grid_columnconfigure(0, weight=1) + self.variants_combobox['values'] = variants + if variants: + self.variants_combobox.current(0) + + def hide_master_configuration_controls(self) -> None: + """Hides variant information in case playlist is not identified as master.""" + self.configuration_label.grid_remove() + self.variants_combobox.grid_remove() + self.variants_combobox['values'] = None + + def _download_playlist( + self, + input_url: str, + output_file: str, + verify_ssl: bool, + is_master: bool, + variant_name: Optional[str] = None, + variant_bandwidth: Optional[str] = None, + variant_resolution: Optional[str] = None + ) -> None: """ Download the playlist from the given input URL. @@ -263,21 +450,48 @@ def _download_playlist(self, input_url: str, output_file: str) -> None: :type input_url: str :param output_file: Output file (.mp4). :type output_file: str + :param verify_ssl: A flag to indicate if SSL warning needs skip. + :type verify_ssl: bool + :param is_master: A flag to indicate if playlist is master. + :type is_master: bool + :param variant_name: The name of the variant in case of master playlist. + :type variant_name: str + :param variant_bandwidth: The bandwidth of the variant in case of master playlist. + :type variant_bandwidth: str + :param variant_resolution: The resolution of the variant in case of master playlist. + :type variant_resolution: str :return: None """ - self.download_thread = DownloadThread(input_url, output_file, self) + self.download_thread = DownloadThread( + input_url, output_file, verify_ssl, is_master, self, variant_name, variant_bandwidth, variant_resolution + ) self.download_thread.start() def _download_button_callback(self) -> None: """Callback function for the download button.""" input_url = self.input_entry.get() output_file = self.output_entry.get() + skip_ssl = self.skip_ssl.get() + variant = self.variants_combobox.get() if not input_url or not output_file: messagebox.showwarning(Constants.INVALID_INPUT_TITLE, Constants.INVALID_INPUT_MESSAGE) return - self._download_playlist(input_url, output_file) + if variant: + variant_name_match = re.search(Constants.PATTERN_MASTER_VARIANT_NAME, variant) + variant_bandwidth_match = re.search(Constants.PATTERN_MASTER_VARIANT_BANDWIDTH, variant) + variant_resolution_match = re.search(Constants.PATTERN_MASTER_VARIANT_RESOLUTION, variant) + variant_name = variant_name_match.group('name').strip() if variant_name_match else None + variant_bandwidth = variant_bandwidth_match.group('bandwidth').strip() if variant_bandwidth_match else None + variant_resolution = ( + variant_resolution_match.group('resolution').strip() if variant_resolution_match else None + ) + self._download_playlist( + input_url, output_file, not skip_ssl, True, variant_name, variant_bandwidth, variant_resolution + ) + else: + self._download_playlist(input_url, output_file, not skip_ssl, False) def _select_output_button_callback(self) -> None: """Callback function for the select output button.""" @@ -292,6 +506,8 @@ def _new_callback(self) -> None: """Callback function for the 'New' option in the file menu.""" self.input_entry.delete(0, tk.END) self.selected_file_path = '' + self.skip_ssl = False + self.hide_master_configuration_controls() def _exit_callback(self) -> None: """Callback function for the 'Exit' option in the file menu.""" @@ -309,7 +525,17 @@ def _help_callback(self) -> None: class DownloadThread(threading.Thread): """Thread class for downloading M3U8 playlists in a separate thread.""" - def __init__(self, input_url: str, output_file: str, source: M3U8DownloaderUI) -> None: + def __init__( + self, + input_url: str, + output_file: str, + verify_ssl: bool, + is_master: bool, + source: M3U8DownloaderUI, + variant_name: Optional[str] = None, + variant_bandwidth: Optional[str] = None, + variant_resolution: Optional[str] = None + ) -> None: """ Initialize the DownloadThread class. @@ -317,12 +543,27 @@ def __init__(self, input_url: str, output_file: str, source: M3U8DownloaderUI) - :type input_url: str :param output_file: Output file (.mp4). :type output_file: str + :param verify_ssl: A flag to indicate if SSL warning needs skip. + :type verify_ssl: bool + :param is_master: A flag to indicate if playlist is master. + :type is_master: bool :param source: The source M3U8DownloaderUI instance. :type source: M3U8DownloaderUI + :param variant_name: The name of the variant in case of master playlist. + :type variant_name: str + :param variant_bandwidth: The bandwidth of the variant in case of master playlist. + :type variant_bandwidth: str + :param variant_resolution: The resolution of the variant in case of master playlist. + :type variant_resolution: str """ super().__init__() self.input_url = input_url self.output_file = output_file + self.verify_ssl = verify_ssl + self.is_master = is_master + self.variant_name = variant_name + self.variant_bandwidth = variant_bandwidth + self.variant_resolution = variant_resolution self.source = source self.skip_space_check = False self.debug = False @@ -337,144 +578,52 @@ def _load_config(self) -> None: def run(self) -> None: """Run the download process in a separate thread.""" - from pym3u8downloader import M3U8Downloader, M3U8DownloaderError + from pym3u8downloader import M3U8Downloader, M3U8DownloaderError, M3U8DownloaderWarning + + downloader = None try: self._load_config() self.source.disable_controls() sys.stdout = StdoutRedirector(self.source.std_output) - downloader = M3U8Downloader(self.input_url, self.output_file, self.skip_space_check, self.debug) - downloader.download_playlist() + downloader = M3U8Downloader( + input_file_path=self.input_url, + output_file_path=self.output_file, + skip_space_check=self.skip_space_check, + debug=self.debug, + verify_ssl=self.verify_ssl + ) + if not self.is_master: + downloader.download_playlist() + else: + downloader.download_master_playlist(self.variant_name, self.variant_bandwidth, self.variant_resolution) messagebox.showinfo(Constants.DOWNLOAD_COMPLETE_TITLE, Constants.DOWNLOAD_COMPLETE_MESSAGE) except (OSError, ValueError, TypeError, M3U8DownloaderError) as e: - messagebox.showerror(Constants.DOWNLOAD_ERROR_TITLE, str(e)) + if 'as master playlist' in e.message: + try: + downloader.download_master_playlist() + except M3U8DownloaderWarning as warn: + messagebox.showinfo( + Constants.DOWNLOAD_MASTER_IDENTIFIED_TITLE, Constants.DOWNLOAD_MASTER_IDENTIFIED_MESSAGE + ) + formatted_variants = [ + ( + f'Name: {variant.get("Name", "")} | ' + f'Bandwidth: {variant.get("bandwidth", "")} | ' + f'Resolution: {variant.get("resolution", "")}' + ) + for variant in warn.json_data + ] + self.source.show_master_configuration_controls(formatted_variants) + elif 'as playlist' in e.message: + self.source.hide_master_configuration_controls() + downloader.download_playlist() + else: + messagebox.showerror(Constants.DOWNLOAD_ERROR_TITLE, str(e)) finally: self.source.enable_controls() -class AboutUI: - """ - Class for creating an 'About' window in the M3U8 Downloader application. - """ - - def __init__(self, parent: tk.Tk) -> None: - """ - Initialize the AboutUI class. - - :param parent: The parent Tkinter root window. - :type parent: tk.Tk - """ - self.parent = parent - self.window = tk.Toplevel(self.parent) - self.window.title(Constants.ABOUT_TITLE) - self.window.resizable(False, False) - self.window.transient(self.parent) - self.window.grab_set() - - self._set_window_size() - self._set_defaults() - self._set_styles() - self._set_fonts() - self._set_controls() - - def _set_window_size(self) -> None: - """Set the size and position of the about window.""" - self.window_width = Constants.ABOUT_WINDOW_WIDTH - self.window_height = Constants.ABOUT_WINDOW_HEIGHT - screen_width = self.window.winfo_screenwidth() - screen_height = self.window.winfo_screenheight() - x = (screen_width - self.window_width) // 2 - y = (screen_height - self.window_height) // 2 - self.window.geometry(f'{self.window_width}x{self.window_height}+{x}+{y}') - - def _set_defaults(self) -> None: - """Set default values for various attributes.""" - self.header = 'About this app' - self.app_name = 'M3U8 Downloader' - self.app_version = Constants.APP_VERSION - self.copyrights = '© 2024 coldsofttech' - self.license_type = 'MIT License' - self.license_link = 'https://raw.githubusercontent.com/coldsofttech/pym3u8downloaderui/main/LICENSE' - - def _set_styles(self) -> None: - """Set styles for the about window.""" - self.window.tk_setPalette( - background=Constants.APP_PALETTE_BACKGROUND, foreground=Constants.APP_PALETTE_FOREGROUND - ) - self.style = ttk.Style() - self.style.theme_use(Constants.APP_THEME) - - self.no_background_style = ttk.Style() - self.no_background_style.configure('NoBackground.TLabel', background=self.window.cget('background')) - - def _set_fonts(self) -> None: - """Set font styles for labels.""" - self.font_header_style = (Constants.APP_LABEL_FONT_TYPE, 15, Constants.APP_LABEL_FONT_STYLE) - self.font_label_style = (Constants.APP_LABEL_FONT_TYPE, 10) - - def _set_controls(self) -> None: - """Set up various controls/widgets in the about window.""" - self.window.rowconfigure(0, minsize=Constants.APP_ROW_MIN_SIZE) - - self.header_label = ttk.Label( - self.window, text=self.header, font=self.font_header_style, style='NoBackground.TLabel' - ) - self.header_label.grid(row=1, column=0, sticky=tk.W, padx=Constants.APP_PADDING) - - self.window.rowconfigure(2, minsize=Constants.APP_ROW_MIN_SIZE) - - self._show_icon() - - self.window.rowconfigure(4, minsize=Constants.APP_ROW_MIN_SIZE) - - self.app_name_label = ttk.Label( - self.window, text=f'{self.app_name} {self.app_version}', font=self.font_label_style, - style='NoBackground.TLabel' - ) - self.app_name_label.grid(row=5, column=0, sticky=tk.W, padx=Constants.APP_PADDING) - - self.copyright_label = ttk.Label( - self.window, text=self.copyrights, font=self.font_label_style, style='NoBackground.TLabel' - ) - self.copyright_label.grid(row=6, column=0, sticky=tk.W, padx=Constants.APP_PADDING) - - self.window.rowconfigure(7, minsize=Constants.APP_ROW_MIN_SIZE) - - self.license_label = ttk.Label( - self.window, text=self.license_type, foreground='blue', cursor='hand2', font=self.font_label_style, - style='NoBackground.TLabel' - ) - self.license_label.grid(row=8, column=0, sticky=tk.W, padx=Constants.APP_PADDING) - self.license_label.bind('', self._open_license) - - def _show_icon(self) -> None: - """Show icon for the application.""" - import requests - - try: - response = requests.get(Constants.APP_ICON_IMAGE_FILE_PATH) - if response.status_code == 200: - image_data = response.content - self.image = tk.PhotoImage(data=image_data) - self.image = self.image.subsample(int(self.image.width() / 64), int(self.image.height() / 64)) - - self.icon_label = ttk.Label(self.window, image=self.image) - self.icon_label.image = self.image - self.icon_label.grid(row=3, column=0, sticky=tk.W, padx=Constants.APP_PADDING) - except requests.RequestException: - pass - - def _open_license(self, event) -> None: - """ - Open the license link in a web browser. - - :param event: Mouse click event. - :type event: tkinter.Event - :return: None - """ - webbrowser.open(self.license_link) - - def main(): root = tk.Tk() M3U8DownloaderUI(root) diff --git a/tests/unit/test_aboutui.py b/tests/test_aboutui.py similarity index 100% rename from tests/unit/test_aboutui.py rename to tests/test_aboutui.py diff --git a/tests/unit/test_downloadthread.py b/tests/test_downloadthread.py similarity index 91% rename from tests/unit/test_downloadthread.py rename to tests/test_downloadthread.py index 4d1a6d7..59f7c4c 100644 --- a/tests/unit/test_downloadthread.py +++ b/tests/test_downloadthread.py @@ -15,6 +15,8 @@ def setUp(self): self.root = tk.Tk() self.input_url = 'https://raw.githubusercontent.com/coldsofttech/pym3u8downloader/main/tests/files/index.m3u8' self.output_file = 'video.mp4' + self.verify_ssl = True + self.is_master = False self.source = M3U8DownloaderUI(self.root) self.config_file = 'config.json' @@ -27,7 +29,7 @@ def tearDown(self): @pytest.mark.sequential_order def test__load_config_no_file(self): """Test if load config works as expected when configuration file do not exist""" - thread = DownloadThread(self.input_url, self.output_file, self.source) + thread = DownloadThread(self.input_url, self.output_file, self.verify_ssl, self.is_master, self.source) thread._load_config() self.assertFalse(os.path.exists(self.config_file)) self.assertFalse(thread.skip_space_check) @@ -43,7 +45,7 @@ def test__load_config_skip_space_check(self): with open(self.config_file, 'w') as file: file.write(json.dumps(config)) - thread = DownloadThread(self.input_url, self.output_file, self.source) + thread = DownloadThread(self.input_url, self.output_file, self.verify_ssl, self.is_master, self.source) thread._load_config() self.assertTrue(os.path.exists(self.config_file)) self.assertTrue(thread.skip_space_check) @@ -61,7 +63,7 @@ def test__load_config_debug(self): with open(self.config_file, 'w') as file: file.write(json.dumps(config)) - thread = DownloadThread(self.input_url, self.output_file, self.source) + thread = DownloadThread(self.input_url, self.output_file, self.verify_ssl, self.is_master, self.source) thread._load_config() self.assertTrue(os.path.exists(self.config_file)) self.assertFalse(thread.skip_space_check) @@ -77,7 +79,7 @@ def test__load_config_invalid(self): with open(self.config_file, 'w') as file: file.write(str(config)) - thread = DownloadThread(self.input_url, self.output_file, self.source) + thread = DownloadThread(self.input_url, self.output_file, self.verify_ssl, self.is_master, self.source) with self.assertRaises(json.JSONDecodeError): thread._load_config() finally: diff --git a/tests/unit/test_m3u8downloaderui.py b/tests/test_m3u8downloaderui.py similarity index 100% rename from tests/unit/test_m3u8downloaderui.py rename to tests/test_m3u8downloaderui.py diff --git a/tests/unit/test_stdoutredirector.py b/tests/test_stdoutredirector.py similarity index 100% rename from tests/unit/test_stdoutredirector.py rename to tests/test_stdoutredirector.py