user-scanner 1.0.5.0__py3-none-any.whl → 1.0.9.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 (55) hide show
  1. user_scanner/__init__.py +0 -1
  2. user_scanner/__main__.py +113 -64
  3. user_scanner/cli/banner.py +2 -0
  4. user_scanner/cli/printer.py +117 -0
  5. user_scanner/community/__init__.py +1 -0
  6. user_scanner/community/coderlegion.py +15 -14
  7. user_scanner/community/stackoverflow.py +35 -0
  8. user_scanner/core/orchestrator.py +167 -95
  9. user_scanner/core/result.py +128 -0
  10. user_scanner/core/utils.py +9 -0
  11. user_scanner/creator/devto.py +13 -11
  12. user_scanner/creator/hashnode.py +25 -28
  13. user_scanner/creator/itch_io.py +12 -15
  14. user_scanner/creator/kaggle.py +12 -11
  15. user_scanner/creator/medium.py +18 -22
  16. user_scanner/creator/patreon.py +12 -16
  17. user_scanner/creator/producthunt.py +38 -31
  18. user_scanner/dev/codeberg.py +13 -11
  19. user_scanner/dev/cratesio.py +19 -17
  20. user_scanner/dev/dockerhub.py +17 -15
  21. user_scanner/dev/github.py +46 -27
  22. user_scanner/dev/gitlab.py +18 -15
  23. user_scanner/dev/huggingface.py +19 -0
  24. user_scanner/dev/launchpad.py +19 -17
  25. user_scanner/dev/npmjs.py +21 -34
  26. user_scanner/dev/replit.py +13 -11
  27. user_scanner/donation/buymeacoffee.py +10 -12
  28. user_scanner/donation/liberapay.py +36 -0
  29. user_scanner/gaming/chess_com.py +17 -20
  30. user_scanner/gaming/minecraft.py +19 -0
  31. user_scanner/gaming/monkeytype.py +7 -12
  32. user_scanner/gaming/osu.py +13 -16
  33. user_scanner/gaming/roblox.py +35 -26
  34. user_scanner/gaming/steam.py +18 -19
  35. user_scanner/social/bluesky.py +20 -24
  36. user_scanner/social/discord.py +17 -21
  37. user_scanner/social/instagram.py +22 -20
  38. user_scanner/social/mastodon.py +12 -16
  39. user_scanner/social/pinterest.py +15 -13
  40. user_scanner/social/reddit.py +16 -13
  41. user_scanner/social/snapchat.py +28 -26
  42. user_scanner/social/soundcloud.py +43 -0
  43. user_scanner/social/telegram.py +19 -17
  44. user_scanner/social/threads.py +23 -21
  45. user_scanner/social/x.py +20 -28
  46. user_scanner/social/youtube.py +41 -47
  47. user_scanner/utils/update.py +0 -0
  48. user_scanner/utils/version.py +2 -0
  49. user_scanner/version.json +1 -1
  50. {user_scanner-1.0.5.0.dist-info → user_scanner-1.0.9.0.dist-info}/METADATA +58 -23
  51. user_scanner-1.0.9.0.dist-info/RECORD +61 -0
  52. user_scanner-1.0.5.0.dist-info/RECORD +0 -52
  53. {user_scanner-1.0.5.0.dist-info → user_scanner-1.0.9.0.dist-info}/WHEEL +0 -0
  54. {user_scanner-1.0.5.0.dist-info → user_scanner-1.0.9.0.dist-info}/entry_points.txt +0 -0
  55. {user_scanner-1.0.5.0.dist-info → user_scanner-1.0.9.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.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
@@ -1,7 +1,5 @@
1
- import httpx
2
- import json
3
- from colorama import Fore, Style
4
- from httpx import ConnectError, TimeoutException
1
+ from user_scanner.core.result import Result
2
+ from user_scanner.core.orchestrator import generic_validate
5
3
 
6
4
  def validate_x(user):
7
5
  url = "https://api.twitter.com/i/users/username_available.json"
@@ -17,38 +15,32 @@ def validate_x(user):
17
15
  "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",
18
16
  }
