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.
Files changed (48) hide show
  1. user_scanner/__init__.py +0 -1
  2. user_scanner/__main__.py +17 -12
  3. user_scanner/cli/banner.py +2 -0
  4. user_scanner/community/coderlegion.py +15 -14
  5. user_scanner/core/orchestrator.py +18 -10
  6. user_scanner/creator/devto.py +13 -11
  7. user_scanner/creator/hashnode.py +19 -17
  8. user_scanner/creator/itch_io.py +12 -10
  9. user_scanner/creator/kaggle.py +12 -11
  10. user_scanner/creator/medium.py +11 -10
  11. user_scanner/creator/patreon.py +17 -15
  12. user_scanner/creator/producthunt.py +16 -14
  13. user_scanner/dev/codeberg.py +13 -11
  14. user_scanner/dev/cratesio.py +19 -17
  15. user_scanner/dev/dockerhub.py +17 -15
  16. user_scanner/dev/github.py +26 -24
  17. user_scanner/dev/gitlab.py +14 -12
  18. user_scanner/dev/launchpad.py +19 -17
  19. user_scanner/dev/npmjs.py +22 -19
  20. user_scanner/dev/replit.py +13 -11
  21. user_scanner/donation/buymeacoffee.py +11 -10
  22. user_scanner/donation/liberapay.py +36 -0
  23. user_scanner/gaming/chess_com.py +20 -18
  24. user_scanner/gaming/minecraft.py +24 -0
  25. user_scanner/gaming/monkeytype.py +4 -3
  26. user_scanner/gaming/osu.py +14 -12
  27. user_scanner/gaming/roblox.py +20 -16
  28. user_scanner/gaming/steam.py +12 -10
  29. user_scanner/social/bluesky.py +20 -18
  30. user_scanner/social/discord.py +12 -13
  31. user_scanner/social/instagram.py +22 -20
  32. user_scanner/social/mastodon.py +17 -15
  33. user_scanner/social/pinterest.py +13 -11
  34. user_scanner/social/reddit.py +13 -11
  35. user_scanner/social/snapchat.py +28 -26
  36. user_scanner/social/telegram.py +13 -11
  37. user_scanner/social/threads.py +23 -21
  38. user_scanner/social/x.py +14 -12
  39. user_scanner/social/youtube.py +37 -34
  40. user_scanner/utils/update.py +0 -0
  41. user_scanner/utils/version.py +2 -0
  42. user_scanner/version.json +1 -1
  43. {user_scanner-1.0.5.0.dist-info → user_scanner-1.0.6.0.dist-info}/METADATA +6 -7
  44. user_scanner-1.0.6.0.dist-info/RECORD +55 -0
  45. user_scanner-1.0.5.0.dist-info/RECORD +0 -52
  46. {user_scanner-1.0.5.0.dist-info → user_scanner-1.0.6.0.dist-info}/WHEEL +0 -0
  47. {user_scanner-1.0.5.0.dist-info → user_scanner-1.0.6.0.dist-info}/entry_points.txt +0 -0
  48. {user_scanner-1.0.5.0.dist-info → user_scanner-1.0.6.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,27 +1,29 @@
1
- from ..core.orchestrator import status_validate
1
+ from user_scanner.core.orchestrator import status_validate
2
+
2
3
 
3
4
  def validate_instagram(user):
4
- url = f"https://www.instagram.com/api/v1/users/web_profile_info/?username={user}"
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
- 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
- }
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
- user = input ("Username?: ").strip()
20
- result = validate_instagram(user)
21
+ user = input("Username?: ").strip()
22
+ result = validate_instagram(user)
21
23
 
22
- if result == 1:
23
- print("Available!")
24
- elif result == 0:
25
- print("Unavailable!")
26
- else:
27
- print("Error occured!")
24
+ if result == 1:
25
+ print("Available!")
26
+ elif result == 0:
27
+ print("Unavailable!")
28
+ else:
29
+ print("Error occured!")
@@ -1,23 +1,25 @@
1
- from ..core.orchestrator import status_validate
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 = True)
7
+ return status_validate(url, 404, 200, follow_redirects=True)
8
+
7
9
 
8
10
  if __name__ == "__main__":
9
- try:
10
- import httpx
11
- except ImportError:
12
- print("Error: 'httpx' library is not installed.")
13
- exit()
11
+ try:
12
+ import httpx
13
+ except ImportError:
14
+ print("Error: 'httpx' library is not installed.")
15
+ exit()
14
16
 
15
- user = input ("Username?: ").strip()
16
- result = validate_mastodon(user)
17
+ user = input("Username?: ").strip()
18
+ result = validate_mastodon(user)
17
19
 
18
- if result == 1:
19
- print("Available!")
20
- elif result == 0:
21
- print("Unavailable!")
22
- else:
23
- print("Error occured!")
20
+ if result == 1:
21
+ print("Available!")
22
+ elif result == 0:
23
+ print("Unavailable!")
24
+ else:
25
+ print("Error occured!")
@@ -1,4 +1,5 @@
1
- from ..core.orchestrator import generic_validate
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
- return 2
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
- user = input ("Username?: ").strip()
19
- result = validate_pinterest(user)
20
+ user = input("Username?: ").strip()
21
+ result = validate_pinterest(user)
20
22
 
