├── Penyimpanan ├── Akun.json └── Youtube.json ├── README.md ├── Run.py └── requirements.txt /Penyimpanan/Akun.json: -------------------------------------------------------------------------------- 1 | { 2 | "Username": "Rô Dắc Minh", 3 | "Token": null, 4 | "UniqueID": "9876543210" 5 | } -------------------------------------------------------------------------------- /Penyimpanan/Youtube.json: -------------------------------------------------------------------------------- 1 | { 2 | "Link": "https://youtu.be/lnSuGnsu4xc" 3 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # TikSub - Boost Your TikTok Growth! 🚀🎥 2 | ![TikSub Logo](https://github.com/user-attachments/assets/b31278b3-7904-431c-bc62-523bea099ab1) 3 | 4 | TikSub adalah sebuah alat (tools) yang dirancang untuk membantu Anda mendapatkan **Pengikut (Followers)**, **Like**, dan **Views** di TikTok dengan mudah dan cepat. Alat ini menggunakan layanan dari [Traodoisub](https://traodoisub.com) untuk melakukan pertukaran koin yang dapat digunakan untuk meningkatkan popularitas akun TikTok Anda. 5 | 6 | ## 🛠️ Fitur Utama 7 | - **Dapatkan Pengikut (Followers)**: Tukarkan koin Anda untuk mendapatkan pengikut TikTok. 8 | - **Auto Clicker Support**: Gunakan auto clicker untuk menjalankan misi secara otomatis. 9 | - **Dapatkan Like**: Tukarkan koin Anda untuk mendapatkan like pada video TikTok. 10 | - **Misi Like & Follow**: Jalankan misi Like dan Follow untuk mengumpulkan koin. 11 | - **Dapatkan Views**: Tukarkan koin Anda untuk mendapatkan views pada video TikTok. 12 | 13 | ## 📦 Prasyarat 14 | - **Akun Traodoisub**: Anda perlu memiliki akun di [Traodoisub](https://traodoisub.com) untuk mendapatkan akses token. 15 | - **Auto Clicker**: Disarankan untuk menggunakan auto clicker agar misi dapat dijalankan secara otomatis. 16 | - **Python 3**: Pastikan Python 3 telah terinstal di sistem Anda. 17 | - **Aplikasi TikTok**: Pastikan Anda telah menginstal aplikasi TikTok di perangkat Anda. 18 | 19 | ## 🚀 Instalasi 20 | ```bash 21 | pkg update -y && pkg upgrade -y 22 | pkg install git python-pip 23 | git clone https://github.com/RozhakXD/TikSub.git 24 | cd TikSub 25 | pip install -r requirements.txt 26 | python Run.py 27 | ``` 28 | 29 | ## 📸 Tangkapan Layar 30 | ![FunPic_20250127](https://github.com/user-attachments/assets/62fde05a-ba83-42b8-bab1-0a3b9bba97ee) 31 | 32 | ## 📊 Harga Layanan 33 | | Layanan | Minimal Koin | Minimal Jumlah | 34 | |---------------|--------------|----------------| 35 | | **Followers** | 140,000 | 100 Followers | 36 | | **Likes** | 35,000 | 50 Likes | 37 | | **Views** | 150,000 | 1,000 Views | 38 | 39 | ## 🚨 Disclaimer 40 | Tools ini dirancang untuk membantu Anda meningkatkan engagement di TikTok. Namun, kami tidak bertanggung jawab atas segala bentuk pelanggaran atau blokir yang mungkin terjadi pada akun TikTok Anda. Gunakan tools ini dengan bijak dan sesuai dengan kebijakan TikTok. 41 | 42 | ## ☕ Dukung Saya! 43 | Jika Anda merasa alat ini bermanfaat, Anda bisa mendukung saya dengan memberikan donasi melalui platform berikut: 44 | 45 | - Trakteer: [https://trakteer.id/rozhak_official/tip](https://trakteer.id/rozhak_official/tip) 🍕 46 | - PayPal: [https://paypal.me/rozhak9](https://paypal.me/rozhak9) 💳 47 | - Saweria: [https://saweria.co/rozhak09](https://saweria.co/rozhak09) 🎁 48 | 49 | Setiap donasi sangat dihargai dan akan membantu saya untuk terus mengembangkan alat ini! 🙏 50 | 51 | ## 🙏 Terima Kasih 52 | Terima kasih telah menggunakan **TikSub**! Jika Anda menemukan bug atau memiliki saran untuk pengembangan lebih lanjut, silakan buka [issue](https://github.com/RozhakXD/TikSub/issues) di repository ini. 53 | 54 | ## 📜 Lisensi 55 | Tools ini dilisensikan di bawah [MIT License](LICENSE). Silakan gunakan dan modifikasi sesuai kebutuhan Anda. 56 | -------------------------------------------------------------------------------- /Run.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | try: 3 | from requests.exceptions import RequestException 4 | import requests, os, json, time, re, datetime 5 | from rich import print as Println 6 | from rich.columns import Columns 7 | from rich.panel import Panel 8 | from rich.console import Console 9 | except ModuleNotFoundError as e: 10 | print(f"Error: {str(e).capitalize()}!") 11 | exit() 12 | 13 | MISI = {"JUMLAH": 0} 14 | 15 | class LOGIN: 16 | 17 | def __init__(self) -> None: 18 | pass 19 | 20 | def TIKSUB(self) -> None: 21 | TAMPILKAN_BANNER() 22 | Println(Panel(f"[bold white]Silakan Masukkan Akses Token Traodoisub Pastikan Sudah Benar, Misalnya :[bold green] TDS0nIwEjclBXOzJiOiIXZ2uoiIrIvaFGa69mciojIyV2c1Jye", width=68, style="bold bright_white", title="[bold bright_white]>> [Token TDS] <<", subtitle="[bold bright_white]╭─────", subtitle_align="left")) 23 | token = Console().input("[bold bright_white] ╰─> ") 24 | self.username_traodoisub, self.koin_traodoisub, self.koin_die_traodoisub = self.PERIKSA_KOIN(akses_token=token) 25 | Println(Panel(f"[bold white]Silahkan Masukan Username Tumbal Akun Tiktok, Pastikan Akun Tersebut Tidak Terkunci, Misalnya :[bold green] @rozhak_official", width=68, style="bold bright_white", title="[bold bright_white]>> [Username TT] <<", subtitle="[bold bright_white]╭─────", subtitle_align="left")) 26 | username = Console().input("[bold bright_white] ╰─> ") 27 | self.username_tiktok, self.userid_tiktok = self.TAMBAH_KONFIGURASI(akses_token=token, username=username) 28 | Println( 29 | Panel(f"""[bold white]Username :[bold green] {self.username_traodoisub} 30 | [bold white]Koin :[bold yellow] {self.koin_traodoisub} 31 | [bold white]Tiktok :[bold green] https://www.tiktok.com/@{self.username_tiktok}""", width=68, style="bold bright_white", title="[bold bright_white]>> [Welcome] <<") 32 | ) 33 | with open('Penyimpanan/Akun.json', 'w') as w: 34 | w.write( 35 | json.dumps( 36 | { 37 | "Username": f"{self.username_tiktok}", 38 | "Token": f"{token}", 39 | "UniqueID": f"{self.userid_tiktok}", 40 | }, indent=4 41 | ) 42 | ) 43 | time.sleep(5.5) 44 | return None 45 | 46 | def COOKIES(self, cookies: str) -> None: 47 | try: 48 | headers = { 49 | 'Accept': 'application/json, text/javascript, */*; q=0.01', 50 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', 51 | 'Cookie': cookies, 52 | } 53 | response = json.loads(requests.get('https://traodoisub.com/view/setting/load.php', headers = headers).text)['tokentds'] 54 | except Exception: 55 | Println(Panel(f"[bold red]Maaf, Cookies Traodoisub Yang Anda Masukan Tidak Valid, Silakan Coba Lagi!", width=68, style="bold bright_white", title="[bold bright_white]>> [Cookie Invalid] <<")) 56 | exit() 57 | 58 | def PERIKSA_KOIN(self, akses_token: str) -> tuple: 59 | params = { 60 | 'access_token': f'{akses_token}', 61 | 'fields': 'profile', 62 | } 63 | response = json.loads(requests.get('https://traodoisub.com/api/', params = params).text) 64 | if '\'success\': 200' in str(response): 65 | self.username = response['data']['user'].title() 66 | self.koin = response['data']['xu'] 67 | self.koin_die = response['data']['xudie'] 68 | return ( 69 | self.username, self.koin, self.koin_die 70 | ) 71 | else: 72 | Println(Panel(f"[bold red]Maaf, Sepertinya Akses Token Traodoisub Sudah Tidak Valid, Silak\nan Coba Ambil Token Di Pengaturan Akun Traodoisub!", width=68, style="bold bright_white", title="[bold bright_white]>> [Token Invalid] <<")) 73 | time.sleep(5.5) 74 | self.TIKSUB() 75 | 76 | def TAMBAH_KONFIGURASI(self, akses_token: str, username: str) -> tuple: 77 | params = { 78 | 'access_token': f'{akses_token}', 79 | 'id': self.VALIDASI_USERNAME(username) if username.isnumeric() == False else username, 80 | 'fields': 'tiktok_run', 81 | } 82 | response = json.loads(requests.get('https://traodoisub.com/api/', params=params).text) 83 | if 'Thiếu thông tin truyền vào!' in str(response): 84 | Println(Panel("[bold red]Maaf, Username Tiktok Yang Anda Masukan Tidak Ditemukan, Silakan Coba Masukkan Username Dengan Benar!", width=68, style="bold bright_white", title="[bold bright_white]>> [Wrong Username] <<")) 85 | exit() 86 | elif 'Thao tác quá nhanh vui lòng chậm lại' in str(response): 87 | Println(Panel("[bold red]Maaf, Sistem Kami Terkena Limit Saat Menambahkan Username Ke Kon\nfigurasi, Silakan Coba Lagi Nanti!", width=68, style="bold bright_white", title="[bold bright_white]>> [Username Limits] <<")) 88 | exit() 89 | elif 'Cấu hình thành công!' in str(response): 90 | self.userid, self.username = response['data']['id'], response['data']['uniqueID'] 91 | return ( 92 | self.username, self.userid 93 | ) 94 | elif 'Vui lòng xác minh bạn không phải robot' in str(response): 95 | Println(Panel(f"[bold red]Maaf, Anda Belum Menambahkan Akun Tiktok Tersebut Di Konfiguras\ni, Silakan Untuk Menambahkan Akun Ke Konfigurasi Tiktok!", width=68, style="bold bright_white", title="[bold bright_white]>> [Config Failed] <<")) 96 | exit() 97 | else: 98 | Println(Panel(f"[bold red]{str(response).title()}", width=68, style="bold bright_white", title="[bold bright_white]>> [Error] <<")) 99 | exit() 100 | 101 | def VALIDASI_USERNAME(self, username: str) -> str: 102 | headers = { 103 | 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7', 104 | 'Sec-Fetch-Mode': 'navigate', 105 | 'Accept-Language': 'en-US,en;q=0.9', 106 | 'Sec-Fetch-Site': 'same-origin', 107 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', 108 | 'Sec-Fetch-Dest': 'document', 109 | } 110 | response = requests.get('https://tokcount.com/?user={}'.format(username), headers=headers).text 111 | self.user_id = re.search(r'"userId":"(\d+)"', str(response)) 112 | if self.user_id == None: 113 | Println(Panel(f"[bold red]Maaf, Username Akun Tiktok Ini Tidak Ditemukan, Silahkan Coba Lagi Dan Masukan ID Tiktok Saja!", width=68, style="bold bright_white", title="[bold bright_white]>> [Wrong Username] <<")) 114 | exit() 115 | else: 116 | return f"{self.user_id.group(1)}" 117 | 118 | class TUKARKAN: 119 | 120 | def __init__(self) -> None: 121 | pass 122 | 123 | def PENGIKUT(self, cookies: str, username: str, jumlah: int) -> None: # 140.000 KOIN 124 | headers = { 125 | 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 126 | 'Cookie': f'{cookies}', 127 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', 128 | } 129 | data = { 130 | 'dateTime': str(datetime.datetime.now()).split('.')[0], 131 | 'sl': jumlah, # MINIMAL 100 FOLLOWERS 132 | 'id': 'https://www.tiktok.com/@{}'.format(username.replace('@', '')), 133 | } 134 | response = requests.post('https://traodoisub.com/mua/tiktok_follow/themid.php', data=data, headers=headers) 135 | if 'Mua thành công!' in response.text: 136 | Println(Panel(f"""[bold white]Username :[bold green] {username} 137 | [bold white]Link :[bold yellow] https://www.tiktok.com/@{username.replace('@', '')} 138 | [bold white]Follower :[bold green] +{jumlah}[bold white] >[bold red] Sedang Diproses""", width=68, style="bold bright_white", title="[bold bright_white]>> [Success] <<")) 139 | exit() 140 | elif len(response.text) == 0: 141 | Println(Panel("[bold red]Maaf, Cookies Anda Sudah Tidak Berfungsi Lagi, Silakan Coba Ambil Ulang Cookiesnya!", width=68, style="bold bright_white", title="[bold bright_white]>> [Invalid Cookies] <<")) 142 | exit() 143 | elif response.text == '1': 144 | Println(Panel(f"[bold red]Maaf, Koin Yang Anda Miliki Tidak Cukup Untuk Membeli {jumlah} Pengikut, Silakan Untuk Mencari Koin Dahulu!", width=68, style="bold bright_white", title="[bold bright_white]>> [Insufficient Coins] <<")) 145 | exit() 146 | else: 147 | Println(Panel(f"[bold red]{str(response.text).title()}!", width=68, style="bold bright_white", title="[bold bright_white]>> [Error] <<")) 148 | exit() 149 | 150 | def LIKE(self, cookies: str, video_link: str, jumlah: int) -> None: # 35.000 KOIN 151 | headers = { 152 | 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 153 | 'Cookie': f'{cookies}', 154 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', 155 | } 156 | data = { 157 | 'id': f'{video_link}', 158 | 'dateTime': str(datetime.datetime.now()).split('.')[0], 159 | 'sl': jumlah, # MINIMAL 50 LIKES 160 | } 161 | response = requests.post('https://traodoisub.com/mua/tiktok_like/themid.php', data=data, headers=headers) 162 | if 'Mua thành công!' in response.text: 163 | self.video_id = re.search(r'/(\d+)', str(video_link)).group(1) 164 | Println(Panel(f"""[bold white]Username :[bold green] {re.search(r'/@(.*?)/video', str(video_link)).group(1)} 165 | [bold white]Like :[bold green] +{jumlah}[bold white] >[bold red] Sedang Diproses 166 | [bold white]Video ID :[bold yellow] {self.video_id}""", width=68, style="bold bright_white", title="[bold bright_white]>> [Success] <<")) 167 | exit() 168 | elif len(response.text) == 0: 169 | Println(Panel("[bold red]Maaf, Cookies Anda Sudah Tidak Berfungsi Lagi, Silakan Coba Ambil Ulang Cookiesnya!", width=68, style="bold bright_white", title="[bold bright_white]>> [Invalid Cookies] <<")) 170 | exit() 171 | elif response.text == '1': 172 | Println(Panel(f"[bold red]Maaf, Koin Yang Anda Miliki Tidak Cukup Untuk Membeli {jumlah} Likes, Silakan Untuk Mencari Koin Dahulu!", width=68, style="bold bright_white", title="[bold bright_white]>> [Insufficient Coins] <<")) 173 | exit() 174 | else: 175 | Println(Panel(f"[bold red]{str(response.text).title()}!", width=68, style="bold bright_white", title="[bold bright_white]>> [Error] <<")) 176 | exit() 177 | 178 | def VIEWS(self, cookies: str, video_link: str, jumlah: int) -> None: # 150.000 KOIN 179 | headers = { 180 | 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 181 | 'Cookie': f'{cookies}', 182 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', 183 | } 184 | data = { 185 | 'id': f'{video_link}', 186 | 'dateTime': str(datetime.datetime.now()).split('.')[0], 187 | 'sl': jumlah, # MINIMAL 1000 VIEWS 188 | } 189 | response = requests.post('https://traodoisub.com/mua/tiktok_view/themid.php', data=data, headers=headers) 190 | if 'Dữ liệu không hợp lệ!' in response.text or len(response.text) == 0: 191 | Println(Panel(f"[bold red]Maaf, Koin Yang Anda Miliki Tidak Cukup Untuk Membeli {jumlah} Views, Silakan Untuk Mencari Koin Dahulu!", width=68, style="bold bright_white", title="[bold bright_white]>> [Insufficient Coins] <<")) 192 | exit() 193 | elif 'Mua thành công!' in response.text: 194 | self.video_id = re.search(r'/(\d+)', str(video_link)).group(1) 195 | Println(Panel(f"""[bold white]Username :[bold green] {re.search(r'/@(.*?)/video', str(video_link)).group(1)} 196 | [bold white]Views :[bold green] +{jumlah}[bold white] >[bold red] Sedang Diproses 197 | [bold white]Video ID :[bold yellow] {self.video_id}""", width=68, style="bold bright_white", title="[bold bright_white]>> [Success] <<")) 198 | exit() 199 | elif response.text == '1': 200 | Println(Panel(f"[bold red]Maaf, Koin Yang Anda Miliki Tidak Cukup Untuk Membeli {jumlah} Views, Silakan Untuk Mencari Koin Dahulu!", width=68, style="bold bright_white", title="[bold bright_white]>> [Insufficient Coins] <<")) 201 | exit() 202 | else: 203 | Println(Panel(f"[bold red]{str(response.text).title()}!", width=68, style="bold bright_white", title="[bold bright_white]>> [Error] <<")) 204 | exit() 205 | 206 | class JALANKAN: 207 | 208 | def __init__(self) -> None: 209 | pass 210 | 211 | def FOLLOW_DAN_LIKE(self, akses_token: str, delay: int, type_misi: str, type_cache: str) -> bool: 212 | params = { 213 | 'access_token': f'{akses_token}', 214 | 'fields': f'{type_misi}', 215 | } 216 | response = json.loads(requests.get('https://traodoisub.com/api/', params=params).text) 217 | time.sleep(4.5) 218 | if 'Thao tác quá nhanh vui lòng chậm lại' in str(response): 219 | Println(f"[bold bright_white] ──>[bold red] SISTEM KAMI TERKENA LIMIT, SILAKAN COBA LAGI NANTI! ", end='\r') 220 | time.sleep(10.5) 221 | return False 222 | else: 223 | self.total_misi_sukses = response.get('cache', 0) 224 | MISI['JUMLAH'] = int(self.total_misi_sukses or 0) 225 | 226 | for z in response['data']: 227 | for sleep in range(delay, 0, -1): 228 | Println(f"[bold bright_white] ──>[bold green] TUNGGU {sleep} DETIK! ", end='\r') 229 | time.sleep(1.0) 230 | self.video_id_akun, self.video_link_profile, self.mission_type = z['id'], z['link'], z['type'] 231 | self.status_misi = "MENGIKUTI" if type_misi == 'tiktok_follow' else "MENYUKAI" 232 | Println(f"[bold bright_white] ──>[bold green] {self.status_misi} @{str(self.video_id_akun).split('_')[0]}[bold white]/[bold red]{MISI['JUMLAH']}[bold white]... ", end='\r') 233 | time.sleep(2.5) 234 | 235 | os.system(f'xdg-open {self.video_link_profile}') 236 | time.sleep(5.5) 237 | 238 | params = { 239 | 'access_token': f'{akses_token}', 240 | 'type': f'{type_cache}', 241 | 'id': self.video_id_akun, 242 | } 243 | response2 = json.loads(requests.get('https://traodoisub.com/api/coin/', params=params).text) 244 | MISI['JUMLAH'] = int(response2.get('cache', 0) or 0) 245 | 246 | if int(MISI['JUMLAH']) >= 8: 247 | params = { 248 | 'type': type_cache.split('_CACHE')[0], 249 | 'id': type_cache.replace('_CACHE', '_API'), 250 | 'access_token': f'{akses_token}', 251 | } 252 | response3 = json.loads(requests.get('https://traodoisub.com/api/coin/', params=params).text) 253 | if 'Vui lòng công khai danh sách video đã thích trên tài khoản tiktok rồi quay lại nhận!' in str(response3): 254 | Println(Panel(f"[bold red]Maaf, Sistem Kami Mendeteksi Bahwa Datar Like Tiktok Di Akun Anda Private, Silakan Ubah Ke Stelan Publik!", width=68, style="bold bright_white", title="[bold bright_white]>> [Like Private] <<")) 255 | exit() 256 | elif '\'success\':' in str(response3): 257 | self.job_success = response3['data']['job_success'] 258 | self.total_koin = response3['data']['xu'] 259 | self.tambah_koin = response3['data']['xu_them'] 260 | Println(Panel(f"""[bold white]Username :[bold green] {self.video_id_akun} 261 | [bold white]Koin :[bold green] +{self.tambah_koin}[bold white] >[bold green] {self.total_koin} 262 | [bold white]Job Sukses :[bold yellow] {self.job_success}[bold white] >[bold red] {type_misi}""", width = 68, style="bold bright_white", title = ">>> Sukses <<<")) 263 | time.sleep(2.5) 264 | continue 265 | else: 266 | Println(f"[bold bright_white] ──>[bold red] TERJADI KESALAHAN SAAT MENDAPATKAN KOIN! ", end='\r') 267 | time.sleep(5.5) 268 | continue 269 | else: 270 | Println(f"[bold bright_white] ──>[bold green] ANDA TELAM MENJALANKAN {MISI['JUMLAH']} MISI! ", end='\r') 271 | time.sleep(2.5) 272 | continue 273 | return True 274 | 275 | def TAMPILKAN_BANNER() -> None: 276 | os.system("cls" if os.name == "nt" else "clear") 277 | Println( 278 | Panel(r"""[bold red]●[bold yellow] ●[bold green] ●[bold white] 279 | [bold blue].-,.-.,-. .'( .'( )\.--. .-. /(,-. 280 | [bold blue]) ,, ,. ( \ ) ,')\ ) /( ( ._.' ,' / ) ,' _ ) 281 | [bold blue]\( |( )/ ) ( ( '/ / ) \/(.-,, `-.`. ( ) | ( ( '-' ( 282 | [bold blue] ) \ \ ) ) ( ( _ ) ,_ ( \ ) '._\ ) ) _ ) 283 | [bold blue] \ ( ) \ ( .\ \ `._.-' \( ( '.) ) ( , ( ( '-' / 284 | [bold blue] )/ )/ )/ )/ '._,_.' )/ ._.' )/._.' 285 | [underline white]Tiktok Followers With Traodoisub.com - Coded by Rozhak""", style="bold bright_white", width=68) 286 | ) 287 | return None 288 | 289 | while True: 290 | try: 291 | if not os.path.exists('Penyimpanan/Subscribe.json'): 292 | os.system(f'xdg-open {json.loads(requests.get("https://raw.githubusercontent.com/RozhakXD/TikSub/main/Data/Youtube.json").text)["Link"]}') 293 | time.sleep(3.5) 294 | with open('Penyimpanan/Subscribe.json', 'w+') as files: 295 | json.dump( 296 | {'Status': True}, files, indent=4 297 | ) 298 | except:pass 299 | try: 300 | TAMPILKAN_BANNER() 301 | username_tiktok, akses_token, userid_tiktok = json.loads(open('Penyimpanan/Akun.json', 'r').read())['Username'], json.loads(open('Penyimpanan/Akun.json', 'r').read())['Token'], json.loads(open('Penyimpanan/Akun.json', 'r').read())['UniqueID'] 302 | username_traodoisub, koin_traodoisub, koin_die_traodoisub = LOGIN().PERIKSA_KOIN(akses_token=akses_token) 303 | Println( 304 | Columns( 305 | [ 306 | Panel(f"""[bold white]Username :[bold green] @{username_tiktok[:19]} 307 | [bold white]User :[bold blue] {userid_tiktok[:23]}""", width=34, style = "bold bright_white"), 308 | Panel(f"""[bold white]Username :[bold green] {username_traodoisub[:18]} 309 | [bold white]Koin :[bold yellow] {koin_traodoisub}[bold white] >[bold red] {koin_die_traodoisub}""", width=33, style="bold bright_white"), 310 | ] 311 | ) 312 | ) 313 | except Exception as e: 314 | Println(Panel(f"[bold red]{str(e).title()}", width=68, style="bold bright_white", title="[bold bright_white]>> [Error] <<")) 315 | time.sleep(4.5) 316 | LOGIN().TIKSUB() 317 | continue 318 | 319 | Println(Panel(""" 320 | [bold green]1[bold white]. Tukarkan Koin Ke Followers [bold green]4[bold white]. Jalankan Misi Like Tiktok 321 | [bold green]2[bold white]. Jalankan Misi Follow Tiktok [bold green]5[bold white]. Tukarkan Koin Ke Views 322 | [bold green]3[bold white]. Tukarkan Koin Ke Likes [bold green]6[bold white]. Keluar ([bold red]Exit[bold white]) 323 | """, width = 68, style = "bold bright_white", title="[bold bright_white]>> [Key Features] <<", subtitle="[bold bright_white]╭─────", subtitle_align="left")) 324 | choice = Console().input("[bold bright_white] ╰─> ") 325 | if choice in ["1", "01"]: 326 | try: 327 | if int(koin_traodoisub) > 140000: # 140000 328 | Println(Panel(f"[bold white]Silakan Masukkan Cookie Akun Traodoisub, Pastikan Akun Dalam Keadaan Di Login, Misalnya :[bold green] PHPSESSID=42e236a1ac143d22", width=68, style="bold bright_white", title="[bold bright_white]>> [Cookie TDS] <<", subtitle="[bold bright_white]╭─────", subtitle_align="left")) 329 | cookies = Console().input("[bold bright_white] ╰─> ") 330 | LOGIN().COOKIES(cookies) 331 | Println(Panel(f"[bold white]Silakan Masukkan Username Tumbal Akun Tiktok, Pastikan Akun Tersebut Tidak Terkunci, Misalnya :[bold green] @rozhak_official", width=68, style="bold bright_white", title="[bold bright_white]>> [Username TT] <<", subtitle="[bold bright_white]╭─────", subtitle_align="left")) 332 | username = Console().input("[bold bright_white] ╰─> ").strip() 333 | Println(Panel(f"[bold white]Silahkan Masukan Jumlah Pengikut, Pastikan Hanya Mengisi Angka Dan Untuk Minimum[bold red] 100[bold white] Pengikut, Misalnya :[bold green] 1000 Pengikut", width=68, style="bold bright_white", title="[bold bright_white]>> [Follower Count] <<", subtitle="[bold bright_white]╭─────", subtitle_align="left")) 334 | jumlah = int(Console().input("[bold bright_white] ╰─> ")) 335 | if jumlah < 100: 336 | Println(Panel(f"[bold red]Maaf, Jumlah Minimal Untuk Pembelian Adalah 100, Silakan Coba Untuk Menaikan Jumlah Yang Ingin Anda Beli!", width=68, style="bold bright_white", title="[bold bright_white]>> [Incorrect Quantity] <<")) 337 | break 338 | else: 339 | TUKARKAN().PENGIKUT(cookies=cookies, username=username, jumlah=jumlah) 340 | break 341 | else: 342 | Println(Panel(f"[bold red]Maaf, Minimal Koin Untuk Menukarkan Ke Pengikut Adalah 140k Koin\n, Silakan Jalankan Misi Untuk Mendapatkan Banyak Koin!", width=68, style="bold bright_white", title="[bold bright_white]>> [Insufficient Coins] <<")) 343 | break 344 | except Exception as e: 345 | Println(Panel(f"[bold red]{str(e).title()}", width=68, style="bold bright_white", title="[bold bright_white]>> [Error] <<")) 346 | break 347 | elif choice in ["2", "02"]: 348 | try: 349 | Println(Panel(f"[bold white]Silakan Masukkan Delay Misi Follow, Gunakan Delay Di Atas[bold red] 10 Detik[bold white] Agar Aman, Misalnya :[bold green] 60 Detik", width=68, style="bold bright_white", title="[bold bright_white]>> [Mission Pause] <<", subtitle="[bold bright_white]╭─────", subtitle_align="left")) 350 | delay = int(Console().input("[bold bright_white] ╰─> ")) 351 | Println(Panel(f"[bold white]Jika Anda Tidak Mendapatkan Koin Kemungkinan Akun Tiktok Anda Terblokir Dan Kamu Juga Diwajibkan Untuk Menggunakan[bold red]\nAplikasi Tiktok[bold white] Versi Terbaru Agar Akun Tidak Terkena Spam!", width=68, style="bold bright_white", title="[bold bright_white]>> [Notes] <<")) 352 | while True: 353 | try: 354 | JALANKAN().FOLLOW_DAN_LIKE(akses_token, delay, 'tiktok_follow', 'TIKTOK_FOLLOW_CACHE') 355 | except RequestException: 356 | Println(f"[bold bright_white] ──>[bold red] KONEKSI ERROR! ", end='\r') 357 | time.sleep(10.0) 358 | continue 359 | except KeyboardInterrupt: 360 | Println(f"[bold bright_white] ──>[bold red] BERHENTI! ", end='\r') 361 | time.sleep(2.5) 362 | break 363 | except Exception as e: 364 | Println(Panel(f"[bold red]{str(e).title()}", width=68, style="bold bright_white", title="[bold bright_white]>> [Error] <<")) 365 | break 366 | elif choice in ["3", "03"]: 367 | try: 368 | if int(koin_traodoisub) > 35000: # 35000 369 | Println(Panel(f"[bold white]Silakan Masukkan Cookie Akun Traodoisub, Pastikan Akun Dalam Keadaan Di Login, Misalnya :[bold green] PHPSESSID=42e236a1ac143d22", width=68, style="bold bright_white", title="[bold bright_white]>> [Cookie TDS] <<", subtitle="[bold bright_white]╭─────", subtitle_align="left")) 370 | cookies = Console().input("[bold bright_white] ╰─> ") 371 | LOGIN().COOKIES(cookies) 372 | Println(Panel(f"[bold white]Silahkan Masukan Tautan Video Tiktok Pastikan Akun Tidak Terkunci Dan Tautan Benar, Misalnya :[bold green] https://www.tiktok.com/\n@rozhak_official/video/7216193398015905050", width=68, style="bold bright_white", title="[bold bright_white]>> [Video Link] <<", subtitle="[bold bright_white]╭─────", subtitle_align="left")) 373 | video_url = Console().input("[bold bright_white] ╰─> ").strip() 374 | Println(Panel(f"[bold white]Silahkan Masukan Jumlah Likes, Pastikan Hanya Mengisi Angka Dan Untuk Minimum[bold red] 50[bold white] Likes, Misalnya :[bold green] 100 Likes", width=68, style="bold bright_white", title="[bold bright_white]>> [Likes Count] <<", subtitle="[bold bright_white]╭─────", subtitle_align="left")) 375 | jumlah = int(Console().input("[bold bright_white] ╰─> ")) 376 | if jumlah < 50: 377 | Println(Panel(f"[bold red]Maaf, Jumlah Minimal Untuk Pembelian Adalah 50 Likes, Silakan Coba Untuk Menaikan Jumlah Yang Ingin Anda Beli!", width=68, style="bold bright_white", title="[bold bright_white]>> [Incorrect Quantity] <<")) 378 | break 379 | else: 380 | TUKARKAN().LIKE(cookies=cookies, video_link=video_url, jumlah=jumlah) 381 | break 382 | else: 383 | Println(Panel(f"[bold red]Maaf, Minimal Koin Untuk Menukarkan Ke Likes Adalah 35k Koin, Silakan Jalankan Misi Untuk Mendapatkan Banyak Koin!", width=68, style="bold bright_white", title="[bold bright_white]>> [Insufficient Coins] <<")) 384 | break 385 | except Exception as e: 386 | Println(Panel(f"[bold red]{str(e).title()}", width=68, style="bold bright_white", title="[bold bright_white]>> [Error] <<")) 387 | break 388 | elif choice in ["4", "04"]: 389 | try: 390 | Println(Panel(f"[bold white]Silakan Masukkan Delay Misi Follow, Gunakan Delay Di Atas[bold red] 10 Detik[bold white] Agar Aman, Misalnya :[bold green] 60 Detik", width=68, style="bold bright_white", title="[bold bright_white]>> [Mission Pause] <<", subtitle="[bold bright_white]╭─────", subtitle_align="left")) 391 | delay = int(Console().input("[bold bright_white] ╰─> ")) 392 | Println(Panel(f"[bold white]Jika Anda Tidak Mendapatkan Koin Kemungkinan Akun Tiktok Anda Terblokir Dan Kamu Juga Diwajibkan Untuk Menggunakan[bold red]\nAplikasi Tiktok[bold white] Versi Terbaru Agar Akun Tidak Terkena Spam!", width=68, style="bold bright_white", title="[bold bright_white]>> [Notes] <<")) 393 | while True: 394 | try: 395 | JALANKAN().FOLLOW_DAN_LIKE(akses_token, delay, 'tiktok_like', 'TIKTOK_LIKE_CACHE') 396 | except RequestException: 397 | Println(f"[bold bright_white] ──>[bold red] KONEKSI ERROR! ", end='\r') 398 | time.sleep(10.0) 399 | continue 400 | except KeyboardInterrupt: 401 | Println(f"[bold bright_white] ──>[bold red] BERHENTI! ", end='\r') 402 | time.sleep(2.5) 403 | break 404 | except Exception as e: 405 | Println(Panel(f"[bold red]{str(e).title()}", width=68, style="bold bright_white", title="[bold bright_white]>> [Error] <<")) 406 | break 407 | elif choice in ["5", "05"]: 408 | try: 409 | if int(koin_traodoisub) > 150000: # 150000 410 | Println(Panel(f"[bold white]Silakan Masukkan Cookie Akun Traodoisub, Pastikan Akun Dalam Keadaan Di Login, Misalnya :[bold green] PHPSESSID=42e236a1ac143d22", width=68, style="bold bright_white", title="[bold bright_white]>> [Cookie TDS] <<", subtitle="[bold bright_white]╭─────", subtitle_align="left")) 411 | cookies = Console().input("[bold bright_white] ╰─> ") 412 | LOGIN().COOKIES(cookies) 413 | Println(Panel(f"[bold white]Silahkan Masukan Tautan Video Tiktok Pastikan Akun Tidak Terkunci Dan Tautan Benar, Misalnya :[bold green] https://www.tiktok.com/\n@rozhak_official/video/7216193398015905050", width=68, style="bold bright_white", title="[bold bright_white]>> [Video Link] <<", subtitle="[bold bright_white]╭─────", subtitle_align="left")) 414 | video_url = Console().input("[bold bright_white] ╰─> ") 415 | Println(Panel(f"[bold white]Silahkan Masukan Jumlah Views, Pastikan Hanya Mengisi Angka Dan Untuk Minimum[bold red] 1000[bold white] Views, Misalnya :[bold green] 5000 Views", width=68, style="bold bright_white", title="[bold bright_white]>> [Views Count] <<", subtitle="[bold bright_white]╭─────", subtitle_align="left")) 416 | jumlah = int(Console().input("[bold bright_white] ╰─> ")) 417 | if jumlah < 1000: 418 | Println(Panel(f"[bold red]Maaf, Jumlah Minimal Untuk Pembelian Adalah 1k Views, Silakan Coba Untuk Menaikan Jumlah Yang Ingin Anda Beli!", width=68, style="bold bright_white", title="[bold bright_white]>> [Incorrect Quantity] <<")) 419 | break 420 | else: 421 | TUKARKAN().VIEWS(cookies=cookies, video_link=video_url, jumlah=jumlah) 422 | break 423 | else: 424 | Println(Panel(f"[bold red]Maaf, Minimal Koin Untuk Menukarkan Ke Views Adalah 150k Koin, Silakan Jalankan Misi Untuk Mendapatkan Banyak Koin!", width=68, style="bold bright_white", title="[bold bright_white]>> [Insufficient Coins] <<")) 425 | break 426 | except Exception as e: 427 | Println(Panel(f"[bold red]{str(e).title()}", width=68, style="bold bright_white", title="[bold bright_white]>> [Error] <<")) 428 | break 429 | elif choice in ["6", "06"]: 430 | os.remove('Penyimpanan/Akun.json') 431 | Println(Panel(f"[bold white]Terima Kasih Telah Menggunakan Tools Ini, Semoga Bermanfaat, Sampai Jumpa Lagi!", width=68, style="bold bright_white", title="[bold bright_white]>> [Exit] <<")) 432 | break 433 | else: 434 | Println(Panel(f"[bold red]Maaf, Pilihan Yang Anda Masukan Tidak Tersedia, Silakan Coba Lagi!", width=68, style="bold bright_white", title="[bold bright_white]>> [Error] <<")) 435 | time.sleep(4.5) 436 | continue 437 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | requests 2 | rich 3 | --------------------------------------------------------------------------------