| 67 | run_script(url, num_threads) |
| 68 | |
| 69 | class App(Frame): |
| 70 | def __init__(self, master=None): |
| 71 | super().__init__(master, bg="#1E1E1E") |
| 72 | self.master = master |
| 73 | self.pack(fill=BOTH, expand=True) |
| 74 | self.create_widgets() |
| 75 | self.kick_bots = [] |
| 76 | |
| 77 | def create_widgets(self): |
| 78 | |
| 79 | header_frame = Frame(self, bg="#4E4E4E", height=40) |
| 80 | header_frame.pack(fill=X) |
| 81 | |
| 82 | header_label = Label(header_frame, text="Kick View Bot", font=("Segoe UI", 14), fg="#FFFFFF", bg="#4E4E4E") |
| 83 | header_label.pack(side=LEFT, padx=10) |
| 84 | |
| 85 | content_frame = Frame(self, bg="#2D2D2D") |
| 86 | content_frame.pack(fill=BOTH, expand=True, pady=10, padx=20) |
| 87 | |
| 88 | url_label = Label(content_frame, text="Enter website URL:", font=("Segoe UI", 10), fg="#FFFFFF", bg="#2D2D2D") |
| 89 | url_label.grid(row=0, column=0, pady=5) |
| 90 | |
| 91 | self.url_input = Entry(content_frame, bg="#1E1E1E", fg="#FFFFFF", font=("Segoe UI", 10), borderwidth=0) |
| 92 | self.url_input.grid(row=1, column=0, padx=10) |
| 93 | |
| 94 | tabs_label = Label(content_frame, text="Enter number of tabs to open:", font=("Segoe UI", 10), fg="#FFFFFF", bg="#2D2D2D") |
| 95 | tabs_label.grid(row=2, column=0, pady=5) |
| 96 | |
| 97 | self.tabs_input = Entry(content_frame, bg="#1E1E1E", fg="#FFFFFF", font=("Segoe UI", 10), borderwidth=0) |
| 98 | self.tabs_input.grid(row=3, column=0, padx=10) |
| 99 | |
| 100 | start_button = Button(content_frame, text="Start Bot", font=("Segoe UI", 10), fg="#FFFFFF", bg="#43B581", activebackground="#43B581", borderwidth=0, command=self.start_bot) |
| 101 | start_button.grid(row=4, column=0, pady=10) |
| 102 | |
| 103 | stop_button = Button(content_frame, text="Stop Bot", font=("Segoe UI", 10), fg="#FFFFFF", bg="#F04747", activebackground="#F04747", borderwidth=0, command=self.stop_bot) |
| 104 | stop_button.grid(row=5, column=0, pady=10) |
| 105 | |
| 106 | credits_label = Label(self, text="Made By: AnonX", font=("Segoe UI", 10), fg="#FFFFFF", bg="#1E1E1E") |
| 107 | credits_label.pack(side=BOTTOM, padx=10, pady=10, anchor=SE) |
| 108 | |
| 109 | def start_bot(self): |
| 110 | url = self.url_input.get().strip() |
| 111 | num_tabs = int(self.tabs_input.get().strip()) |
| 112 | |
| 113 | for i in range(0, num_tabs, 4): |
| 114 | tabs_to_open = min(4, num_tabs-i) |
| 115 | for j in range(tabs_to_open): |
| 116 | kickBot = KickBot(url) |
| 117 | t = Thread(target=kickBot.doTest) |
| 118 | t.start() |
| 119 | self.kick_bots.append(kickBot) |
| 120 | sleep(10) |
| 121 | |
| 122 | def stop_bot(self): |
| 123 | for kickBot in self.kick_bots: |
| 124 | kickBot.stop() |
| 125 | for widget in self.winfo_children(): |
| 126 | widget.destroy() |