21
- if result == 1:
22
- print("Available!")
23
- elif result == 0:
24
- print("Unavailable!")
25
- else:
26
- print("Error occured!")
23
+ if result == 1:
24
+ print("Available!")
25
+ elif result == 0:
26
+ print("Unavailable!")
27
+ else:
28
+ print("Error occured!")
@@ -1,4 +1,5 @@
1
- from ..core.orchestrator import generic_validate
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
- return 2
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
- user = input ("Username?: ").strip()
19
- result = validate_reddit(user)
20
+ user = input("Username?: ").strip()
21
+ result = validate_reddit(user)
20
22
 
21
- if result == 1:
22
- print("Available!")
23
- elif result == 0:
24
- print("Unavailable!")
25
- else:
26
- print("Error occured!")
23
+ if result == 1:
24
+ print("Available!")
25
+ elif result == 0:
26
+ print("Unavailable!")
27
+ else:
28
+ print("Error occured!")
@@ -1,33 +1,35 @@
1
- from ..core.orchestrator import status_validate
1
+ from user_scanner.core.orchestrator import status_validate
2
+
2
3
 
3
4
  def validate_snapchat(user):
4
- url = f"https://www.snapchat.com/@{user}"
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
- headers = {
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
- user = input ("Username?: ").strip()
26
- result = validate_snapchat(user)
27
+ user = input("Username?: ").strip()
28
+ result = validate_snapchat(user)
27
29
 
28
- if result == 1:
29
- print("Available!")
30
- elif result == 0:
31
- print("Unavailable!")
32
- else:
33
- print("Error occured!")
30
+ if result == 1:
31
+ print("Available!")
32
+ elif result == 0:
33
+ print("Unavailable!")
34
+ else:
35
+ print("Error occured!")
@@ -1,5 +1,6 @@
1
1
  import re
2
- from ..core.orchestrator import generic_validate
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 = True)
16
+
17
+ return generic_validate(url, process, follow_redirects=True)
18
+
17
19
 
18
20
  if __name__ == "__main__":
19
- user = input ("Username?: ").strip()
20
- result = validate_telegram(user)
21
+ user = input("Username?: ").strip()
22
+ result = validate_telegram(user)
21
23
 
22
- if result == 1:
23
- print("Available!")
24
- elif result == 0:
25
- print("Unavailable!")
26
- else:
27
- print("Error occured!")
24
+ if result == 1:
25
+ print("Available!")
26
+ elif result == 0:
27
+ print("Unavailable!")
28
+ else:
29
+ print("Error occured!")
@@ -1,27 +1,29 @@
1
- from ..core.orchestrator import status_validate
1
+ from user_scanner.core.orchestrator import status_validate
2
+
2
3
 
3
4
  def validate_instagram(user):
4
- url = f"https://www.threads.com/api/v1/users/web_profile_info/?username={user}"
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
- user = input ("Username?: ").strip()
20
- result = validate_instagram(user)
21
+ user = input("Username?: ").strip()
22
+ result = validate_instagram(user)
21
23
 
22
- if result == 1:
23
- print("Available!")
24
- elif result == 0:
25
- print("Unavailable!")
26
- else:
27
- print("Error occured!")
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 = 3.0)
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("\n" +" "+f"{Fore.CYAN}X says: {data.get('desc')}{Style.RESET_ALL}")
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
- user = input ("Username?: ").strip()
47
- result = validate_x(user)
48
-
49
- if result == 1:
50
- print("Available!")
51
- elif result == 0:
52
- print("Unavailable!")
53
- else:
54
- print("Error occured!")
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!")
@@ -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
- '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
- 'device-memory': "4",
12
- 'sec-ch-ua': "\"Google Chrome\";v=\"141\", \"Not?A_Brand\";v=\"8\", \"Chromium\";v=\"141\"",
13
- 'sec-ch-ua-mobile': "?1",
14
- 'sec-ch-ua-full-version': "\"141.0.7390.111\"",
15
- 'sec-ch-ua-arch': "\"\"",
16
- 'sec-ch-ua-platform': "\"Android\"",
17
- 'sec-ch-ua-platform-version': "\"15.0.0\"",
18
- 'sec-ch-ua-bitness': "\"\"",
19
- 'sec-ch-ua-wow64': "?0",
20
- '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\"",
21
- 'sec-ch-ua-form-factors': "\"Mobile\"",
22
- 'upgrade-insecure-requests': "1",
23
- 'sec-fetch-site': "none",
24
- 'sec-fetch-mode': "navigate",
25
- 'sec-fetch-user': "?1",
26
- 'sec-fetch-dest': "document",
27
- 'accept-language': "en-US,en;q=0.9",
28
- 'priority': "u=0, i"
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, follow_redirects=True, timeout = 3.0)
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
- return 0
38
+ return 0
37
39
  elif status == 404:
38
- return 1
40
+ return 1
39
41
  else:
40
- return 2
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
- user = input ("Username?: ").strip()
49
- result = validate_youtube(user)
50
-
51
- if result == 1:
52
- print("Available!")
53
- elif result == 0:
54
- print("Unavailable!")
55
- else:
56
- print("Error occured!")
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
@@ -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,4 +1,4 @@
1
1
  {
2
- "version": "1.0.5.0",
2
+ "version": "1.0.6.0",
3
3
  "version_type": "pypi"
4
4
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: user-scanner
3
- Version: 1.0.5.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
  ![1000136215](https://github.com/user-attachments/assets/49ec8d24-665b-4115-8525-01a8d0ca2ef4)
17
17
  <p align="center">
18
- <img src="https://img.shields.io/badge/Version-1.0.5.0-blueviolet?style=for-the-badge&logo=github" />
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
- ## 🌟 Stars:
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,,