user-scanner 1.0.5.0__py3-none-any.whl → 1.0.6.0__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/__init__.py +0 -1
- user_scanner/__main__.py +17 -12
- user_scanner/cli/banner.py +2 -0
- user_scanner/community/coderlegion.py +15 -14
- user_scanner/core/orchestrator.py +18 -10
- user_scanner/creator/devto.py +13 -11
- user_scanner/creator/hashnode.py +19 -17
- user_scanner/creator/itch_io.py +12 -10
- user_scanner/creator/kaggle.py +12 -11
- user_scanner/creator/medium.py +11 -10
- user_scanner/creator/patreon.py +17 -15
- user_scanner/creator/producthunt.py +16 -14
- user_scanner/dev/codeberg.py +13 -11
- user_scanner/dev/cratesio.py +19 -17
- user_scanner/dev/dockerhub.py +17 -15
- user_scanner/dev/github.py +26 -24
- user_scanner/dev/gitlab.py +14 -12
- user_scanner/dev/launchpad.py +19 -17
- user_scanner/dev/npmjs.py +22 -19
- user_scanner/dev/replit.py +13 -11
- user_scanner/donation/buymeacoffee.py +11 -10
- user_scanner/donation/liberapay.py +36 -0
- user_scanner/gaming/chess_com.py +20 -18
- user_scanner/gaming/minecraft.py +24 -0
- user_scanner/gaming/monkeytype.py +4 -3
- user_scanner/gaming/osu.py +14 -12
- user_scanner/gaming/roblox.py +20 -16
- user_scanner/gaming/steam.py +12 -10
- user_scanner/social/bluesky.py +20 -18
- user_scanner/social/discord.py +12 -13
- user_scanner/social/instagram.py +22 -20
- user_scanner/social/mastodon.py +17 -15
- user_scanner/social/pinterest.py +13 -11
- user_scanner/social/reddit.py +13 -11
- user_scanner/social/snapchat.py +28 -26
- user_scanner/social/telegram.py +13 -11
- user_scanner/social/threads.py +23 -21
- user_scanner/social/x.py +14 -12
- user_scanner/social/youtube.py +37 -34
- user_scanner/utils/update.py +0 -0
- user_scanner/utils/version.py +2 -0
- user_scanner/version.json +1 -1
- {user_scanner-1.0.5.0.dist-info → user_scanner-1.0.6.0.dist-info}/METADATA +6 -7
- user_scanner-1.0.6.0.dist-info/RECORD +55 -0
- user_scanner-1.0.5.0.dist-info/RECORD +0 -52
- {user_scanner-1.0.5.0.dist-info → user_scanner-1.0.6.0.dist-info}/WHEEL +0 -0
- {user_scanner-1.0.5.0.dist-info → user_scanner-1.0.6.0.dist-info}/entry_points.txt +0 -0
- {user_scanner-1.0.5.0.dist-info → user_scanner-1.0.6.0.dist-info}/licenses/LICENSE +0 -0
user_scanner/social/instagram.py
CHANGED
|
@@ -1,27 +1,29 @@
|
|
|
1
|
-
from
|
|
1
|
+
from user_scanner.core.orchestrator import status_validate
|
|
2
|
+
|
|
2
3
|
|
|
3
4
|
def validate_instagram(user):
|
|
4
|
-
|
|
5
|
+
url = f"https://www.instagram.com/api/v1/users/web_profile_info/?username={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
|
+
'X-IG-App-ID': "936619743392459",
|
|
10
|
+
'Accept': "application/json, text/javascript, */*; q=0.01",
|
|
11
|
+
'Accept-Encoding': "gzip, deflate, br",
|
|
12
|
+
'Accept-Language': "en-US,en;q=0.9",
|
|
13
|
+
'X-Requested-With': "XMLHttpRequest",
|
|
14
|
+
'Referer': f"https://www.instagram.com/{user}/",
|
|
15
|
+
}
|
|
5
16
|
|
|
6
|
-
|
|
7
|
-
'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",
|
|
8
|
-
'X-IG-App-ID': "936619743392459",
|
|
9
|
-
'Accept': "application/json, text/javascript, */*; q=0.01",
|
|
10
|
-
'Accept-Encoding': "gzip, deflate, br",
|
|
11
|
-
'Accept-Language': "en-US,en;q=0.9",
|
|
12
|
-
'X-Requested-With': "XMLHttpRequest",
|
|
13
|
-
'Referer': f"https://www.instagram.com/{user}/",
|
|
14
|
-
}
|
|
17
|
+
return status_validate(url, 404, 200, headers=headers)
|
|
15
18
|
|
|
16
|
-
return status_validate(url, 404, 200, headers = headers)
|
|
17
19
|
|
|
18
20
|
if __name__ == "__main__":
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
user = input("Username?: ").strip()
|
|
22
|
+
result = validate_instagram(user)
|
|
21
23
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
if result == 1:
|
|
25
|
+
print("Available!")
|
|
26
|
+
elif result == 0:
|
|
27
|
+
print("Unavailable!")
|
|
28
|
+
else:
|
|
29
|
+
print("Error occured!")
|
user_scanner/social/mastodon.py
CHANGED
|
@@ -1,23 +1,25 @@
|
|
|
1
|
-
from
|
|
1
|
+
from user_scanner.core.orchestrator import status_validate
|
|
2
|
+
|
|
2
3
|
|
|
3
4
|
def validate_mastodon(user):
|
|
4
5
|
url = f"https://mastodon.social/@{user}"
|
|
5
6
|
|
|
6
|
-
return status_validate(url, 404, 200, follow_redirects
|
|
7
|
+
return status_validate(url, 404, 200, follow_redirects=True)
|
|
8
|
+
|
|
7
9
|
|
|
8
10
|
if __name__ == "__main__":
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
try:
|
|
12
|
+
import httpx
|
|
13
|
+
except ImportError:
|
|
14
|
+
print("Error: 'httpx' library is not installed.")
|
|
15
|
+
exit()
|
|
14
16
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
+
user = input("Username?: ").strip()
|
|
18
|
+
result = validate_mastodon(user)
|
|
17
19
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
if result == 1:
|
|
21
|
+
print("Available!")
|
|
22
|
+
elif result == 0:
|
|
23
|
+
print("Unavailable!")
|
|
24
|
+
else:
|
|
25
|
+
print("Error occured!")
|
user_scanner/social/pinterest.py
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
from
|
|
1
|
+
from user_scanner.core.orchestrator import generic_validate
|
|
2
|
+
|
|
2
3
|
|
|
3
4
|
def validate_pinterest(user):
|
|
4
5
|
url = f"https://www.pinterest.com/{user}/"
|
|
@@ -10,17 +11,18 @@ def validate_pinterest(user):
|
|
|
10
11
|
else:
|
|
11
12
|
return 0
|
|
12
13
|
else:
|
|
13
|
-
|
|
14
|
+
return 2
|
|
15
|
+
|
|
16
|
+
return generic_validate(url, process, follow_redirects=True)
|
|
14
17
|
|
|
15
|
-
return generic_validate(url, process, follow_redirects = True)
|
|
16
18
|
|
|
17
19
|
if __name__ == "__main__":
|
|
18
|
-
|
|
19
|
-
|
|
20
|
+
user = input("Username?: ").strip()
|
|
21
|
+
result = validate_pinterest(user)
|
|
20
22
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
if result == 1:
|
|
24
|
+
print("Available!")
|
|
25
|
+
elif result == 0:
|
|
26
|
+
print("Unavailable!")
|
|
27
|
+
else:
|
|
28
|
+
print("Error occured!")
|
user_scanner/social/reddit.py
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
from
|
|
1
|
+
from user_scanner.core.orchestrator import generic_validate
|
|
2
|
+
|
|
2
3
|
|
|
3
4
|
def validate_reddit(user):
|
|
4
5
|
url = f"https://www.reddit.com/user/{user}/"
|
|
@@ -10,17 +11,18 @@ def validate_reddit(user):
|
|
|
10
11
|
else:
|
|
11
12
|
return 0
|
|
12
13
|
else:
|
|
13
|
-
|
|
14
|
+
return 2
|
|
15
|
+
|
|
16
|
+
return generic_validate(url, process, follow_redirects=True)
|
|
14
17
|
|
|
15
|
-
return generic_validate(url, process, follow_redirects = True)
|
|
16
18
|
|
|
17
19
|
if __name__ == "__main__":
|
|
18
|
-
|
|
19
|
-
|
|
20
|
+
user = input("Username?: ").strip()
|
|
21
|
+
result = validate_reddit(user)
|
|
20
22
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
if result == 1:
|
|
24
|
+
print("Available!")
|
|
25
|
+
elif result == 0:
|
|
26
|
+
print("Unavailable!")
|
|
27
|
+
else:
|
|
28
|
+
print("Error occured!")
|
user_scanner/social/snapchat.py
CHANGED
|
@@ -1,33 +1,35 @@
|
|
|
1
|
-
from
|
|
1
|
+
from user_scanner.core.orchestrator import status_validate
|
|
2
|
+
|
|
2
3
|
|
|
3
4
|
def validate_snapchat(user):
|
|
4
|
-
|
|
5
|
+
url = f"https://www.snapchat.com/@{user}"
|
|
6
|
+
|
|
7
|
+
headers = {
|
|
8
|
+
'User-Agent': "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Mobile 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, zstd",
|
|
11
|
+
'sec-ch-ua': "\"Google Chrome\";v=\"141\", \"Not?A_Brand\";v=\"8\", \"Chromium\";v=\"141\"",
|
|
12
|
+
'sec-ch-ua-mobile': "?1",
|
|
13
|
+
'sec-ch-ua-platform': "\"Android\"",
|
|
14
|
+
'upgrade-insecure-requests': "1",
|
|
15
|
+
'sec-fetch-site': "none",
|
|
16
|
+
'sec-fetch-mode': "navigate",
|
|
17
|
+
'sec-fetch-user': "?1",
|
|
18
|
+
'sec-fetch-dest': "document",
|
|
19
|
+
'accept-language': "en-US,en;q=0.9",
|
|
20
|
+
'priority': "u=0, i"
|
|
21
|
+
}
|
|
5
22
|
|
|
6
|
-
|
|
7
|
-
'User-Agent': "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Mobile Safari/537.36",
|
|
8
|
-
'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",
|
|
9
|
-
'Accept-Encoding': "gzip, deflate, br, zstd",
|
|
10
|
-
'sec-ch-ua': "\"Google Chrome\";v=\"141\", \"Not?A_Brand\";v=\"8\", \"Chromium\";v=\"141\"",
|
|
11
|
-
'sec-ch-ua-mobile': "?1",
|
|
12
|
-
'sec-ch-ua-platform': "\"Android\"",
|
|
13
|
-
'upgrade-insecure-requests': "1",
|
|
14
|
-
'sec-fetch-site': "none",
|
|
15
|
-
'sec-fetch-mode': "navigate",
|
|
16
|
-
'sec-fetch-user': "?1",
|
|
17
|
-
'sec-fetch-dest': "document",
|
|
18
|
-
'accept-language': "en-US,en;q=0.9",
|
|
19
|
-
'priority': "u=0, i"
|
|
20
|
-
}
|
|
23
|
+
return status_validate(url, 404, 200, headers=headers, follow_redirects=True)
|
|
21
24
|
|
|
22
|
-
return status_validate(url, 404, 200, headers = headers, follow_redirects = True)
|
|
23
25
|
|
|
24
26
|
if __name__ == "__main__":
|
|
25
|
-
|
|
26
|
-
|
|
27
|
+
user = input("Username?: ").strip()
|
|
28
|
+
result = validate_snapchat(user)
|
|
27
29
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
if result == 1:
|
|
31
|
+
print("Available!")
|
|
32
|
+
elif result == 0:
|
|
33
|
+
print("Unavailable!")
|
|
34
|
+
else:
|
|
35
|
+
print("Error occured!")
|
user_scanner/social/telegram.py
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import re
|
|
2
|
-
from
|
|
2
|
+
from user_scanner.core.orchestrator import generic_validate
|
|
3
|
+
|
|
3
4
|
|
|
4
5
|
def validate_telegram(user: str) -> int:
|
|
5
6
|
"""
|
|
@@ -12,16 +13,17 @@ def validate_telegram(user: str) -> int:
|
|
|
12
13
|
if r.status_code == 200:
|
|
13
14
|
return 0 if re.search(r'<div[^>]*class="tgme_page_extra"[^>]*>', r.text) else 1
|
|
14
15
|
return 2
|
|
15
|
-
|
|
16
|
-
return generic_validate(url, process, follow_redirects
|
|
16
|
+
|
|
17
|
+
return generic_validate(url, process, follow_redirects=True)
|
|
18
|
+
|
|
17
19
|
|
|
18
20
|
if __name__ == "__main__":
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
user = input("Username?: ").strip()
|
|
22
|
+
result = validate_telegram(user)
|
|
21
23
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
if result == 1:
|
|
25
|
+
print("Available!")
|
|
26
|
+
elif result == 0:
|
|
27
|
+
print("Unavailable!")
|
|
28
|
+
else:
|
|
29
|
+
print("Error occured!")
|
user_scanner/social/threads.py
CHANGED
|
@@ -1,27 +1,29 @@
|
|
|
1
|
-
from
|
|
1
|
+
from user_scanner.core.orchestrator import status_validate
|
|
2
|
+
|
|
2
3
|
|
|
3
4
|
def validate_instagram(user):
|
|
4
|
-
|
|
5
|
+
url = f"https://www.threads.com/api/v1/users/web_profile_info/?username={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
|
+
'X-IG-App-ID': "936619743392459",
|
|
10
|
+
'Accept': "application/json, text/javascript, */*; q=0.01",
|
|
11
|
+
'Accept-Encoding': "gzip, deflate, br",
|
|
12
|
+
'Accept-Language': "en-US,en;q=0.9",
|
|
13
|
+
'X-Requested-With': "XMLHttpRequest",
|
|
14
|
+
'Referer': f"https://www.instagram.com/{user}/",
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return status_validate(url, 404, 200, headers=headers)
|
|
5
18
|
|
|
6
|
-
headers = {
|
|
7
|
-
'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",
|
|
8
|
-
'X-IG-App-ID': "936619743392459",
|
|
9
|
-
'Accept': "application/json, text/javascript, */*; q=0.01",
|
|
10
|
-
'Accept-Encoding': "gzip, deflate, br",
|
|
11
|
-
'Accept-Language': "en-US,en;q=0.9",
|
|
12
|
-
'X-Requested-With': "XMLHttpRequest",
|
|
13
|
-
'Referer': f"https://www.instagram.com/{user}/",
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
return status_validate(url, 404, 200, headers = headers)
|
|
17
19
|
|
|
18
20
|
if __name__ == "__main__":
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
user = input("Username?: ").strip()
|
|
22
|
+
result = validate_instagram(user)
|
|
21
23
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
if result == 1:
|
|
25
|
+
print("Available!")
|
|
26
|
+
elif result == 0:
|
|
27
|
+
print("Unavailable!")
|
|
28
|
+
else:
|
|
29
|
+
print("Error occured!")
|
user_scanner/social/x.py
CHANGED
|
@@ -3,6 +3,7 @@ import json
|
|
|
3
3
|
from colorama import Fore, Style
|
|
4
4
|
from httpx import ConnectError, TimeoutException
|
|
5
5
|
|
|
6
|
+
|
|
6
7
|
def validate_x(user):
|
|
7
8
|
url = "https://api.twitter.com/i/users/username_available.json"
|
|
8
9
|
|
|
@@ -18,13 +19,12 @@ def validate_x(user):
|
|
|
18
19
|
}
|
|
19
20
|
|
|
20
21
|
try:
|
|
21
|
-
response = httpx.get(url, params=params, headers=headers, timeout
|
|
22
|
+
response = httpx.get(url, params=params, headers=headers, timeout=3.0)
|
|
22
23
|
status = response.status_code
|
|
23
24
|
# print(response.text)
|
|
24
25
|
if status in [401, 403, 429]:
|
|
25
26
|
return 2
|
|
26
27
|
|
|
27
|
-
|
|
28
28
|
elif status == 200:
|
|
29
29
|
data = response.json()
|
|
30
30
|
if data.get('valid') is True:
|
|
@@ -32,7 +32,8 @@ def validate_x(user):
|
|
|
32
32
|
elif data.get('reason') == 'taken':
|
|
33
33
|
return 0
|
|
34
34
|
elif (data.get('reason') == "improper_format" or data.get('reason') == "invalid_username"):
|
|
35
|
-
print(
|
|
35
|
+
print(
|
|
36
|
+
"\n" + " "+f"{Fore.CYAN}X says: {data.get('desc')}{Style.RESET_ALL}")
|
|
36
37
|
return 2
|
|
37
38
|
else:
|
|
38
39
|
return 2
|
|
@@ -42,13 +43,14 @@ def validate_x(user):
|
|
|
42
43
|
except Exception:
|
|
43
44
|
return 2
|
|
44
45
|
|
|
46
|
+
|
|
45
47
|
if __name__ == "__main__":
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
48
|
+
user = input("Username?: ").strip()
|
|
49
|
+
result = validate_x(user)
|
|
50
|
+
|
|
51
|
+
if result == 1:
|
|
52
|
+
print("Available!")
|
|
53
|
+
elif result == 0:
|
|
54
|
+
print("Unavailable!")
|
|
55
|
+
else:
|
|
56
|
+
print("Error occured!")
|
user_scanner/social/youtube.py
CHANGED
|
@@ -1,56 +1,59 @@
|
|
|
1
1
|
import httpx
|
|
2
2
|
from httpx import ConnectError, TimeoutException
|
|
3
3
|
|
|
4
|
+
|
|
4
5
|
def validate_youtube(user):
|
|
5
6
|
url = f"https://m.youtube.com/@{user}"
|
|
6
7
|
|
|
7
8
|
headers = {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
9
|
+
'User-Agent': "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Mobile Safari/537.36",
|
|
10
|
+
'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",
|
|
11
|
+
'Accept-Encoding': "gzip, deflate, br, zstd",
|
|
12
|
+
'device-memory': "4",
|
|
13
|
+
'sec-ch-ua': "\"Google Chrome\";v=\"141\", \"Not?A_Brand\";v=\"8\", \"Chromium\";v=\"141\"",
|
|
14
|
+
'sec-ch-ua-mobile': "?1",
|
|
15
|
+
'sec-ch-ua-full-version': "\"141.0.7390.111\"",
|
|
16
|
+
'sec-ch-ua-arch': "\"\"",
|
|
17
|
+
'sec-ch-ua-platform': "\"Android\"",
|
|
18
|
+
'sec-ch-ua-platform-version': "\"15.0.0\"",
|
|
19
|
+
'sec-ch-ua-bitness': "\"\"",
|
|
20
|
+
'sec-ch-ua-wow64': "?0",
|
|
21
|
+
'sec-ch-ua-full-version-list': "\"Google Chrome\";v=\"141.0.7390.111\", \"Not?A_Brand\";v=\"8.0.0.0\", \"Chromium\";v=\"141.0.7390.111\"",
|
|
22
|
+
'sec-ch-ua-form-factors': "\"Mobile\"",
|
|
23
|
+
'upgrade-insecure-requests': "1",
|
|
24
|
+
'sec-fetch-site': "none",
|
|
25
|
+
'sec-fetch-mode': "navigate",
|
|
26
|
+
'sec-fetch-user': "?1",
|
|
27
|
+
'sec-fetch-dest': "document",
|
|
28
|
+
'accept-language': "en-US,en;q=0.9",
|
|
29
|
+
'priority': "u=0, i"
|
|
29
30
|
}
|
|
30
31
|
|
|
31
32
|
try:
|
|
32
|
-
response = httpx.get(url, headers=headers,
|
|
33
|
+
response = httpx.get(url, headers=headers,
|
|
34
|
+
follow_redirects=True, timeout=3.0)
|
|
33
35
|
status = response.status_code
|
|
34
36
|
|
|
35
37
|
if status == 200:
|
|
36
|
-
|
|
38
|
+
return 0
|
|
37
39
|
elif status == 404:
|
|
38
|
-
|
|
40
|
+
return 1
|
|
39
41
|
else:
|
|
40
|
-
|
|
42
|
+
return 2
|
|
41
43
|
|
|
42
44
|
except (ConnectError, TimeoutException):
|
|
43
45
|
return 2
|
|
44
46
|
except Exception:
|
|
45
47
|
return 2
|
|
46
48
|
|
|
49
|
+
|
|
47
50
|
if __name__ == "__main__":
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
51
|
+
user = input("Username?: ").strip()
|
|
52
|
+
result = validate_youtube(user)
|
|
53
|
+
|
|
54
|
+
if result == 1:
|
|
55
|
+
print("Available!")
|
|
56
|
+
elif result == 0:
|
|
57
|
+
print("Unavailable!")
|
|
58
|
+
else:
|
|
59
|
+
print("Error occured!")
|
|
File without changes
|
user_scanner/utils/version.py
CHANGED
|
@@ -4,6 +4,7 @@ from pathlib import Path
|
|
|
4
4
|
_SCRIPT_DIR = Path(__file__).resolve().parent
|
|
5
5
|
VERSION_FILE = _SCRIPT_DIR.parent / "version.json"
|
|
6
6
|
|
|
7
|
+
|
|
7
8
|
def load_local_version():
|
|
8
9
|
try:
|
|
9
10
|
data = json.loads(VERSION_FILE.read_text())
|
|
@@ -15,6 +16,7 @@ def load_local_version():
|
|
|
15
16
|
except Exception:
|
|
16
17
|
return "N/A", "error"
|
|
17
18
|
|
|
19
|
+
|
|
18
20
|
if __name__ == "__main__":
|
|
19
21
|
version, version_type = load_local_version()
|
|
20
22
|
print(f"Version: {version}, Type: {version_type}")
|
user_scanner/version.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: user-scanner
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.6.0
|
|
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>
|
|
@@ -15,7 +15,7 @@ Project-URL: Homepage, https://github.com/kaifcodec/user-scanner
|
|
|
15
15
|
|
|
16
16
|

|
|
17
17
|
<p align="center">
|
|
18
|
-
<img src="https://img.shields.io/badge/Version-1.0.
|
|
18
|
+
<img src="https://img.shields.io/badge/Version-1.0.6.0-blueviolet?style=for-the-badge&logo=github" />
|
|
19
19
|
<img src="https://img.shields.io/github/issues/kaifcodec/user-scanner?style=for-the-badge&logo=github" />
|
|
20
20
|
<img src="https://img.shields.io/badge/Tested%20on-Termux-black?style=for-the-badge&logo=termux" />
|
|
21
21
|
<img src="https://img.shields.io/badge/Tested%20on-Windows-cyan?style=for-the-badge&logo=Windows" />
|
|
@@ -81,6 +81,7 @@ user_scanner/
|
|
|
81
81
|
├── creator/ # Creator platforms (Hashnode, Dev.to, Medium, etc.)
|
|
82
82
|
├── community/ # Community platforms (forums, niche sites)
|
|
83
83
|
├── gaming/ # Gaming sites (chess.com, roblox, monkeytype etc.)
|
|
84
|
+
├── donation/ # Donation taking sites (buymeacoffe.com, similar...)
|
|
84
85
|
```
|
|
85
86
|
|
|
86
87
|
**Module guidelines:**
|
|
@@ -109,8 +110,9 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for examples.
|
|
|
109
110
|
This project is licensed under the **MIT License**. See [LICENSE](LICENSE) for details.
|
|
110
111
|
|
|
111
112
|
|
|
112
|
-
|
|
113
|
-
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
### Star History
|
|
114
116
|
|
|
115
117
|
<a href="https://www.star-history.com/#kaifcodec/user-scanner&type=date&legend=top-left">
|
|
116
118
|
<picture>
|
|
@@ -119,7 +121,4 @@ This project is licensed under the **MIT License**. See [LICENSE](LICENSE) for d
|
|
|
119
121
|
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=kaifcodec/user-scanner&type=date&legend=top-left" />
|
|
120
122
|
</picture>
|
|
121
123
|
</a>
|
|
122
|
-
--->
|
|
123
|
-
---
|
|
124
|
-
## ⚠️ `community/` and `gaming/` are small, looking for contributions
|
|
125
124
|
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
user_scanner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
+
user_scanner/__main__.py,sha256=gKu_uqcydd5-9fZta2uL5r69i_BiQgzN43XqHGJyqLQ,3935
|
|
3
|
+
user_scanner/version.json,sha256=55qDhyK3TTdk4-Ht586r_b7p7U6Ptdbapl1izhEzTaw,49
|
|
4
|
+
user_scanner/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
+
user_scanner/cli/banner.py,sha256=3t6owaDArERlvpcszA1Yi3dtksvh8a9tLyrxRowTC40,1499
|
|
6
|
+
user_scanner/community/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
|
+
user_scanner/community/coderlegion.py,sha256=W_bdjzdFPRgUrNFFlylvToSJ4AzaFCtTsUy_MRVDdSo,451
|
|
8
|
+
user_scanner/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
|
+
user_scanner/core/orchestrator.py,sha256=8kaokGxKo8uVemv7KCdrCQyjTXCZh1QrqSTurnlWLqY,4593
|
|
10
|
+
user_scanner/creator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
|
+
user_scanner/creator/devto.py,sha256=mIACmG1a4eoctywxb5p04sI0YVi3dsjCRw9YVOFBEKQ,435
|
|
12
|
+
user_scanner/creator/hashnode.py,sha256=LBg8yRkB-WAVYavfeKWh6R2LWmUHMyXt02BLIXP-C4o,1378
|
|
13
|
+
user_scanner/creator/itch_io.py,sha256=d-s2k410aZtaYQXpTgaKsgQ488Ag9vGJj5buw7XM32I,556
|
|
14
|
+
user_scanner/creator/kaggle.py,sha256=QaXIG02OGxvQZEvwHm50RKNd7joxGOq0Ht3cFfrYEiU,445
|
|
15
|
+
user_scanner/creator/medium.py,sha256=zA8zw7hrH_JOXGM3oW7dfe5kldIRNyeBWZ8UCdAqZlg,1019
|
|
16
|
+
user_scanner/creator/patreon.py,sha256=aneIkwVSc7SFpE8H5HlSDMYQZc-97ZOtGZXrRb4PfWw,589
|
|
17
|
+
user_scanner/creator/producthunt.py,sha256=xgv-LJ97LLmyD2GRw4g3gylUMpOKUW0asbTnULbpZsE,1205
|
|
18
|
+
user_scanner/dev/__init__.py,sha256=qUR0eLwN-gO6oKk-1cmCVT4G_AxUHHMgpV3wJ7URXi4,7
|
|
19
|
+
user_scanner/dev/codeberg.py,sha256=Z6nV0_8xZhMiCcNn9Hn79VVh6y0ar9fqL7KS2b7IaDo,447
|
|
20
|
+
user_scanner/dev/cratesio.py,sha256=mJnlLJoMLlQ7f_95QD7LgH1xCj-e6FooOFkpYypBfG4,724
|
|
21
|
+
user_scanner/dev/dockerhub.py,sha256=sPEnomGiPM2mKv2HsA-9WxaXHjzz21A6ox3IXK1etLc,643
|
|
22
|
+
user_scanner/dev/github.py,sha256=jQ6q9V0snMUzGwIcbYZM_cJfiM8VZNYGm08dlDJqb6g,1113
|
|
23
|
+
user_scanner/dev/gitlab.py,sha256=FBwxrYWZXRkj55r_Dq8ZJLgLVLGrv5WU5k--31b_bz8,1243
|
|
24
|
+
user_scanner/dev/launchpad.py,sha256=N58ioX_dEHq2uwyyGrWnDKWwbqK9_RiuBQ1uWR5cDfg,799
|
|
25
|
+
user_scanner/dev/npmjs.py,sha256=K_bfLnehgaDlroiyMiIT801noRW-AyVISGd8xwMrWTM,1215
|
|
26
|
+
user_scanner/dev/replit.py,sha256=SI_i2l4w9tm2kBX4-cONBAT8dSynXoGEP4zcU8ngnh0,442
|
|
27
|
+
user_scanner/donation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
28
|
+
user_scanner/donation/buymeacoffee.py,sha256=8ZFuE8zjCclNP1C2RejDc4kMauGZpuYkxA1iiphSWKU,522
|
|
29
|
+
user_scanner/donation/liberapay.py,sha256=njClxpbRLZQ_L2-lUYCY6QFnF4IcwfCJPCIg1iEqo7M,1120
|
|
30
|
+
user_scanner/gaming/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
31
|
+
user_scanner/gaming/chess_com.py,sha256=LlZ-cn3wW8ysRSQ7FVnOofnJIgMbIDX_tGkdkNMhUwM,1282
|
|
32
|
+
user_scanner/gaming/minecraft.py,sha256=-mNhKTDwEETZv-IuLo1dHg2NfhFgb9w9-7zvP-HxtAU,601
|
|
33
|
+
user_scanner/gaming/monkeytype.py,sha256=uktLoHEV-wyjR-WsuVvgvrVCDVU3YpCISrhStM9odTU,1428
|
|
34
|
+
user_scanner/gaming/osu.py,sha256=L6LYOY1GyzQ2-KimGnvuT6BEGpY7K0hgV394sy8fvak,560
|
|
35
|
+
user_scanner/gaming/roblox.py,sha256=RnoME2NxMriILh1IiXQCe3J1l_G5Fs2S16YGKHCw3WY,1110
|
|
36
|
+
user_scanner/gaming/steam.py,sha256=-WtY-Wm68pJRW3fseayJfG3XqwGOzuUERuC5yLX16nQ,754
|
|
37
|
+
user_scanner/social/__init__.py,sha256=jaCkFwX1uYtF0ENifVwF8OfHrYYUTm64B9wlBq9BBfQ,9
|
|
38
|
+
user_scanner/social/bluesky.py,sha256=TlKONKmN2lvHRomQAqwkKzlIERSRKCbtPprcD9R_8CQ,1947
|
|
39
|
+
user_scanner/social/discord.py,sha256=iDnle44eyBTgeeyLb6jLysI4S-KRMNbaqDIVC0hCsMU,1135
|
|
40
|
+
user_scanner/social/instagram.py,sha256=GgmKGvi3meKdZ_nQJbJSBZDJTEKSoE6Cn4_VARmo62I,953
|
|
41
|
+
user_scanner/social/mastodon.py,sha256=l3Aixl7DCj_gtAiNzc3wA3pZxI-nP-zzRMuKkuwvTgM,578
|
|
42
|
+
user_scanner/social/pinterest.py,sha256=_Sditb8k1xRhplsN79RIEbZNlzfxIqFD6kGh3nAmVCE,677
|
|
43
|
+
user_scanner/social/reddit.py,sha256=yA7n7GFmS5mr02BOR4DeTmIT5GdnSCbUyaVarV9RMTk,700
|
|
44
|
+
user_scanner/social/snapchat.py,sha256=XEW_W4jEBX4AiHREcfHGstt97Ez3GI-3bKSzhtMyn28,1277
|
|
45
|
+
user_scanner/social/telegram.py,sha256=HU20t0A9jFijOUcdgzXfoNymxDBk2BhAqw7rIhSBfEQ,740
|
|
46
|
+
user_scanner/social/threads.py,sha256=rK8Gm_riDdr0djo23tk38fNVVEBuC6nj2iTXvWrqXeE,951
|
|
47
|
+
user_scanner/social/x.py,sha256=5UYBLmLuFpFeKQYqCkebQKB46GsfiQjV4flAdcrJAps,1591
|
|
48
|
+
user_scanner/social/youtube.py,sha256=nqW1XKZOefpPTDeCvqFTJXP24SjhntIQRlevwuSGLSk,2027
|
|
49
|
+
user_scanner/utils/update.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
50
|
+
user_scanner/utils/version.py,sha256=mPh24EwITyXgD3AMgbflRL180pS0JfrvuJdnoErOU34,623
|
|
51
|
+
user_scanner-1.0.6.0.dist-info/entry_points.txt,sha256=XqU3kssYZ0vXaPy5qYUOTCu4u-48Xie7QWFpBCYc7Nc,59
|
|
52
|
+
user_scanner-1.0.6.0.dist-info/licenses/LICENSE,sha256=XH1QyQG68zo1opDIZHTHcTAbe9XMzewvTaFTukcN9vc,1061
|
|
53
|
+
user_scanner-1.0.6.0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
|
|
54
|
+
user_scanner-1.0.6.0.dist-info/METADATA,sha256=J5aHMpDhRHeJX2BP-gzKi3NafuE7ArjUb-kvLOlaILU,4185
|
|
55
|
+
user_scanner-1.0.6.0.dist-info/RECORD,,
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
user_scanner/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
2
|
-
user_scanner/__main__.py,sha256=kb9df1u6z-7P9fSqx8IjQ9ev8sdOIE-PKnIasEFEeAM,3858
|
|
3
|
-
user_scanner/version.json,sha256=bkIa1xvyVZMemYh2YmYKhEIUB84-Q5MqROhOBjyhyt8,49
|
|
4
|
-
user_scanner/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
-
user_scanner/cli/banner.py,sha256=A3uMAwkyf-WHQH3ki3XlslAxAEMPQYZiIGeawnctZEA,1497
|
|
6
|
-
user_scanner/community/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
|
-
user_scanner/community/coderlegion.py,sha256=k8Ax0QA7WvNYGHv9PYiMpauzsIA9QeuEPAc7EVUyPIU,433
|
|
8
|
-
user_scanner/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
|
-
user_scanner/core/orchestrator.py,sha256=TPDe5Lp-7Lkiznw9dlnVM7GkJD1Oa8lLtaFPlgx4wWE,4586
|
|
10
|
-
user_scanner/creator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
|
-
user_scanner/creator/devto.py,sha256=vN5q9qwVqXvWV8IGEFYBvw3agtvp8_mkUC3vIzvmlO0,412
|
|
12
|
-
user_scanner/creator/hashnode.py,sha256=2Q-K9Yuy-6qOoJJPMq3UD0JHP4d9XeO9OGpBeHuMims,1351
|
|
13
|
-
user_scanner/creator/itch_io.py,sha256=gJRRv135mijvqNcVfN8Z0HcW1dr8fYDveN6FgBBFXgw,536
|
|
14
|
-
user_scanner/creator/kaggle.py,sha256=bgmDtSHL7DVozF9b_Y2fP1Z5UnK1RirC_X7WvTzAhYA,421
|
|
15
|
-
user_scanner/creator/medium.py,sha256=dWNialp0QTo4GRq64afA00G3PDXVOLZM3mnO3WnmR8c,1008
|
|
16
|
-
user_scanner/creator/patreon.py,sha256=Z6RIdGPyZW0J6ZCzNeNOse9-oDYoLUKGj_dMNuqVm9g,563
|
|
17
|
-
user_scanner/creator/producthunt.py,sha256=b9ZbOIfcFhBk34TCSoDEW5_4XLF4yGpJL7Vcg_zA54U,1164
|
|
18
|
-
user_scanner/dev/__init__.py,sha256=qUR0eLwN-gO6oKk-1cmCVT4G_AxUHHMgpV3wJ7URXi4,7
|
|
19
|
-
user_scanner/dev/codeberg.py,sha256=vpVb3Z-5Wm9UYihUWT5cdBN0OE7IgeDxjJs-oRlURiw,424
|
|
20
|
-
user_scanner/dev/cratesio.py,sha256=lQQZ6olJCf2PUSI89SC8Eg4GhKSu7SJ0ABMZXKIssF8,691
|
|
21
|
-
user_scanner/dev/dockerhub.py,sha256=SLqPrFJsjVqRY-LfTmbXCXmo2MhPIn9_8OmtOZMiEk0,614
|
|
22
|
-
user_scanner/dev/github.py,sha256=GXn7NiggcAaYkgGJbKUs4zPwGZsF4gLkbvyKxy8CaLM,1066
|
|
23
|
-
user_scanner/dev/gitlab.py,sha256=oiAIcPNVHet6feUHsP1TzCZwU6S5HYostDscE6DrQNo,1226
|
|
24
|
-
user_scanner/dev/launchpad.py,sha256=dz5--8AFjLcDLe54DiJAAKM4Qcm5b-nKxHHTwKJatIg,766
|
|
25
|
-
user_scanner/dev/npmjs.py,sha256=Tv2YgCpuSxJKWEPdcTWwm9CCl2rmfKlGdQe2rnMnXM8,1141
|
|
26
|
-
user_scanner/dev/replit.py,sha256=vpvp32dBfOtd-GjpeG5PnL2gb1HgTa_pkghQ_hZEIGY,419
|
|
27
|
-
user_scanner/donation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
28
|
-
user_scanner/donation/buymeacoffee.py,sha256=zleXL6fREZc5E3D8URCoxVs1mlFW9_KDoRPdLUPWYQU,502
|
|
29
|
-
user_scanner/gaming/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
30
|
-
user_scanner/gaming/chess_com.py,sha256=rO2ki4fpfF5YuSXZ1a63AEkeHFaZ-92U9nEJwy03wXE,1257
|
|
31
|
-
user_scanner/gaming/monkeytype.py,sha256=_aVGqah48yGmNyDWLDR98gtUCKrLzhPO0FpqIWjlrkE,1422
|
|
32
|
-
user_scanner/gaming/osu.py,sha256=CCz1RGGXgDvOltiygoOgBZ5-9-Ip2lb2pcrk9FdpHu0,547
|
|
33
|
-
user_scanner/gaming/roblox.py,sha256=Jkqg1UiISqPavabitWPgDOFt6z8nBJ57KsEeu55gD6g,1074
|
|
34
|
-
user_scanner/gaming/steam.py,sha256=z8EKfeb3bzb0mc1Uio5J_vyh8tIQYleCsGtxVHQwl6M,731
|
|
35
|
-
user_scanner/social/__init__.py,sha256=jaCkFwX1uYtF0ENifVwF8OfHrYYUTm64B9wlBq9BBfQ,9
|
|
36
|
-
user_scanner/social/bluesky.py,sha256=XDDkDH5hVFDgnIwXR6v-vXxpi6Vhys2THq8mS68TNd0,1929
|
|
37
|
-
user_scanner/social/discord.py,sha256=3TaYAzqK9sPKzL_GPzli4P-U22Dwe-mSmeH6kVHJXI4,1137
|
|
38
|
-
user_scanner/social/instagram.py,sha256=7tT7_78U_rAUiFQWIWQeDEAkhHXYrP_SqLVTRTltTu8,914
|
|
39
|
-
user_scanner/social/mastodon.py,sha256=PlVcpXslLXjkyCRq_Gc2sWF9jGvsgoq7OzUyLzZeK2o,552
|
|
40
|
-
user_scanner/social/pinterest.py,sha256=dXoGdFgEnZCBqLUx7Fciv2NhYacd_qs0uSRxx_1NDRY,655
|
|
41
|
-
user_scanner/social/reddit.py,sha256=LHIQEJ1FUbgRG0PptlzLJfjulBqqCcLDe2jCNQl66KI,678
|
|
42
|
-
user_scanner/social/snapchat.py,sha256=fT5rvUPMvAxYe0c_C_RQyRw9tgHcBg0Q85k6kq-N1Nc,1228
|
|
43
|
-
user_scanner/social/telegram.py,sha256=eDusAA9ub3LSu-CZmDp19t0N7QmTZ_dwYuK5sDKmH5o,723
|
|
44
|
-
user_scanner/social/threads.py,sha256=hRXO5EWF8Oh9sEYUyN-Zy5x7OkHlSnX2nHfyuk9GnOk,915
|
|
45
|
-
user_scanner/social/x.py,sha256=NetPGmPnWEKv6za9E_Ekah9bAeeFlEeY3qbTJQo7AqE,1560
|
|
46
|
-
user_scanner/social/youtube.py,sha256=zuyWCy5FtEilaIcUZ4dTCctRR9deFnwwWJkf-h_1K0E,1943
|
|
47
|
-
user_scanner/utils/version.py,sha256=ou6CF7ndVwEYvSpO4Se-B-71AvVezZcaZJpYFgDQsqM,621
|
|
48
|
-
user_scanner-1.0.5.0.dist-info/entry_points.txt,sha256=XqU3kssYZ0vXaPy5qYUOTCu4u-48Xie7QWFpBCYc7Nc,59
|
|
49
|
-
user_scanner-1.0.5.0.dist-info/licenses/LICENSE,sha256=XH1QyQG68zo1opDIZHTHcTAbe9XMzewvTaFTukcN9vc,1061
|
|
50
|
-
user_scanner-1.0.5.0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
|
|
51
|
-
user_scanner-1.0.5.0.dist-info/METADATA,sha256=W8c8gL9t5kyJtn46gVB2DtDxBwbPSDwg2wQpmRGx8YY,4193
|
|
52
|
-
user_scanner-1.0.5.0.dist-info/RECORD,,
|