-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
- Loading branch information
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
# m3u文件解析脚本 | ||
|
||
支持批量检测.m3u在线文件,并输出可用的直播源 | ||
|
||
# URL 合集 | ||
在`urls`输入可用的m3u直播地址 | ||
```javascript | ||
urls = [ | ||
|
||
] | ||
``` |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
import requests | ||
import random | ||
from time import sleep | ||
from m3u_parser import M3uParser | ||
|
||
|
||
def sleep_random(): | ||
"""随机等待5-10秒防止IP被封""" | ||
sleep_s = random.randint(1, 10) | ||
sleep(sleep_s) | ||
|
||
|
||
def check_url_ok(url): | ||
"""检测连接是否可用""" | ||
useragent = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36" | ||
print("正在检查URL %s" % url) | ||
try: | ||
result = requests.get(url, headers={"User-Agent": useragent}, timeout=10) | ||
return result.status_code == 200 | ||
except requests.exceptions.ConnectionError as e: | ||
print("URL %s 访问超时" % url) | ||
return False | ||
|
||
|
||
# URL 合集 | ||
urls = [ | ||
"https://raw.fastgit.org/qwerttvv/Beijing-IPTV/master/IPTV-Unicom.m3u" | ||
] | ||
|
||
m3u_playlist = M3uParser() | ||
|
||
for url in urls: | ||
m3u_playlist.parse_m3u(url) | ||
m3u_list = map(lambda item: {"name": item.get("name", ""), "url": item.get("url", "")}, m3u_playlist.get_list()) | ||
for m in m3u_list: | ||
sleep_random() | ||
if not check_url_ok(m.get("url")): | ||
continue | ||
print("{name},{url}".format(name=m.get("name"), url=m.get("url", ""))) |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
aiohttp==3.7.3 | ||
async-timeout==3.0.1 | ||
asyncio==3.4.3 | ||
attrs==20.3.0 | ||
certifi==2020.12.5 | ||
chardet==3.0.4 | ||
idna==2.10 | ||
m3u-parser==0.1.1 | ||
multidict==5.1.0 | ||
pycountry==20.7.3 | ||
requests==2.25.0 | ||
typing-extensions==3.7.4.3 | ||
urllib3==1.26.2 | ||
yarl==1.6.3 |