Files
streamlink-server/src/encodeurls.py
2025-02-23 20:31:57 -06:00

44 lines
1.7 KiB
Python

import urllib.parse
def encode_url_part(url):
"""Encodes the URL part, preserving URL special characters."""
return urllib.parse.quote(url, safe='~()*!.\'') # Extended safe characters to handle more URL characters
def process_m3u_file(input_file, output_file):
"""Reads the M3U file, encodes the stream URLs, and writes to a new file."""
base_url = 'http://192.168.1.123:6090/stream?url='
with open(input_file, 'r') as file:
lines = file.readlines()
with open(output_file, 'w') as file:
for line in lines:
line = line.strip()
if line.startswith('#EXTINF'):
# Write the #EXTINF line unchanged
file.write(line + '\n')
elif line.startswith(base_url):
# Extract and encode only the part after 'url='
url_part = line[len(base_url):]
print(f"Original URL part: {url_part}") # Debugging statement
# URL decode the part before encoding
url_part = urllib.parse.unquote(url_part)
print(f"Decoded URL part: {url_part}") # Debugging statement
encoded_url_part = encode_url_part(url_part)
print(f"Encoded URL part: {encoded_url_part}") # Debugging statement
encoded_line = f"{base_url}{encoded_url_part}"
file.write(encoded_line + '\n')
else:
# Write other lines unchanged
file.write(line + '\n')
# Define input and output file paths
input_file = 'input.m3u'
output_file = 'output_encoded.m3u'
# Process the M3U file
process_m3u_file(input_file, output_file)