19
17
 
20
- try:
21
- response = httpx.get(url, params=params, headers=headers, timeout = 3.0)
18
+ def process(response):
22
19
  status = response.status_code
23
- # print(response.text)
24
- if status in [401, 403, 429]:
25
- return 2
26
20
 
21
+ if status in [401, 403, 429]:
22
+ return Result.error()
27
23
 
28
24
  elif status == 200:
29
25
  data = response.json()
30
26
  if data.get('valid') is True:
31
- return 1
27
+ return Result.available()
32
28
  elif data.get('reason') == 'taken':
33
- return 0
29
+ return Result.taken()
34
30
  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}")
36
- return 2
37
- else:
38
- return 2
31
+ return Result.error(f"X says: {data.get('desc')}")
32
+
33
+ return Result.error()
39
34
 
40
- except (ConnectError, TimeoutException, json.JSONDecodeError):
41
- return 2
42
- except Exception:
43
- return 2
35
+ return generic_validate(url, process, params=params, headers=headers)
44
36
 
45
37
  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!")
38
+ user = input("Username?: ").strip()
39
+ result = validate_x(user)
40
+
41
+ if result == 1:
42
+ print("Available!")
43
+ elif result == 0:
44
+ print("Unavailable!")
45
+ else:
46
+ print("Error occured!")
@@ -1,56 +1,50 @@
1
- import httpx
2
- from httpx import ConnectError, TimeoutException
1
+ from user_scanner.core.orchestrator import status_validate, Result
3
2
 
4
- def validate_youtube(user):
5
- url = f"https://m.youtube.com/@{user}"
6
3
 
4
+ def validate_youtube(user) -> Result:
5
+ url = f"https://m.youtube.com/@{user}"
7
6
  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"
7
+ 'User-Agent': "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.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': "identity",
10
+ 'sec-ch-dpr': "2.75",
11
+ 'sec-ch-viewport-width': "980",
12
+ 'sec-ch-ua': "\"Google Chrome\";v=\"143\", \"Chromium\";v=\"143\", \"Not A(Brand\";v=\"24\"",
13
+ 'sec-ch-ua-mobile': "?1",
14
+ 'sec-ch-ua-full-version': "\"143.0.7499.52\"",
15
+ 'sec-ch-ua-arch': "\"\"",
16
+ 'sec-ch-ua-platform': "\"Android\"",
17
+ 'sec-ch-ua-platform-version': "\"15.0.0\"",
18
+ 'sec-ch-ua-model': "\"I2404\"",
19
+ 'sec-ch-ua-bitness': "\"\"",
20
+ 'sec-ch-ua-wow64': "?0",
21
+ 'sec-ch-ua-full-version-list': "\"Google Chrome\";v=\"143.0.7499.52\", \"Chromium\";v=\"143.0.7499.52\", \"Not A(Brand\";v=\"24.0.0.0\"",
22
+ 'sec-ch-ua-form-factors': "\"Mobile\"",
23
+ 'upgrade-insecure-requests': "1",
24
+ 'x-browser-channel': "stable",
25
+ 'x-browser-year': "2025",
26
+ 'x-browser-copyright': "Copyright 2025 Google LLC. All Rights reserved.",
27
+ 'sec-fetch-site': "none",
28
+ 'sec-fetch-mode': "navigate",
29
+ 'sec-fetch-user': "?1",
30
+ 'sec-fetch-dest': "document",
31
+ 'accept-language': "en-US,en;q=0.9",
32
+ 'priority': "u=0, i"
29
33
  }
30
34
 
31
- try:
32
- response = httpx.get(url, headers=headers, follow_redirects=True, timeout = 3.0)
33
- status = response.status_code
34
35
 
35
- if status == 200:
36
- return 0
37
- elif status == 404:
38
- return 1
39
- else:
40
- return 2
36
+ return status_validate(url, 404, 200, headers=headers)
41
37
 
