user-scanner 1.0.0.2__py3-none-any.whl → 1.0.0.4__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.
- user_scanner/__main__.py +3 -0
- user_scanner/community/coderlegion.py +39 -0
- user_scanner/core/orchestrator.py +1 -6
- user_scanner/creator/kaggle.py +0 -4
- user_scanner/social/instagram.py +0 -6
- user_scanner/social/pinterest.py +0 -6
- user_scanner/social/reddit.py +0 -6
- user_scanner/social/snapchat.py +0 -6
- user_scanner/social/threads.py +0 -6
- user_scanner/social/x.py +4 -7
- user_scanner/social/youtube.py +0 -6
- {user_scanner-1.0.0.2.dist-info → user_scanner-1.0.0.4.dist-info}/METADATA +1 -1
- {user_scanner-1.0.0.2.dist-info → user_scanner-1.0.0.4.dist-info}/RECORD +16 -15
- {user_scanner-1.0.0.2.dist-info → user_scanner-1.0.0.4.dist-info}/WHEEL +0 -0
- {user_scanner-1.0.0.2.dist-info → user_scanner-1.0.0.4.dist-info}/entry_points.txt +0 -0
- {user_scanner-1.0.0.2.dist-info → user_scanner-1.0.0.4.dist-info}/licenses/LICENSE +0 -0
user_scanner/__main__.py
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import argparse
|
|
2
|
+
import re
|
|
2
3
|
from user_scanner.core.orchestrator import run_checks, load_modules
|
|
3
4
|
from colorama import Fore, Style
|
|
4
5
|
|
|
@@ -59,6 +60,8 @@ def main():
|
|
|
59
60
|
if not args.username:
|
|
60
61
|
print(Fore.RED + "[!] Please provide a username with -u or --username." + Style.RESET_ALL)
|
|
61
62
|
return
|
|
63
|
+
if re.search(r"[^a-zA-Z0-9._-]", args.username):
|
|
64
|
+
print(Fore.RED + f"[!] Username '{args.username}' contains unsupported special characters. X (Twitter) doesn't support these." + Style.RESET_ALL)
|
|
62
65
|
|
|
63
66
|
from user_scanner import dev, social, creator, community
|
|
64
67
|
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import httpx
|
|
2
|
+
from httpx import ConnectError, TimeoutException
|
|
3
|
+
|
|
4
|
+
def validate_coderlegion(user):
|
|
5
|
+
url = f"https://coderlegion.com/user/{user}"
|
|
6
|
+
|
|
7
|
+
headers = {
|
|
8
|
+
'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",
|
|
9
|
+
'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",
|
|
10
|
+
'Accept-Encoding': "gzip, deflate, br",
|
|
11
|
+
'Accept-Language': "en-US,en;q=0.9",
|
|
12
|
+
}
|
|
13
|
+
try:
|
|
14
|
+
response = httpx.get(url, headers=headers, timeout = 15.0)
|
|
15
|
+
status = response.status_code
|
|
16
|
+
|
|
17
|
+
if status == 200:
|
|
18
|
+
return 0
|
|
19
|
+
elif status == 404:
|
|
20
|
+
return 1
|
|
21
|
+
else:
|
|
22
|
+
return 2
|
|
23
|
+
|
|
24
|
+
except (ConnectError, TimeoutException):
|
|
25
|
+
return 2
|
|
26
|
+
except Exception:
|
|
27
|
+
return 2
|
|
28
|
+
|
|
29
|
+
if __name__ == "__main__":
|
|
30
|
+
user = input ("Username?: ").strip()
|
|
31
|
+
result = validate_coderlegion(user)
|
|
32
|
+
|
|
33
|
+
if result == 1:
|
|
34
|
+
print("Available!")
|
|
35
|
+
elif result == 0:
|
|
36
|
+
print("Unavailable!")
|
|
37
|
+
else:
|
|
38
|
+
print("Error occured!")
|
|
39
|
+
|
|
@@ -14,9 +14,7 @@ def load_modules(package):
|
|
|
14
14
|
return modules
|
|
15
15
|
|
|
16
16
|
def run_module_single(module, username):
|
|
17
|
-
|
|
18
|
-
Run a single module's validate_ function on the given username.
|
|
19
|
-
"""
|
|
17
|
+
|
|
20
18
|
func = next((getattr(module, f) for f in dir(module)
|
|
21
19
|
if f.startswith("validate_") and callable(getattr(module, f))), None)
|
|
22
20
|
site_name = module.__name__.split('.')[-1].capitalize()
|
|
@@ -38,9 +36,6 @@ def run_module_single(module, username):
|
|
|
38
36
|
print(f" {Fore.YELLOW}[!] {site_name} has no validate_ function{Style.RESET_ALL}")
|
|
39
37
|
|
|
40
38
|
def run_checks_category(package, username, verbose=False):
|
|
41
|
-
"""
|
|
42
|
-
Run all modules in a given package (category) on the username.
|
|
43
|
-
"""
|
|
44
39
|
modules = load_modules(package)
|
|
45
40
|
category_name = package.__name__.split('.')[-1].capitalize()
|
|
46
41
|
print(f"{Fore.MAGENTA}== {category_name} SITES =={Style.RESET_ALL}")
|
user_scanner/creator/kaggle.py
CHANGED
|
@@ -10,17 +10,13 @@ def validate_kaggle(user):
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
try:
|
|
13
|
-
# Use GET request for maximum fidelity, though we only check status code
|
|
14
13
|
response = httpx.get(url, headers=headers, timeout=3.0, follow_redirects=True)
|
|
15
14
|
status = response.status_code
|
|
16
15
|
|
|
17
|
-
# If a profile exists (Taken) -> 200 OK
|
|
18
16
|
if status == 200:
|
|
19
17
|
return 0
|
|
20
|
-
# If no profile exists (Available) -> 404 Not Found
|
|
21
18
|
elif status == 404:
|
|
22
19
|
return 1
|
|
23
|
-
# Other status codes are errors
|
|
24
20
|
else:
|
|
25
21
|
return 2
|
|
26
22
|
|
user_scanner/social/instagram.py
CHANGED
|
@@ -31,12 +31,6 @@ def validate_instagram(user):
|
|
|
31
31
|
return 2
|
|
32
32
|
|
|
33
33
|
if __name__ == "__main__":
|
|
34
|
-
try:
|
|
35
|
-
import httpx
|
|
36
|
-
except ImportError:
|
|
37
|
-
print("Error: 'httpx' library is not installed.")
|
|
38
|
-
exit()
|
|
39
|
-
|
|
40
34
|
user = input ("Username?: ").strip()
|
|
41
35
|
result = validate_instagram(user)
|
|
42
36
|
|
user_scanner/social/pinterest.py
CHANGED
|
@@ -31,12 +31,6 @@ def validate_pinterest(user):
|
|
|
31
31
|
return 2
|
|
32
32
|
|
|
33
33
|
if __name__ == "__main__":
|
|
34
|
-
try:
|
|
35
|
-
import httpx
|
|
36
|
-
except ImportError:
|
|
37
|
-
print("Error: 'httpx' library is not installed.")
|
|
38
|
-
exit()
|
|
39
|
-
|
|
40
34
|
user = input ("Username?: ").strip()
|
|
41
35
|
result = validate_pinterest(user)
|
|
42
36
|
|
user_scanner/social/reddit.py
CHANGED
|
@@ -31,12 +31,6 @@ def validate_reddit(user):
|
|
|
31
31
|
return 2
|
|
32
32
|
|
|
33
33
|
if __name__ == "__main__":
|
|
34
|
-
try:
|
|
35
|
-
import httpx
|
|
36
|
-
except ImportError:
|
|
37
|
-
print("Error: 'httpx' library is not installed.")
|
|
38
|
-
exit()
|
|
39
|
-
|
|
40
34
|
user = input ("Username?: ").strip()
|
|
41
35
|
result = validate_reddit(user)
|
|
42
36
|
|
user_scanner/social/snapchat.py
CHANGED
|
@@ -37,12 +37,6 @@ def validate_snapchat(user):
|
|
|
37
37
|
return 2
|
|
38
38
|
|
|
39
39
|
if __name__ == "__main__":
|
|
40
|
-
try:
|
|
41
|
-
import httpx
|
|
42
|
-
except ImportError:
|
|
43
|
-
print("Error: 'httpx' library is not installed.")
|
|
44
|
-
exit()
|
|
45
|
-
|
|
46
40
|
user = input ("Username?: ").strip()
|
|
47
41
|
result = validate_snapchat(user)
|
|
48
42
|
|
user_scanner/social/threads.py
CHANGED
|
@@ -31,12 +31,6 @@ def validate_instagram(user):
|
|
|
31
31
|
return 2
|
|
32
32
|
|
|
33
33
|
if __name__ == "__main__":
|
|
34
|
-
try:
|
|
35
|
-
import httpx
|
|
36
|
-
except ImportError:
|
|
37
|
-
print("Error: 'httpx' library is not installed.")
|
|
38
|
-
exit()
|
|
39
|
-
|
|
40
34
|
user = input ("Username?: ").strip()
|
|
41
35
|
result = validate_instagram(user)
|
|
42
36
|
|
user_scanner/social/x.py
CHANGED
|
@@ -18,7 +18,7 @@ def validate_x(user):
|
|
|
18
18
|
|
|
19
19
|
try:
|
|
20
20
|
response = httpx.get(url, params=params, headers=headers, timeout = 3.0)
|
|
21
|
-
|
|
21
|
+
status = response.status_code
|
|
22
22
|
if status in [401, 403, 429]:
|
|
23
23
|
return 2
|
|
24
24
|
|
|
@@ -29,6 +29,9 @@ def validate_x(user):
|
|
|
29
29
|
return 1
|
|
30
30
|
elif data.get('reason') == 'taken':
|
|
31
31
|
return 0
|
|
32
|
+
elif data.get('reason') == "improper_format":
|
|
33
|
+
print(data.get('desc'))
|
|
34
|
+
return 2
|
|
32
35
|
else:
|
|
33
36
|
return 2
|
|
34
37
|
|
|
@@ -38,12 +41,6 @@ def validate_x(user):
|
|
|
38
41
|
return 2
|
|
39
42
|
|
|
40
43
|
if __name__ == "__main__":
|
|
41
|
-
try:
|
|
42
|
-
import httpx
|
|
43
|
-
except ImportError:
|
|
44
|
-
print("Error: 'httpx' library is not installed.")
|
|
45
|
-
exit()
|
|
46
|
-
|
|
47
44
|
user = input ("Username?: ").strip()
|
|
48
45
|
result = validate_x(user)
|
|
49
46
|
|
user_scanner/social/youtube.py
CHANGED
|
@@ -45,12 +45,6 @@ def validate_youtube(user):
|
|
|
45
45
|
return 2
|
|
46
46
|
|
|
47
47
|
if __name__ == "__main__":
|
|
48
|
-
try:
|
|
49
|
-
import httpx
|
|
50
|
-
except ImportError:
|
|
51
|
-
print("Error: 'httpx' library is not installed.")
|
|
52
|
-
exit()
|
|
53
|
-
|
|
54
48
|
user = input ("Username?: ").strip()
|
|
55
49
|
result = validate_youtube(user)
|
|
56
50
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: user-scanner
|
|
3
|
-
Version: 1.0.0.
|
|
3
|
+
Version: 1.0.0.4
|
|
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>
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
user_scanner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
user_scanner/__main__.py,sha256=
|
|
2
|
+
user_scanner/__main__.py,sha256=gTuNDvGcxJxnJgbviOARUN42bhpEZ3j5oUgZBFIYa4U,3164
|
|
3
3
|
user_scanner/community/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
+
user_scanner/community/coderlegion.py,sha256=wva0seSkd4h7kSjIprW0wM7JC0zspFjXGnDHkeIJ3YI,1141
|
|
4
5
|
user_scanner/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
-
user_scanner/core/orchestrator.py,sha256=
|
|
6
|
+
user_scanner/core/orchestrator.py,sha256=5HgT9tP5r6pX8eUOaHOwXeCz0wDTfifyGW_WtNnz6kQ,3194
|
|
6
7
|
user_scanner/creator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
8
|
user_scanner/creator/devto.py,sha256=K9jXlwSlhJxwZomGJB7m8u_22kTejLPJ_-AvwFZahsY,1034
|
|
8
9
|
user_scanner/creator/hashnode.py,sha256=2Q-K9Yuy-6qOoJJPMq3UD0JHP4d9XeO9OGpBeHuMims,1351
|
|
9
|
-
user_scanner/creator/kaggle.py,sha256=
|
|
10
|
+
user_scanner/creator/kaggle.py,sha256=pCq7QQ62wxunEmBIWNjKyWIH2ENXK76BM3zt4HWi0zM,927
|
|
10
11
|
user_scanner/creator/medium.py,sha256=dWNialp0QTo4GRq64afA00G3PDXVOLZM3mnO3WnmR8c,1008
|
|
11
12
|
user_scanner/dev/__init__.py,sha256=qUR0eLwN-gO6oKk-1cmCVT4G_AxUHHMgpV3wJ7URXi4,7
|
|
12
13
|
user_scanner/dev/codeberg.py,sha256=WuGisrD2-OVolXB1T_5Dn-J8Nx5BTX_Fh2MTsK-F7os,930
|
|
@@ -18,15 +19,15 @@ user_scanner/dev/launchpad.py,sha256=ank50BpTsN7m5_MuQNxAbLpfQOrwjnwS_olO9nhPwgk
|
|
|
18
19
|
user_scanner/dev/npmjs.py,sha256=Tv2YgCpuSxJKWEPdcTWwm9CCl2rmfKlGdQe2rnMnXM8,1141
|
|
19
20
|
user_scanner/dev/replit.py,sha256=GN1Q8PecTzBsd6TpOT-qRnMvKhFTh1P6uCa8CDlXkpw,925
|
|
20
21
|
user_scanner/social/__init__.py,sha256=jaCkFwX1uYtF0ENifVwF8OfHrYYUTm64B9wlBq9BBfQ,9
|
|
21
|
-
user_scanner/social/instagram.py,sha256=
|
|
22
|
-
user_scanner/social/pinterest.py,sha256=
|
|
23
|
-
user_scanner/social/reddit.py,sha256=
|
|
24
|
-
user_scanner/social/snapchat.py,sha256=
|
|
25
|
-
user_scanner/social/threads.py,sha256=
|
|
26
|
-
user_scanner/social/x.py,sha256=
|
|
27
|
-
user_scanner/social/youtube.py,sha256=
|
|
28
|
-
user_scanner-1.0.0.
|
|
29
|
-
user_scanner-1.0.0.
|
|
30
|
-
user_scanner-1.0.0.
|
|
31
|
-
user_scanner-1.0.0.
|
|
32
|
-
user_scanner-1.0.0.
|
|
22
|
+
user_scanner/social/instagram.py,sha256=pM0KRsYB_M8FkG0YpQt2LN5P-6A20lVUmZdiDBJpgjA,1234
|
|
23
|
+
user_scanner/social/pinterest.py,sha256=LHCiTmPALPLYXDClz09EBKRREhs5u3CajeFiQg5Vvlg,1168
|
|
24
|
+
user_scanner/social/reddit.py,sha256=DQYWedJeeyUuk-6EARU_52rPQHNkjfSbahOl5AHENa0,1194
|
|
25
|
+
user_scanner/social/snapchat.py,sha256=ZG-SIv6RopT45dudfOm5sRxmV_ihWG1Vh1Z766fm8XE,1527
|
|
26
|
+
user_scanner/social/threads.py,sha256=QRidTYquAMDHJSg68ySpWCbliRYdWJkbOqn8RfWzFQQ,1231
|
|
27
|
+
user_scanner/social/x.py,sha256=tKQYG0UM2RQ8U_xVKSoSmb-dA7guEKoBxMC8C3O9NPc,1399
|
|
28
|
+
user_scanner/social/youtube.py,sha256=zuyWCy5FtEilaIcUZ4dTCctRR9deFnwwWJkf-h_1K0E,1943
|
|
29
|
+
user_scanner-1.0.0.4.dist-info/entry_points.txt,sha256=XqU3kssYZ0vXaPy5qYUOTCu4u-48Xie7QWFpBCYc7Nc,59
|
|
30
|
+
user_scanner-1.0.0.4.dist-info/licenses/LICENSE,sha256=XH1QyQG68zo1opDIZHTHcTAbe9XMzewvTaFTukcN9vc,1061
|
|
31
|
+
user_scanner-1.0.0.4.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
|
|
32
|
+
user_scanner-1.0.0.4.dist-info/METADATA,sha256=LTmpG_Gy0uccOVTfE5O21e77PcdyZg40rPPEbQXRx_k,452
|
|
33
|
+
user_scanner-1.0.0.4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|