Lsposed_Modules_Updates_Tra.../defs/source.py

51 lines
1.5 KiB
Python
Raw Normal View History

2022-03-19 17:44:35 +00:00
from os import sep
from os.path import exists
from shutil import copyfile
from typing import List
from ci import client, sqlite
from json import load
from defs.format_time import now_time
from defs.utils import Module
new_modules: List[Module] = []
old_modules: List[Module] = []
if exists(f"data{sep}modules.json"):
with open(f"data{sep}modules.json", "r", encoding="utf-8") as file:
new_modules = load(file)
if exists(f"data{sep}old_modules.json"):
with open(f"data{sep}old_modules.json", "r", encoding="utf-8") as file:
old_modules = load(file)
async def update_data() -> None:
global new_modules, old_modules
if exists(f"data{sep}modules.json"):
copyfile(f"data{sep}modules.json", f"data{sep}old_modules.json")
data = await client.get("https://modules.lsposed.org/modules.json")
with open(f"data{sep}modules.json", "w", encoding="utf-8") as f:
f.write(data.text)
data = data.json()
old_modules = new_modules
new_modules = []
for i in data:
new_modules.append(Module(i))
sqlite["update_time"] = now_time()
def compare() -> List[Module]:
data = []
old_data = {i.name: i.latestRelease for i in old_modules}
for i in new_modules:
if i.latestRelease != old_data.get(i.name, ""):
data.append(i)
return data
async def download(url: str, name: str) -> str:
content = await client.get(url)
content = content.content
with open(f"data{sep}{name}", 'wb') as f:
f.write(content)
return f"data{sep}{name}"