user-scanner 1.0.1.3__py3-none-any.whl → 1.0.1.5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,7 +8,7 @@ def validate_chess_com(user):
8
8
  headers = {
9
9
  'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36",
10
10
  'Accept': "application/json, text/plain, */*",
11
- 'Accept-Encoding': "gzip, deflate, br",
11
+ 'Accept-Encoding': "identity",
12
12
  'Accept-Language': "en-US,en;q=0.9",
13
13
  }
14
14
 
@@ -0,0 +1,63 @@
1
+ import httpx
2
+ from httpx import ConnectError, TimeoutException
3
+ import json
4
+
5
+ def validate_monkeytype(user: str) -> int:
6
+
7
+ url = f"https://api.monkeytype.com/users/checkName/{user}"
8
+
9
+ headers = {
10
+ "User-Agent": (
11
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
12
+ "AppleWebKit/537.36 (KHTML, like Gecko) "
13
+ "Chrome/128.0.0.0 Safari/537.36"
14
+ ),
15
+ "Accept": "application/json, text/plain, */*",
16
+ "Accept-Encoding": "identity",
17
+ "Accept-Language": "en-US,en;q=0.9",
18
+ }
19
+
20
+ try:
21
+ response = httpx.get(url, headers=headers, timeout=3.0)
22
+ status = response.status_code
23
+
24
+ if status == 200:
25
+ data = response.json()
26
+ # Expected shape:
27
+ # { "message": "string", "data": { "available": true/false } }
28
+ payload = data.get("data", {})
29
+ available = payload.get("available")
30
+
31
+ if available is True:
32
+ return 1
33
+ elif available is False:
34
+ return 0
35
+ else:
36
+ return 2
37
+ else:
38
+ return 2
39
+
40
+ except (ConnectError, TimeoutException):
41
+ return 2
42
+ except json.JSONDecodeError:
43
+ return 2
44
+ except Exception:
45
+ return 2
46
+
47
+
48
+ if __name__ == "__main__":
49
+ try:
50
+ import httpx # noqa: F401
51
+ except ImportError:
52
+ print("Error: 'httpx' library is not installed.")
53
+ raise SystemExit(1)
54
+
55
+ user = input("Username?: ").strip()
56
+ result = validate_monkeytype(user)
57
+
58
+ if result == 1:
59
+ print("Available!")
60
+ elif result == 0:
61
+ print("Unavailable!")
62
+ else:
63
+ print("Error occurred!")
@@ -26,7 +26,8 @@ def validate_roblox(user):
26
26
  return 2
27
27
 
28
28
  for entry in search_results["data"]: # iterates through the entries in the search results
29
- if entry["name"] == user: # if a username matches the user
29
+ # .lower() so casing from the API doesn't matter
30
+ if entry["name"].lower() == user.lower(): # if a username matches the user
30
31
  return 0
31
32
  return 1
32
33
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: user-scanner
3
- Version: 1.0.1.3
3
+ Version: 1.0.1.5
4
4
  Summary: Check username availability across multiple popular platforms
5
5
  Keywords: username,checker,availability,social,tech,python,user-scanner
6
6
  Author-email: Kaif <kafcodec@gmail.com>
@@ -13,21 +13,32 @@ Project-URL: Homepage, https://github.com/kaifcodec/user-scanner
13
13
 
14
14
  # User Scanner
15
15
 
