forked from recloudstream/TestPlugins
-
-
Notifications
You must be signed in to change notification settings - Fork 44
/
KONTROL.py
123 lines (102 loc) · 4.51 KB
/
KONTROL.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# ! Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
from Kekik.cli import konsol
from cloudscraper import CloudScraper
import os, re
class MainUrlUpdater:
def __init__(self, base_dir="."):
self.base_dir = base_dir
self.oturum = CloudScraper()
@property
def eklentiler(self):
return sorted([
dosya for dosya in os.listdir(self.base_dir)
if os.path.isdir(os.path.join(self.base_dir, dosya))
and not dosya.startswith(".")
and dosya not in {"gradle", "CanliTV", "OxAx", "__Temel", "SineWix", "YouTube", "NetflixMirror"}
])
def _kt_dosyasini_bul(self, dizin, dosya_adi):
for kok, alt_dizinler, dosyalar in os.walk(dizin):
if dosya_adi in dosyalar:
return os.path.join(kok, dosya_adi)
return None
@property
def kt_dosyalari(self):
return [
kt_dosya_yolu for eklenti in self.eklentiler
if (kt_dosya_yolu := self._kt_dosyasini_bul(eklenti, f"{eklenti}.kt"))
]
def _mainurl_bul(self, kt_dosya_yolu):
with open(kt_dosya_yolu, "r", encoding="utf-8") as file:
icerik = file.read()
if mainurl := re.search(r'override\s+var\s+mainUrl\s*=\s*"([^"]+)"', icerik):
return mainurl[1]
return None
def _mainurl_guncelle(self, kt_dosya_yolu, eski_url, yeni_url):
with open(kt_dosya_yolu, "r+", encoding="utf-8") as file:
icerik = file.read()
yeni_icerik = icerik.replace(eski_url, yeni_url)
file.seek(0)
file.write(yeni_icerik)
file.truncate()
def _versiyonu_artir(self, build_gradle_yolu):
with open(build_gradle_yolu, "r+", encoding="utf-8") as file:
icerik = file.read()
if version_match := re.search(r'version\s*=\s*(\d+)', icerik):
eski_versiyon = int(version_match[1])
yeni_versiyon = eski_versiyon + 1
yeni_icerik = icerik.replace(f"version = {eski_versiyon}", f"version = {yeni_versiyon}")
file.seek(0)
file.write(yeni_icerik)
file.truncate()
return yeni_versiyon
return None
def _rectv_ver(self):
istek = self.oturum.post(
url = "https://firebaseremoteconfig.googleapis.com/v1/projects/791583031279/namespaces/firebase:fetch",
headers = {
"X-Goog-Api-Key" : "AIzaSyBbhpzG8Ecohu9yArfCO5tF13BQLhjLahc",
"X-Android-Package" : "com.rectv.shot",
"User-Agent" : "Dalvik/2.1.0 (Linux; U; Android 12)",
},
json = {
"appBuild" : "81",
"appInstanceId" : "evON8ZdeSr-0wUYxf0qs68",
"appId" : "1:791583031279:android:1",
}
)
return istek.json().get("entries", {}).get("api_url", "").replace("/api/", "")
@property
def mainurl_listesi(self):
return {
dosya: self._mainurl_bul(dosya) for dosya in self.kt_dosyalari
}
def guncelle(self):
for dosya, mainurl in self.mainurl_listesi.items():
eklenti_adi = dosya.split("/")[0]
print("\n")
konsol.log(f"[~] Kontrol Ediliyor : {eklenti_adi}")
if eklenti_adi == "RecTV":
try:
final_url = self._rectv_ver()
konsol.log(f"[+] Kontrol Edildi : {mainurl}")
except Exception as hata:
konsol.log(f"[!] Kontrol Edilemedi : {mainurl}")
konsol.log(f"[!] {type(hata).__name__} : {hata}")
continue
else:
try:
istek = self.oturum.get(mainurl, allow_redirects=True)
konsol.log(f"[+] Kontrol Edildi : {mainurl}")
except Exception as hata:
konsol.log(f"[!] Kontrol Edilemedi : {mainurl}")
konsol.log(f"[!] {type(hata).__name__} : {hata}")
continue
final_url = istek.url[:-1] if istek.url.endswith("/") else istek.url
if mainurl == final_url:
continue
self._mainurl_guncelle(dosya, mainurl, final_url)
if self._versiyonu_artir(f"{eklenti_adi}/build.gradle.kts"):
konsol.log(f"[»] {mainurl} -> {final_url}")
if __name__ == "__main__":
updater = MainUrlUpdater()
updater.guncelle()