user-scanner 1.0.10.1__tar.gz → 1.0.10.3__tar.gz

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 (72) hide show
  1. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/PKG-INFO +2 -2
  2. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/README.md +1 -1
  3. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/pyproject.toml +1 -1
  4. user_scanner-1.0.10.3/user_scanner/creator/producthunt.py +34 -0
  5. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/version.json +1 -1
  6. user_scanner-1.0.10.1/user_scanner/creator/producthunt.py +0 -47
  7. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/LICENSE +0 -0
  8. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/__init__.py +0 -0
  9. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/__main__.py +0 -0
  10. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/cli/__init__.py +0 -0
  11. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/cli/banner.py +0 -0
  12. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/cli/printer.py +0 -0
  13. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/community/__init__.py +0 -0
  14. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/community/coderlegion.py +0 -0
  15. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/community/hackernews.py +0 -0
  16. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/community/stackoverflow.py +0 -0
  17. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/config.json +0 -0
  18. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/core/__init__.py +0 -0
  19. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/core/helpers.py +0 -0
  20. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/core/orchestrator.py +0 -0
  21. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/core/result.py +0 -0
  22. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/core/version.py +0 -0
  23. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/creator/__init__.py +0 -0
  24. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/creator/devto.py +0 -0
  25. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/creator/hashnode.py +0 -0
  26. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/creator/itch_io.py +0 -0
  27. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/creator/kaggle.py +0 -0
  28. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/creator/medium.py +0 -0
  29. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/creator/patreon.py +0 -0
  30. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/creator/substack.py +0 -0
  31. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/creator/twitch.py +0 -0
  32. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/dev/__init__.py +0 -0
  33. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/dev/bitbucket.py +0 -0
  34. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/dev/codeberg.py +0 -0
  35. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/dev/cratesio.py +0 -0
  36. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/dev/dockerhub.py +0 -0
  37. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/dev/github.py +0 -0
  38. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/dev/gitlab.py +0 -0
  39. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/dev/huggingface.py +0 -0
  40. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/dev/launchpad.py +0 -0
  41. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/dev/leetcode.py +0 -0
  42. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/dev/npmjs.py +0 -0
  43. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/dev/replit.py +0 -0
  44. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/dev/sourceforge.py +0 -0
  45. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/donation/__init__.py +0 -0
  46. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/donation/buymeacoffee.py +0 -0
  47. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/donation/liberapay.py +0 -0
  48. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/gaming/__init__.py +0 -0
  49. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/gaming/chess_com.py +0 -0
  50. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/gaming/lichess.py +0 -0
  51. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/gaming/minecraft.py +0 -0
  52. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/gaming/monkeytype.py +0 -0
  53. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/gaming/osu.py +0 -0
  54. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/gaming/roblox.py +0 -0
  55. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/gaming/steam.py +0 -0
  56. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/social/__init__.py +0 -0
  57. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/social/bluesky.py +0 -0
  58. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/social/discord.py +0 -0
  59. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/social/instagram.py +0 -0
  60. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/social/mastodon.py +0 -0
  61. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/social/pinterest.py +0 -0
  62. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/social/reddit.py +0 -0
  63. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/social/snapchat.py +0 -0
  64. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/social/soundcloud.py +0 -0
  65. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/social/telegram.py +0 -0
  66. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/social/threads.py +0 -0
  67. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/social/tiktok.py +0 -0
  68. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/social/x.py +0 -0
  69. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/social/youtube.py +0 -0
  70. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/utils/__init__.py +0 -0
  71. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/utils/update.py +0 -0
  72. {user_scanner-1.0.10.1 → user_scanner-1.0.10.3}/user_scanner/utils/updater_logic.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: user-scanner
