有324人阅读过
酒店IPTV直播源获取工具
发布于2024/01/17 更新于2024/01/18
[ 教程仅保证更新时有效,请自行测试。]
发布于2024/01/17 更新于2024/01/18
[ 教程仅保证更新时有效,请自行测试。]
[ 教程仅保证更新时有效,请自行测试。]
下载解压文件后,修改里面的url信息,运行py即可。
附件:
最后一行合并文件功能选择性开启。
代码如下:
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import requests
import json
import re
import os
# 网址:https://fofa.info/
# 搜素关键词:"iptv/live/zh_cn.js" && country="CN" && region="Henan" && city="Zhengzhou"
regions = {
"陕西" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iU2hhYW54aSI%3D",
"湖南" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0i5rmW5Y2XIg%3D%3D",
#"河南" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iaGVuYW4i",
#"安徽" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iQW5odWki",
#"北京" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iQmVpamluZyI%3D",
#"重庆" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iQ2hvbmdxaW5nIg%3D%3D",
#"贵州" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iR3VpemhvdSI%3D",
#"河北" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iSGViZWki",
#"湖北" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iSHViZWki",
#"江苏" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iSmlhbmdzdSI%3D",
#"江西" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iSmlhbmd4aSI%3D",
#"辽宁" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iTGlhb25pbmci",
#"山东" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iU2hhbmRvbmci",
#"上海" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iU2hhbmdoYWki",
#"山西" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iU2hhbnhpIg%3D%3D",
#"四川" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iU2ljaHVhbiI%3D",
#"天津" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iVGlhbmppbiI%3D",
#"云南" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iWXVubmFuIg%3D%3D",
#"浙江" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIHJlZ2lvbj0iWmhlamlhbmci",
#"Zhengzhou" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIGNpdHk9IlpoZW5nemhvdSI%3D",
#"Xinxiang" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIGNpdHk9IlhpbnhpYW5nIg%3D%3D",
#"Luoyang" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIGNpdHk9Ikx1b3lhbmci",
#"Luohe" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIGNpdHk9Ikx1b2hlIg%3D%3D",
#"Xuchang" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIGNpdHk9Ilh1Y2hhbmci",
# "Zhoukou" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIGNpdHk9Ilpob3Vrb3Ui",
#"Pingdingshan" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIGNpdHk9IlBpbmdkaW5nc2hhbiI%3D",
#"Anyang" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIGNpdHk9IkFueWFuZyI%3D",
#"Shangqiu" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIGNpdHk9IlNoYW5ncWl1Ig%3D%3D",
#"Zhumadian" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIGNpdHk9IlpodW1hZGlhbiI%3D",
#"Puyang" : "https://fofa.info/result?qbase64=ImlwdHYvbGl2ZS96aF9jbi5qcyIgJiYgY291bnRyeT0iQ04iICYmIGNpdHk9IlB1eWFuZyI%3D",
}
def process_url(region, url):
# 创建一个Chrome WebDriver实例
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome(options=chrome_options)
# 使用WebDriver访问网页
driver.get(url) # 将网址替换为你要访问的网页地址
time.sleep(10)
# 获取网页内容
page_content = driver.page_source
# 关闭WebDriver
driver.quit()
# 查找所有符合指定格式的网址
pattern = r"http://\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d+" # 设置匹配的格式,如http://8.8.8.8:8888
urls_all = re.findall(pattern, page_content)
urls = list(set(urls_all)) # 去重得到唯一的URL列表
for url in urls:
print(url)
# 遍历网址列表,获取JSON文件并解析
results = []
for url in urls:
try:
# 发送GET请求获取JSON文件,设置超时时间为5秒
json_url = f"{url}/iptv/live/1000.json?key=txiptv"
response = requests.get(json_url, timeout=5)
json_data = response.json()
# 解析JSON文件,获取name和url字段
for item in json_data['data']:
if isinstance(item, dict):
name = item.get('name')
urlx = item.get('url')
urld = f"{url}{urlx}"
if name and urlx:
# 删除特定文字
name = name.replace("中央", "CCTV")
name = name.replace("高清", "")
name = name.replace("标清", "")
name = name.replace("频道", "")
name = name.replace("-", "")
name = name.replace(" ", "")
name = name.replace("PLUS", "+")
name = name.replace("(", "")
name = name.replace(")", "")
results.append(f"{name},{urld}")
except requests.exceptions.RequestException as e:
print(f"Failed to process JSON for URL {json_url}. Error: {str(e)}")
continue
except json.JSONDecodeError as e:
print(f"Failed to parse JSON for URL {url}. Error: {str(e)}")
continue
return results
# 将结果保存到文本文件
def save_results(results, filename):
with open(filename, "w", encoding="utf-8") as file:
for result in results:
file.write(result + "\n")
print(result)
directory = "地区源"
# 文件目录不存在,则创建文件目录
if not os.path.exists(directory):
os.makedirs(directory)
# 删除旧文件
existing_files = os.listdir(directory)
for file_name in existing_files:
file_path = os.path.join(directory, file_name)
if os.path.isfile(file_path):
os.remove(file_path)
for region, url in regions.items():
results = process_url(region, url)
save_results(results, os.path.join(directory, f"{region}.txt"))
# 合并结果成一个文件
def merge_txt_files():
# 获取当前脚本所在目录
script_dir = os.path.dirname(os.path.abspath(__file__))
dir_path = os.path.join(script_dir, "地区源")
# 检查目录是否存在
if not os.path.exists(dir_path):
print(f"目录 '地区源' 不存在.")
return
# 获取目录下所有的txt文件
txt_files = [file for file in os.listdir(dir_path) if file.endswith(".txt")]
# 检查是否有txt文件
if not txt_files:
print(f"目录 '地区源' 中没有找到txt文件.")
return
# 合并文件内容
merged_content = ""
for txt_file in txt_files:
file_path = os.path.join(dir_path, txt_file)
with open(file_path, "r", encoding="utf-8") as file:
merged_content += file.read() + "\n"
# 将合并后的内容写入新文件
merged_file_path = os.path.join(script_dir, "合并源.txt")
with open(merged_file_path, "w", encoding="utf-8") as merged_file:
merged_file.write(merged_content)
print(f"合并完成,合并文件保存在: {merged_file_path}")
# 调用函数
merge_txt_files() 文章对你有帮助吗?
- 一般[0]

- 很赞[0]

- 没用[0]

- 垃圾[0]

- 无语[0]