42
- except (ConnectError, TimeoutException):
43
- return 2
44
- except Exception:
45
- return 2
46
38
 
47
39
  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!")
40
+ user = input("Username?: ").strip()
41
+ result = validate_youtube(user)
42
+
43
+ if result == 1:
44
+ print("Available!")
45
+ elif result == 0:
46
+ print("Unavailable!")
47
+ else:
48
+ reason = result.get_reason()
49
+ print(f"Error occurred! Reason: {reason}")
50
+
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.9.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.9.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.9.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" />
@@ -31,12 +31,16 @@ Perfect for finding a **unique username** across GitHub, Twitter, Reddit, Instag
31
31
 
32
32
  ### Features
33
33
 
34
- - ✅ Check usernames across **social networks**, **developer platforms**, and **creator communities**.
35
- - ✅ Clear **Available / Taken / Error** output for each platform.
36
- - ✅ Fully modular: add new platform modules easily.
37
- - ✅ Command-line interface ready: works directly after `pip install`.
38
- - ✅ Can be used as username OSINT tool.
39
- - ✅ Very low and lightweight dependencies, can be run on any machine.
34
+ - ✅ Check usernames across **social networks**, **developer platforms**, and **creator communities**
35
+ - ✅ Clear **Available / Taken / Error** output for each platform
36
+ - ✅ Robust error handling: It prints the exact reason (e.g. Cannot use underscores, hyphens at the start/end)
37
+ - ✅ Fully modular: add new platform modules easily
38
+ - ✅ Wildcard-based username permutations for automatic variation generation using provided suffix
39
+ - ✅ Selection of results format (e.g. json, csv, console (default))
40
+ - ✅ Get the scanning results in preferred format (json/csv) in specified output file (suitable for power users)
41
+ - ✅ Command-line interface ready: works directly after `pip install`
42
+ - ✅ Can be used as username OSINT tool
43
+ - ✅ Very low and lightweight dependencies, can be run on any machine
40
44
  ---
41
45
 
42
46
  ### Installation
@@ -60,14 +64,47 @@ Optionally, scan a specific category or single module:
60
64
  user-scanner -u <username> -c dev
61
65
  user-scanner -l # Lists all available modules
62
66
  user-scanner -u <username> -m github
67
+ ```
68
+
69
+ Also, the output file and format can be specified: <br>
70
+ \* Errors and warnings will only appear when the format is set to "console"
71
+ ```bash
72
+ user-scanner -u <username> -f console #Default format
73
+ user-scanner -u <username> -f csv
74
+ user-scanner -u <username> -f json
75
+ user-scanner -u <username> -f <format> -o <output-file>
76
+ ```
77
+
78
+ Generate multiple username variations by appending a suffix:
79
+
80
+ ```bash
81
+ user-scanner -u <username> -p <suffix>
82
+ ```
83
+ Optionally, scan a specific category or single module with limit:
63
84
 
85
+ ```bash
86
+ user-scanner -u <username> -p <suffix> -c dev
87
+ user-scanner -u <username> -p <suffix> -m github
88
+ user-scanner -u <username> -p <suffix> -s <number> # limit generation of usernames
89
+ user-scanner -u <username> -p <suffix> -d <seconds> # delay to avoid rate-limits (can be 0s-1s)
64
90
  ```
91
+
65
92
  ---
66
93
  ### Screenshot:
67
94
 
68
95
  - Note*: New modules are constantly getting added so this might have only limited, outdated output:
69
96
 
70
- <img width="1008" height="568" alt="1000139959" src="https://github.com/user-attachments/assets/467a4aa0-238d-4110-b9a6-d4b96c244432" />
97
+
98
+ <img width="1080" height="770" alt="1000140392" src="https://github.com/user-attachments/assets/4638c8f6-40c6-46f8-ae17-ac65cd199d81" />
99
+
100
+
101
+ ---
102
+
103
+ <img width="1080" height="352" alt="1000140393" src="https://github.com/user-attachments/assets/578b248c-2a05-4917-aab3-6372a7c28045" />
104
+
105
+ ---
106
+
107
+ <img width="992" height="556" alt="1000141265" src="https://github.com/user-attachments/assets/9babb19f-bc87-4e7b-abe5-c52b8b1b672c" />
71
108
 
72
109
 
73
110
  ### Contributing:
@@ -81,21 +118,21 @@ user_scanner/
81
118
  ├── creator/ # Creator platforms (Hashnode, Dev.to, Medium, etc.)
82
119
  ├── community/ # Community platforms (forums, niche sites)
83
120
  ├── gaming/ # Gaming sites (chess.com, roblox, monkeytype etc.)
121
+ ├── donation/ # Donation taking sites (buymeacoffe.com, similar...)
84
122
  ```