3
- Version: 1.0.10.1
3
+ Version: 1.0.10.3
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
  ![User Scanner Logo](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.10.1-blueviolet?style=for-the-badge&logo=github" />
18
+ <img src="https://img.shields.io/badge/Version-1.0.10.3-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" />
@@ -2,7 +2,7 @@
2
2
 
3
3
  ![User Scanner Logo](https://github.com/user-attachments/assets/49ec8d24-665b-4115-8525-01a8d0ca2ef4)
4
4
  <p align="center">
5
- <img src="https://img.shields.io/badge/Version-1.0.10.1-blueviolet?style=for-the-badge&logo=github" />
5
+ <img src="https://img.shields.io/badge/Version-1.0.10.3-blueviolet?style=for-the-badge&logo=github" />
6
6
  <img src="https://img.shields.io/github/issues/kaifcodec/user-scanner?style=for-the-badge&logo=github" />
7
7
  <img src="https://img.shields.io/badge/Tested%20on-Termux-black?style=for-the-badge&logo=termux" />
8
8
  <img src="https://img.shields.io/badge/Tested%20on-Windows-cyan?style=for-the-badge&logo=Windows" />
@@ -4,7 +4,7 @@ build-backend = "flit_core.buildapi"
4
4
 
5
5
  [project]
6
6
  name = "user-scanner"
7
- version = "1.0.10.1"
7
+ version = "1.0.10.3"
8
8
  description = "Check username availability across multiple popular platforms"
9
9
  readme = "README.md"
10
10
  license = {file = "LICENSE"}
@@ -0,0 +1,34 @@
1
+ import re
2
+ from user_scanner.core.orchestrator import status_validate, Result
3
+
4
+
5
+ def validate_producthunt(user: str) -> Result:
6
+ if not (2 <= len(user) <= 32):
7
+ return Result.error("Length must be 2-32 characters.")
8
+
9
+ # Rules: Letters, numbers, and underscores only.
10
+ if not re.match(r'^[a-zA-Z0-9_]+$', user):
11
+ return Result.error("Only use letters, numbers, and underscores.")
12
+
13
+ url = f"https://www.producthunt.com/@{user}"
14
+
15
+ headers = {
16
+ '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",
17
+ '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",
18
+ 'Accept-Encoding': "gzip, deflate, br",
19
+ 'Accept-Language': "en-US,en;q=0.9",
20
+ }
21
+
22
+ return status_validate(url, 404, 200, headers=headers, follow_redirects=True)
23
+
24
+
25
+ if __name__ == "__main__":
26
+ user = input("Username?: ").strip()
27
+ result = validate_producthunt(user)
28
+
29
+ if result == 1:
30
+ print("Available!")
31
+ elif result == 0:
32
+ print("Unavailable!")
33
+ else:
34
+ print(f"Error occurred! Reason: {result.get_reason()}")
@@ -1,4 +1,4 @@
1
1
  {
2
- "version": "1.0.10.1",
2
+ "version": "1.0.10.3",
3
3
  "version_type": "pypi"
4
4
  }
@@ -1,47 +0,0 @@
1
- from user_scanner.core.orchestrator import status_validate, Result
2
-
3
-
4
- def validate_youtube(user) -> Result:
5
- url = f"https://m.youtube.com/@{user}"
6
- headers = {
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-bitness': "\"\"",
19
- 'sec-ch-ua-wow64': "?0",
20
- '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\"",
21
- 'sec-ch-ua-form-factors': "\"Mobile\"",
22
- 'upgrade-insecure-requests': "1",
23
- 'x-browser-channel': "stable",
24
- 'x-browser-year': "2025",
25
- 'x-browser-copyright': "Copyright 2025 Google LLC. All Rights reserved.",
26
- 'sec-fetch-site': "none",
27
- 'sec-fetch-mode': "navigate",
28
- 'sec-fetch-user': "?1",
29
- 'sec-fetch-dest': "document",
30
- 'accept-language': "en-US,en;q=0.9",
31
- 'priority': "u=0, i"
32
- }
33
-
34
- return status_validate(url, 404, 200, headers=headers)
35
-
36
-
37
- if __name__ == "__main__":
38
- user = input("Username?: ").strip()
39
- result = validate_youtube(user)
40
-
41
- if result == 1:
42
- print("Available!")
43
- elif result == 0:
44
- print("Unavailable!")
45
- else:
46
- reason = result.get_reason()
47
- print(f"Error occurred! Reason: {reason}")
File without changes