16
+ ![1000136215](https://github.com/user-attachments/assets/49ec8d24-665b-4115-8525-01a8d0ca2ef4)
17
+ <p align="center">
18
+ <img src="https://img.shields.io/badge/Version-1.0.1.6-blueviolet?style=for-the-badge&logo=github" />
19
+ <img src="https://img.shields.io/github/issues/kaifcodec/user-scanner?style=for-the-badge&logo=github" />
20
+ <img src="https://img.shields.io/badge/Tested%20on-Termux-black?style=for-the-badge&logo=termux" />
21
+ <img src="https://img.shields.io/badge/Tested%20on-Windows-cyan?style=for-the-badge&logo=Windows" />
22
+ <img src="https://img.shields.io/badge/Tested%20on-Linux-balck?style=for-the-badge&logo=Linux" />
23
+ <img src="https://img.shields.io/pepy/dt/user-scanner?style=for-the-badge" />
24
+ </p>
25
+
26
+ ---
27
+
16
28
  Scan a username across multiple social, developer, and creator platforms to see if it’s available.
17
29
  Perfect for finding a **unique username** across GitHub, Twitter, Reddit, Instagram, and more, all in one command.
18
30
 
19
- ---
20
31
 
21
- ## Features
32
+ ### Features
22
33
 
23
34
  - ✅ Check usernames across **social networks**, **developer platforms**, and **creator communities**.
24
35
  - ✅ Clear **Available / Taken / Error** output for each platform.
25
36
  - ✅ Fully modular: add new platform modules easily.
26
37
  - ✅ Command-line interface ready: works directly after `pip install`.
27
-
38
+ - ✅ Can be used as username OSINT tool.
28
39
  ---
29
40
 
30
- ## Installation
41
+ ### Installation
31
42
 
32
43
  ```bash
33
44
  pip install user-scanner
@@ -35,7 +46,7 @@ pip install user-scanner
35
46
 
36
47
  ---
37
48
 
38
- ## Usage
49
+ ### Usage
39
50
 
40
51
  Scan a username across all platforms:
41
52
 
@@ -51,8 +62,52 @@ user-scanner -u <username> -m github
51
62
 
52
63
  ```
53
64
  ---
54
-
55
- ## Contributing
65
+ ### Example Output:
66
+ ```bash
67
+ Checking username: johndoe078
68
+
69
+ == DEV SITES ==
70
+ [✔] Codeberg: Available
71
+ [✔] Cratesio: Available
72
+ [✔] Dockerhub: Available
73
+ [✘] Github: Taken
74
+ [✔] Gitlab: Available
75
+ [✔] Launchpad: Available
76
+ [✔] Npmjs: Available
77
+ [✔] Replit: Available
78
+
79
+ == SOCIAL SITES ==
80
+ [✔] Bluesky: Available
81
+ [✔] Discord: Available
82
+ [✘] Instagram: Taken
83
+ [✔] Mastodon: Available
84
+ [✔] Pinterest: Available
85
+ [✘] Reddit: Taken
86
+ [✔] Snapchat: Available
87
+ [✔] Telegram: Available
88
+ [✘] Threads: Taken
89
+ [✔] X (Twitter): Available
90
+ [✔] Youtube: Available
91
+
92
+ == CREATOR SITES ==
93
+ [✔] Devto: Available
94
+ [✔] Hashnode: Available
95
+ [✔] Kaggle: Available
96
+ [✔] Medium: Available
97
+ [✔] Patreon: Available
98
+
99
+ == COMMUNITY SITES ==
100
+ [✔] Coderlegion: Available
101
+
102
+ == GAMING SITES ==
103
+ [✔] Chess_com: Available
104
+ [✔] Osu: Available
105
+ [✔] Roblox: Available
106
+ ...
107
+ ...
108
+ ...
109
+ ```
110
+ ### Contributing:
56
111
 
57
112
  Modules are organized by category:
58
113
 
@@ -62,6 +117,7 @@ user_scanner/
62
117
  ├── social/ # Social platforms (Twitter/X, Reddit, Instagram, etc.)
63
118
  ├── creator/ # Creator platforms (Hashnode, Dev.to, Medium, etc.)
64
119
  ├── community/ # Community platforms (forums, niche sites)
120
+ ├── gaming/ # Gaming sites (chess.com, and many more(upcoming))
65
121
  ```
66
122
 
67
123
  **Module guidelines:**
@@ -76,15 +132,15 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for examples.
76
132
 
77
133
  ---
78
134
 
79
- ## Dependencies
135
+ ### Dependencies:
80
136
  - [httpx](https://pypi.org/project/httpx/)
81
137
  - [colorama](https://pypi.org/project/colorama/)
82
138
 
83
139
  ---
84
140
 
85
- ## License
141
+ ### License
86
142
 
87
143
  This project is licensed under the **MIT License**. See [LICENSE](LICENSE) for details.
88
144
 
89
- ## ⚠️ `community/` is small looking for contributions
145
+ ## ⚠️ `community/` and `gaming/` are small, looking for contributions
90
146
 
@@ -20,9 +20,10 @@ user_scanner/dev/launchpad.py,sha256=ank50BpTsN7m5_MuQNxAbLpfQOrwjnwS_olO9nhPwgk
20
20
  user_scanner/dev/npmjs.py,sha256=Tv2YgCpuSxJKWEPdcTWwm9CCl2rmfKlGdQe2rnMnXM8,1141
21
21
  user_scanner/dev/replit.py,sha256=GN1Q8PecTzBsd6TpOT-qRnMvKhFTh1P6uCa8CDlXkpw,925
22
22
  user_scanner/gaming/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
- user_scanner/gaming/chess_com.py,sha256=f634Js-KvBVpQC2AOi5TpIR9S5ttxjnAhI6eQtoYtXw,1514
23
+ user_scanner/gaming/chess_com.py,sha256=QDUdijyQQi7fwy6roYWzDyAQv6gbtV-Zh_uZyHXiaR4,1505
24
+ user_scanner/gaming/monkeytype.py,sha256=k4wgDR5lQTJBIcyeMRjPE_F5KC3kJfeAuS2eez43yAs,1665
24
25
  user_scanner/gaming/osu.py,sha256=Jz_s6qNURC-L10-MSfTh6mEywoEqOh8Stvb_bWJR_0I,1239
25
- user_scanner/gaming/roblox.py,sha256=1Chdg5f4C5uWuCcYM6JGt7kxYCRHC8E5OkTgHwFKXC4,1528
26
+ user_scanner/gaming/roblox.py,sha256=eCiAEiC8BaMwcd_6k3PE30FebtsjVCBkvUTZkaaJhHY,1605
26
27
  user_scanner/social/__init__.py,sha256=jaCkFwX1uYtF0ENifVwF8OfHrYYUTm64B9wlBq9BBfQ,9
27
28
  user_scanner/social/bluesky.py,sha256=r5UIFCStlwEM4UxE6cDTrDb5w_EqPCgJ2iYz27GpjA8,2157
28
29
  user_scanner/social/discord.py,sha256=3TaYAzqK9sPKzL_GPzli4P-U22Dwe-mSmeH6kVHJXI4,1137
@@ -35,8 +36,8 @@ user_scanner/social/telegram.py,sha256=QxK2jD2QEvrYmnkxysl_yk7-G6CRWvkK5EnK6n5q3
35
36
  user_scanner/social/threads.py,sha256=QRidTYquAMDHJSg68ySpWCbliRYdWJkbOqn8RfWzFQQ,1231
36
37
  user_scanner/social/x.py,sha256=NetPGmPnWEKv6za9E_Ekah9bAeeFlEeY3qbTJQo7AqE,1560
37
38
  user_scanner/social/youtube.py,sha256=zuyWCy5FtEilaIcUZ4dTCctRR9deFnwwWJkf-h_1K0E,1943
38
- user_scanner-1.0.1.3.dist-info/entry_points.txt,sha256=XqU3kssYZ0vXaPy5qYUOTCu4u-48Xie7QWFpBCYc7Nc,59
39
- user_scanner-1.0.1.3.dist-info/licenses/LICENSE,sha256=XH1QyQG68zo1opDIZHTHcTAbe9XMzewvTaFTukcN9vc,1061
40
- user_scanner-1.0.1.3.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
41
- user_scanner-1.0.1.3.dist-info/METADATA,sha256=-dUlob2LSFuB9TNBCpUBCKua6VEmB1rnoygiK7f3llA,2363
42
- user_scanner-1.0.1.3.dist-info/RECORD,,
39
+ user_scanner-1.0.1.5.dist-info/entry_points.txt,sha256=XqU3kssYZ0vXaPy5qYUOTCu4u-48Xie7QWFpBCYc7Nc,59
40
+ user_scanner-1.0.1.5.dist-info/licenses/LICENSE,sha256=XH1QyQG68zo1opDIZHTHcTAbe9XMzewvTaFTukcN9vc,1061
41
+ user_scanner-1.0.1.5.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
42
+ user_scanner-1.0.1.5.dist-info/METADATA,sha256=G5FcuQ-aGzISWtiVSNT7X3vD4B6ShPiOC1_gJsprzp8,4154
43
+ user_scanner-1.0.1.5.dist-info/RECORD,,