mirror of
https://github.com/Arrowar/StreamingCommunity.git
synced 2025-06-06 19:45:24 +00:00
54 lines
1.6 KiB
Python
54 lines
1.6 KiB
Python
# 20.03.24
|
|
|
|
import logging
|
|
from urllib.parse import urlparse, urljoin
|
|
|
|
|
|
class M3U8_UrlFix:
|
|
def __init__(self, url: str = None) -> None:
|
|
"""
|
|
Initializes an M3U8_UrlFix object with the provided playlist URL.
|
|
|
|
Args:
|
|
- url (str, optional): The URL of the playlist. Defaults to None.
|
|
"""
|
|
self.url_playlist: str = url
|
|
|
|
def set_playlist(self, url: str) -> None:
|
|
"""
|
|
Set the M3U8 playlist URL.
|
|
|
|
Args:
|
|
- url (str): The M3U8 playlist URL.
|
|
"""
|
|
self.url_playlist = url
|
|
|
|
def generate_full_url(self, url_resource: str) -> str:
|
|
"""
|
|
Generate a full URL for a given resource using the base URL from the playlist.
|
|
|
|
Args:
|
|
- url_resource (str): The relative URL of the resource within the playlist.
|
|
|
|
Returns:
|
|
str: The full URL for the specified resource.
|
|
"""
|
|
|
|
# Check if m3u8 url playlist is present
|
|
if self.url_playlist == None:
|
|
logging.error("[M3U8_UrlFix] Cant generate full url, playlist not present")
|
|
raise
|
|
|
|
# Parse the playlist URL to extract the base URL components
|
|
parsed_playlist_url = urlparse(self.url_playlist)
|
|
|
|
# Construct the base URL using the scheme, netloc, and path from the playlist URL
|
|
base_url = f"{parsed_playlist_url.scheme}://{parsed_playlist_url.netloc}{parsed_playlist_url.path}"
|
|
|
|
# Join the base URL with the relative resource URL to get the full URL
|
|
full_url = urljoin(base_url, url_resource)
|
|
|
|
return full_url
|
|
|
|
# Output
|
|
m3u8_url_fix = M3U8_UrlFix() |