import os
import requests

# 设置 HTTP 请求头,模拟浏览器发送请求
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
    'Accept-Language': 'en-US,en;q=0.9,ja-JP;q=0.8,ja;q=0.7',
    'Cache-Control': 'no-cache',
    'Connection': 'keep-alive',
    'Pragma': 'no-cache',
    'Upgrade-Insecure-Requests': '1'
}

# 获取 .m3u8 文件所在的目录路径
dir_path = input('请输入.m3u8文件所在目录的路径:')

# 遍历目录下的所有 .m3u8 文件并进行处理
for file_name in os.listdir(dir_path):
    if file_name.endswith('.m3u8'):
        print(f'处理文件: {file_name}')
        file_path = os.path.join(dir_path, file_name)

        # 读取文件内容到内存中
        with open(file_path, 'r') as f:
            lines = f.readlines()

        # 处理以 'https' 开头的 m3u8 文件
        if lines[0].startswith('https'):
            # 获取 URL
            if 'https' in lines[1]:
                url = lines[1][lines[1].index('https'):lines[1].index('/-/')+3]
            else:
                url = lines[8][lines[8].index('https'):lines[8].index('/-/')+3]

            # 发送请求并进行处理
            response = requests.get(url + 'playlist.m3u8', headers=headers)
            if response.status_code == 200:
                print('成功:' + str(response.status_code))
                new_url = response.url
                new_url = new_url[:new_url.index('playlist.m3u8')]

                # 将所有以 'https' 开头并包含 '/-/' 的 URL 替换为新的 URL
                new_lines = []
                for line in lines:
                    if 'https' in line and '/-/' in line:
                        new_lines.append(line[:line.index('https')] + new_url + line[line.index('/-/')+3:])
                    else:
                        new_lines.append(line)

                # 将处理后的内容写回文件
                with open(file_path, 'w') as f:
                    for line in new_lines:
                        if not line.startswith('#YUMING|https'):
                            f.write(line)
            else:
                print('失效:' + str(response.status_code))

        # 处理以 '#YUMING|https' 开头的 m3u8 文件
        elif lines[0].startswith('#YUMING|https'):
            url = lines[0][lines[0].index('https'):lines[0].index('/-/')+3]
            response = requests.get(url + 'playlist.m3u8', headers=headers)

            # 如果请求成功,则进行替换操作
            if response.status_code == 200:
                print('成功:' + str(response.status_code))
                new_url = response.url
                new_url = new_url[:new_url.index('playlist.m3u8')]

                # 将每行开头的 'media_' 替换为新的 URL + 'media_'
                new_lines = []
                for line in lines:
                    if line.startswith('media_'):
                        new_lines.append(new_url + line)
                    elif not line.startswith('#YUMING|https'):
                        new_lines.append(line)

                # 删除以 '#YUMING|https' 开头的第一行
                new_lines.pop(0)

                # 将处理后的内容写回文件
                with open(file_path, 'w') as f:
                    for line in new_lines:
                        f.write(line)
            else:
                print('失效:' + str(response.status_code))
Python 处理两种类型 .m3u8 文件:替换 URL 和修改内容

原文地址: https://www.cveoy.top/t/topic/nEBd 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录