44 lines
1.7 KiB
Python
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)
|