85
123
 
86
124
  **Module guidelines:**
87
- - Each module must define a `validate_<site>()` function that takes a `username` and returns:
88
- - `1` → Available
89
- - `0` → Taken
90
- - `2`Error / Could not check
91
- - Use `httpx` for requests, `colorama` for colored output.
92
- - Optional: modules can define a CLI parser if they support custom arguments.
125
+ This project contains small "validator" modules that check whether a username exists on a given platform. Each validator is a single function that returns a Result object (see `core/orchestrator.py`).
126
+
127
+ Result semantics:
128
+ - Result.available()`available`
129
+ - Result.taken() `taken`
130
+ - Result.error(message: Optional[str]) `error`, blocked, unknown, or request failure (include short diagnostic message when helpful)
131
+
132
+ Follow this document when adding or updating validators.
93
133
 
94
134
  See [CONTRIBUTING.md](CONTRIBUTING.md) for examples.
95
135
 
96
- ### 📧 Contact:
97
- - [Email](kaifcodec@gmail.com)
98
-
99
136
  ---
100
137
 
101
138
  ### Dependencies:
@@ -109,8 +146,9 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for examples.
109
146
  This project is licensed under the **MIT License**. See [LICENSE](LICENSE) for details.
110
147
 
111
148
 
112
- <!---
113
- ## 🌟 Stars:
149
+ ---
150
+
151
+ ### Star History
114
152
 
115
153
  <a href="https://www.star-history.com/#kaifcodec/user-scanner&type=date&legend=top-left">
116
154
  <picture>
@@ -119,7 +157,4 @@ This project is licensed under the **MIT License**. See [LICENSE](LICENSE) for d
119
157
  <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=kaifcodec/user-scanner&type=date&legend=top-left" />
120
158
  </picture>
121
159
  </a>
122
- --->
123
- ---
124
- ## ⚠️ `community/` and `gaming/` are small, looking for contributions
125
160
 
