forked from nikyokki/nik-cloudstream
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathKONTROL.py
More file actions
122 lines (101 loc) · 4.44 KB
/
KONTROL.py
File metadata and controls
122 lines (101 loc) · 4.44 KB
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
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", "HQPorner"}
])
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()