1+ import time
2+ import os
3+ import signal
4+
5+ from utils import webhooks as webhook
6+ from utils import checker
7+ from utils import files
8+ from utils import console
9+ from utils import config
10+
11+ archive_name = ""
12+ checked = 0
13+ available_names = []
14+ unavailable_names = []
15+
16+ def on_exit (signal , frame ):
17+ if len (available_names ) > 0 or len (unavailable_names ) > 0 :
18+ date = time .strftime ("%Y-%m-%d_%H-%M-%S" )
19+ if not os .path .isdir ("output" ): os .mkdir ("output" )
20+ if not os .path .isdir (f"output/{ date } " ): os .mkdir (f"output/{ date } " )
21+
22+ print ()
23+ console .info (f"Finished checking { checked } names" )
24+ console .info (f"Saved lists to output/{ date } " )
25+
26+ if config .get_updates_webhook () != "" :
27+ webhook .send_final_update (checked , available_names , unavailable_names )
28+
29+ if config .get_archives_webhook () != "" :
30+ archive = files .archive_dir (f"output/{ date } " )
31+ webhook .send_archive (archive_name , archive , date ,available_names , unavailable_names )
32+ os .remove (archive )
33+
34+ else :
35+ print ()
36+ console .info ("Exiting..." )
37+
38+ exit (0 )
39+
40+ def main () -> None :
41+ global archive_name , checked , available_names , unavailable_names
42+
43+ console .clear ()
44+ console .resize (65 , 40 )
45+ console .set_title ("MC Name Checker" )
46+ files .check_files ()
47+ console .clear ()
48+ console .checker_banner ()
49+
50+ if config .get_archives_webhook () != "" :
51+ archive_name = console .user_input ("Name for archive webhook: " )
52+
53+ fast = console .user_input ("Fast mode? Could ratelimit webhooks (y/n): " )
54+
55+ if fast == "y" :
56+ console .info ("Fast mode enabled. Use a VPN to prevent IP blocking." )
57+
58+ console .user_input ("Press enter to start checking..." )
59+
60+ console .clear ()
61+ console .checker_banner ()
62+
63+ names = open ("data/names.txt" , "r" ).read ().split ("\n " )
64+
65+ if len (names ) == 0 :
66+ console .error ("No names found" )
67+ return
68+
69+ console .info (f"{ len (names )} names loaded" )
70+ console .info (f"started check, press ctr+c to stop" )
71+ print ()
72+
73+ for name in names :
74+ if not checker .is_valid (name ):
75+ console .error (f"{ name } has a cuss word or is invalid. skipping..." )
76+ continue
77+
78+ available = checker .is_available (name )
79+
80+ if available :
81+ console .available (name )
82+ available_names .append (name )
83+ if config .get_available_webhook () != "" :
84+ webhook .send_available (name )
85+ else :
86+ console .unavailable (name )
87+ unavailable_names .append (name )
88+
89+ console .set_title (f"Available: { len (available_names )} | Unavailable: { len (unavailable_names )} | Checked: { checked } " )
90+ checked += 1
91+
92+ if checked % 50 == 0 :
93+ if config .get_updates_webhook () != "" :
94+ webhook .send_update (checked , available_names , unavailable_names )
95+
96+ if fast .lower () == "y" :
97+ time .sleep (0.01 )
98+ else :
99+ time .sleep (1 )
100+
101+ date = time .strftime ("%Y-%m-%d_%H-%M-%S" )
102+ if not os .path .isdir ("output" ): os .mkdir ("output" )
103+ if not os .path .isdir (f"output/{ date } " ): os .mkdir (f"output/{ date } " )
104+
105+ files .save_lists (date , available_names , unavailable_names )
106+
107+ print ()
108+ console .info (f"Finished checking { checked } names" )
109+ console .info (f"Saved lists to output/{ date } " )
110+
111+ if config .get_updates_webhook () != "" :
112+ webhook .send_final_update (checked , available_names , unavailable_names )
113+
114+ if config .get_archives_webhook () != "" :
115+ archive = files .archive_dir (f"output/{ date } " )
116+ webhook .send_archive (archive_name , archive , date ,available_names , unavailable_names )
117+ os .remove (archive )
118+
119+ if __name__ == "__main__" :
120+ signal .signal (signal .SIGINT , on_exit )
121+ main ()
0 commit comments