@@ -0,0 +1,61 @@
1
+ user_scanner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ user_scanner/__main__.py,sha256=jmfWuPNToix9UtLNh7IYrm-M22QBdSPtmMHv4ZY66Bc,5253
3
+ user_scanner/version.json,sha256=dW2NfpLg6HpcgobM6wbpzkahpV6O6N2jXxTNSwuDsU4,49
4
+ user_scanner/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
+ user_scanner/cli/banner.py,sha256=3t6owaDArERlvpcszA1Yi3dtksvh8a9tLyrxRowTC40,1499
6
+ user_scanner/cli/printer.py,sha256=H8rNw0ewG3G0JquKnMLW8PbHmFcALaEZZNUAsAUScHg,4027
7
+ user_scanner/community/__init__.py,sha256=5EzlM991pJqvqIRc05_QV5BureJZ7wiCRm1AyEY6pms,12
8
+ user_scanner/community/coderlegion.py,sha256=W_bdjzdFPRgUrNFFlylvToSJ4AzaFCtTsUy_MRVDdSo,451
9
+ user_scanner/community/stackoverflow.py,sha256=MTL8O0TLHkjVbugBh1pLxELJLU3hkX_YEHjGjaKTJi4,1007
10
+ user_scanner/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
+ user_scanner/core/orchestrator.py,sha256=BZ3IibDyT5itSdXmsTtS8SHHPT1bGwxjTwSk4xp86TU,7005
12
+ user_scanner/core/result.py,sha256=8qrIXO5jg6OjWkLtEq25lx_b1hLgtDFugdDyrJX4vcU,3300
13
+ user_scanner/core/utils.py,sha256=v3XLUXmknf9zl_JBOmnss3280SrEWBdPcz-zq3S8lak,249
14
+ user_scanner/creator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
+ user_scanner/creator/devto.py,sha256=mIACmG1a4eoctywxb5p04sI0YVi3dsjCRw9YVOFBEKQ,435
16
+ user_scanner/creator/hashnode.py,sha256=vlXsJfIG_5ShEK2xPLDl2bi6X-d08iTeoqfKeQLaB1g,1363
17
+ user_scanner/creator/itch_io.py,sha256=JsFkFzBfJI18DeuSYJIOPGEV_9v7t-jtwmBYCA9W2P8,440
18
+ user_scanner/creator/kaggle.py,sha256=QaXIG02OGxvQZEvwHm50RKNd7joxGOq0Ht3cFfrYEiU,445
19
+ user_scanner/creator/medium.py,sha256=NIOYnk8_ASD0kYfKqs8t6uZZTV4D-5-ZxyHMzOMMOuI,1015
20
+ user_scanner/creator/patreon.py,sha256=g-r85pxirf0ihK3STyGYPIzp59MB7JH64Opb4wq1fyU,461
21
+ user_scanner/creator/producthunt.py,sha256=p0HoIIVhmv9bBkelhfzRYudUFoyk_qeT66-hPpHEFqk,1938
22
+ user_scanner/dev/__init__.py,sha256=qUR0eLwN-gO6oKk-1cmCVT4G_AxUHHMgpV3wJ7URXi4,7
23
+ user_scanner/dev/codeberg.py,sha256=Z6nV0_8xZhMiCcNn9Hn79VVh6y0ar9fqL7KS2b7IaDo,447
24
+ user_scanner/dev/cratesio.py,sha256=mJnlLJoMLlQ7f_95QD7LgH1xCj-e6FooOFkpYypBfG4,724
25
+ user_scanner/dev/dockerhub.py,sha256=sPEnomGiPM2mKv2HsA-9WxaXHjzz21A6ox3IXK1etLc,643
26
+ user_scanner/dev/github.py,sha256=km0RMd4cS5sY8IUKDKoNC1oQeCj57ld4HAjOlo1w4ms,1689
27
+ user_scanner/dev/gitlab.py,sha256=kMDSd74XbofmJocfS4Fd9DxPryIHBMek3N_5c7Z_AJQ,1351
28
+ user_scanner/dev/huggingface.py,sha256=hDanOZ45LeUg3hrN0CYrBnBnLqHCYtOWS0_HCvAbmDw,454
29
+ user_scanner/dev/launchpad.py,sha256=N58ioX_dEHq2uwyyGrWnDKWwbqK9_RiuBQ1uWR5cDfg,799
30
+ user_scanner/dev/npmjs.py,sha256=k-DhFqGJWDoQ79EzR8hmVrJk07AfJfPUWnIYuKc2G6w,713
31
+ user_scanner/dev/replit.py,sha256=SI_i2l4w9tm2kBX4-cONBAT8dSynXoGEP4zcU8ngnh0,442
32
+ user_scanner/donation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
+ user_scanner/donation/buymeacoffee.py,sha256=86LGyChv_UKQFp2D7nIoK1B-FCAAbbfabS8NA9yLp5k,459
34
+ user_scanner/donation/liberapay.py,sha256=njClxpbRLZQ_L2-lUYCY6QFnF4IcwfCJPCIg1iEqo7M,1120
35
+ user_scanner/gaming/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
+ user_scanner/gaming/chess_com.py,sha256=74tMgukSUXwdmD9G7Jij_gudRlSfs46Xho5KNMVeyt4,1262
37
+ user_scanner/gaming/minecraft.py,sha256=7a9H9ebLlRzGB0SjxLmzqLiDPDBZAuuNq3KKe2DZAvo,481
38
+ user_scanner/gaming/monkeytype.py,sha256=n9KMBChs0ej7MgZqLGUDVz5CED70sQ3ksDF5pO0G05A,1380
39
+ user_scanner/gaming/osu.py,sha256=2Xs1iM0CJ-3dNHu4tyF50_s0Ei_1mA5Zd6D6M5RmiVg,448
40
+ user_scanner/gaming/roblox.py,sha256=Qs51jLgKh-Ehqlco_j8CFtJ4CLVoZeBwPugDvAyLw3Q,1464
41
+ user_scanner/gaming/steam.py,sha256=l8xk_p9aiYQWCPoogQnO1iwkfojPhg6yd76OZHhKN50,740
42
+ user_scanner/social/__init__.py,sha256=jaCkFwX1uYtF0ENifVwF8OfHrYYUTm64B9wlBq9BBfQ,9
43
+ user_scanner/social/bluesky.py,sha256=11Y_vRj3txEDQqoD0iANgSWVSB8L87OotPQZquhneR0,1994
44
+ user_scanner/social/discord.py,sha256=z-oIqT416ydnZUkq481rz6NTq5yc_BYu-P_Z79uR-Jw,1150
45
+ user_scanner/social/instagram.py,sha256=GgmKGvi3meKdZ_nQJbJSBZDJTEKSoE6Cn4_VARmo62I,953
46
+ user_scanner/social/mastodon.py,sha256=qISx-gUsddC8lFMcmERA4N0YAnXyS1Jq2Xgg7XE4sL4,450
47
+ user_scanner/social/pinterest.py,sha256=JIJ-HPtMoGvxW7NQzm02lChFKMmE6k6GxFoUZ6OvCec,784
48
+ user_scanner/social/reddit.py,sha256=PJ46v8WpcUY1nNSbPhbiY6B9ynB9bcakcDjopXTX2ME,787
49
+ user_scanner/social/snapchat.py,sha256=XEW_W4jEBX4AiHREcfHGstt97Ez3GI-3bKSzhtMyn28,1277
50
+ user_scanner/social/soundcloud.py,sha256=e2yU1w2fnH1EhzYed0kxgcqgWz0YoCQQFf6yKqhRPjM,1246
51
+ user_scanner/social/telegram.py,sha256=9IS-0pghMifNRmj62NcxCOvn23Hvg0AJJcuhCa_aXD4,765
52
+ user_scanner/social/threads.py,sha256=rK8Gm_riDdr0djo23tk38fNVVEBuC6nj2iTXvWrqXeE,951
53
+ user_scanner/social/x.py,sha256=sAnboHHZN2DWyKeds46GLZHxGG-G_bjzfVNIkblSHx8,1406
54
+ user_scanner/social/youtube.py,sha256=UPu584teg75P7FT05RFG3nobbHgPmzjr-ZwyN2sw6gw,1980
55
+ user_scanner/utils/update.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
+ user_scanner/utils/version.py,sha256=mPh24EwITyXgD3AMgbflRL180pS0JfrvuJdnoErOU34,623
57
+ user_scanner-1.0.9.0.dist-info/entry_points.txt,sha256=XqU3kssYZ0vXaPy5qYUOTCu4u-48Xie7QWFpBCYc7Nc,59
58
+ user_scanner-1.0.9.0.dist-info/licenses/LICENSE,sha256=XH1QyQG68zo1opDIZHTHcTAbe9XMzewvTaFTukcN9vc,1061
59
+ user_scanner-1.0.9.0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
60
+ user_scanner-1.0.9.0.dist-info/METADATA,sha256=IeQ-358gvD2bIm2_HgkE7SR3AIS1JQ2XgvotvzEaqpA,5772
61
+ user_scanner-1.0.9.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,,