-
-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy pathTRGoals.py
113 lines (87 loc) · 4.54 KB
/
TRGoals.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
# ! Bu araç @keyiflerolsun tarafından | @KekikAkademi için yazılmıştır.
from Kekik.cli import konsol
from httpx import Client
from parsel import Selector
import re
class TRGoals:
def __init__(self, m3u_dosyasi):
self.m3u_dosyasi = m3u_dosyasi
self.httpx = Client(timeout=10)
def referer_domainini_al(self):
referer_deseni = r'#EXTVLCOPT:http-referrer=(https?://[^/]*trgoals[^/]*\.[^\s/]+)'
with open(self.m3u_dosyasi, "r") as dosya:
icerik = dosya.read()
if eslesme := re.search(referer_deseni, icerik):
return eslesme[1]
else:
raise ValueError("M3U dosyasında 'trgoals' içeren referer domain bulunamadı!")
def trgoals_domaini_al(self):
istek = self.httpx.post("http://10.0.2.0:1221/api/v1/cf", json={"url": "https://bit.ly/m/taraftarium24hdizle"})
# redirect_url = re.search(r"href=\"([^\"]*redirect[^\"]*)\"", istek.text)[1]
secici = Selector(istek.text)
redirect_url = secici.xpath("(//section[@class='links']/a)[1]/@href").get()
while "bit.ly" in redirect_url:
redirect_url = self.redirect_gec(redirect_url)
return redirect_url
def redirect_gec(self, redirect_url:str):
istek = self.httpx.post("http://10.0.2.0:1221/api/v1/url", json={"url": redirect_url})
redirect_url = istek.json().get("url")
domain = redirect_url[:-1] if redirect_url.endswith("/") else redirect_url
if "error" in domain:
raise ValueError("Redirect domain hatalı..")
return domain
def yeni_domaini_al(self, eldeki_domain: str) -> str:
def check_domain(domain: str) -> str:
if domain == "https://trgoalsgiris.xyz":
raise ValueError("Yeni domain alınamadı")
return domain
try:
# İlk kontrol: Redirect geçiş
yeni_domain = check_domain(self.redirect_gec(eldeki_domain))
except Exception:
konsol.log("[red][!] `redirect_gec(eldeki_domain)` fonksiyonunda hata oluştu.")
try:
# İkinci kontrol: trgoals domainini al
yeni_domain = check_domain(self.trgoals_domaini_al())
except Exception:
konsol.log("[red][!] `trgoals_domaini_al` fonksiyonunda hata oluştu.")
try:
# Üçüncü kontrol: Alternatif bir URL üzerinden redirect geç
yeni_domain = check_domain(self.redirect_gec("https://t.co/JbIFBZKZpO"))
except Exception:
konsol.log("[red][!] `redirect_gec('https://t.co/JbIFBZKZpO')` fonksiyonunda hata oluştu.")
# Son çare: Yeni bir domain üret
rakam = int(eldeki_domain.split("trgoals")[1].split(".")[0]) + 1
yeni_domain = f"https://trgoals{rakam}.xyz"
return yeni_domain
def m3u_guncelle(self):
eldeki_domain = self.referer_domainini_al()
konsol.log(f"[yellow][~] Bilinen Domain : {eldeki_domain}")
yeni_domain = self.yeni_domaini_al(eldeki_domain)
konsol.log(f"[green][+] Yeni Domain : {yeni_domain}")
kontrol_url = f"{yeni_domain}/channel.html?id=yayin1"
with open(self.m3u_dosyasi, "r") as dosya:
m3u_icerik = dosya.read()
if not (eski_yayin_url := re.search(r'https?:\/\/[^\/]+\.(workers\.dev|shop|cfd)\/?', m3u_icerik)):
raise ValueError("M3U dosyasında eski yayın URL'si bulunamadı!")
eski_yayin_url = eski_yayin_url[0]
konsol.log(f"[yellow][~] Eski Yayın URL : {eski_yayin_url}")
response = self.httpx.get(kontrol_url)
if not (yayin_ara := re.search(r'var baseurl = "(https?:\/\/[^"]+)"', response.text)):
secici = Selector(response.text)
baslik = secici.xpath("//title/text()").get()
if baslik == "404 Not Found":
yeni_domain = eldeki_domain
yayin_ara = [None, eski_yayin_url]
else:
konsol.print(response.text)
raise ValueError("Base URL bulunamadı!")
yayin_url = yayin_ara[1]
konsol.log(f"[green][+] Yeni Yayın URL : {yayin_url}")
yeni_m3u_icerik = m3u_icerik.replace(eski_yayin_url, yayin_url)
yeni_m3u_icerik = yeni_m3u_icerik.replace(eldeki_domain, yeni_domain)
with open(self.m3u_dosyasi, "w") as dosya:
dosya.write(yeni_m3u_icerik)
if __name__ == "__main__":
guncelleyici = TRGoals("Kanallar/KekikAkademi.m3u")
guncelleyici.m3u_guncelle()