AquaStream/.github/site-list.py

57 lines
1.8 KiB
Python
Raw Normal View History

2021-10-04 14:57:57 +00:00
#!/usr/bin/python3
from glob import glob
2021-10-04 16:13:23 +00:00
from re import findall, search, compile, sub, DOTALL
2021-10-04 14:57:57 +00:00
# Globals
URL_REGEX = compile("override val mainUrl(?:\:\s?String)?[^\"']+[\"'](https?://[a-zA-Z0-9\.-]+)[\"']")
2021-10-04 16:13:23 +00:00
NAME_REGEX = compile("class (.+?) ?: MainAPI\(\)")
2021-10-04 14:57:57 +00:00
START_MARKER = "<!--SITE LIST START-->"
END_MARKER = "<!--SITE LIST END-->"
GLOB = "app/src/main/java/com/lagradost/cloudstream3/*providers/*Provider.kt"
2021-10-04 16:13:23 +00:00
MAIN_API = "app/src/main/java/com/lagradost/cloudstream3/MainAPI.kt"
API_REGEX = compile("val (?:restrictedA|a)pis = arrayListOf\((.+?)\)(?=\n\n)", DOTALL)
2021-10-04 14:57:57 +00:00
sites = []
2021-10-04 16:13:23 +00:00
enabled_sites = []
with open(MAIN_API, "r", encoding="utf-8") as f:
apis = findall(API_REGEX, f.read())
for api_list in apis:
for api in api_list.split("\n"):
if not api.strip() or api.strip().startswith("/"):
continue
enabled_sites.append(api.strip().split("(")[0])
2021-10-04 14:57:57 +00:00
for path in glob(GLOB):
with open(path, "r", encoding='utf-8') as file:
try:
2021-10-04 16:13:23 +00:00
site_text = file.read()
name = findall(NAME_REGEX, site_text)
if name:
if name[0] not in enabled_sites:
continue
url = search(URL_REGEX, site_text).groups()[0]
sites.append(url)
2021-10-04 14:57:57 +00:00
except Exception as ex:
print("{0}: {1}".format(path, ex))
2021-10-04 16:13:23 +00:00
with open("../README.md", "r+", encoding='utf-8') as readme:
2021-10-04 14:57:57 +00:00
raw = readme.read()
if START_MARKER not in raw or END_MARKER not in raw:
raise RuntimeError("Missing start and end markers")
readme.seek(0)
2021-10-04 16:13:23 +00:00
2021-10-04 14:57:57 +00:00
readme.write(raw.split(START_MARKER)[0])
2021-10-04 14:59:53 +00:00
readme.write(START_MARKER+"\n")
2021-10-04 16:13:23 +00:00
2021-10-04 14:57:57 +00:00
for site in sites:
2021-10-04 16:13:23 +00:00
readme.write(
"- [{0}]({1}) \n".format(sub("^https?://", "", site), site))
2021-10-04 15:03:19 +00:00
readme.write(END_MARKER)
2021-10-04 14:57:57 +00:00
readme.write(raw.split(END_MARKER)[-1])
2021-10-04 16:13:23 +00:00
2021-10-04 15:03:19 +00:00
readme.truncate()