user-scanner 1.1.0.7__tar.gz → 1.1.0.8__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 (134) hide show
  1. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/PKG-INFO +2 -2
  2. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/README.md +1 -1
  3. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/pyproject.toml +1 -1
  4. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/music/lastfm.py +1 -9
  5. user_scanner-1.1.0.8/user_scanner/email_scan/shopping/envato.py +48 -0
  6. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/version.json +1 -1
  7. user_scanner-1.1.0.7/user_scanner/email_scan/shopping/envato.py +0 -41
  8. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/LICENSE +0 -0
  9. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/__init__.py +0 -0
  10. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/__main__.py +0 -0
  11. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/cli/__init__.py +0 -0
  12. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/cli/banner.py +0 -0
  13. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/config.json +0 -0
  14. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/core/__init__.py +0 -0
  15. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/core/email_orchestrator.py +0 -0
  16. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/core/formatter.py +0 -0
  17. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/core/helpers.py +0 -0
  18. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/core/orchestrator.py +0 -0
  19. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/core/result.py +0 -0
  20. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/core/version.py +0 -0
  21. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/__init__.py +0 -0
  22. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/adult/__init__.py +0 -0
  23. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/adult/pornhub.py +0 -0
  24. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/adult/sexvid.py +0 -0
  25. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/adult/xnxx.py +0 -0
  26. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/adult/xvideos.py +0 -0
  27. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/community/__init__.py +0 -0
  28. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/community/quora.py +0 -0
  29. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/community/stackoverflow.py +0 -0
  30. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/creator/__init__.py +0 -0
  31. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/creator/gumroad.py +0 -0
  32. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/creator/patreon.py +0 -0
  33. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/dev/__init__.py +0 -0
  34. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/dev/bitbucket.py +0 -0
  35. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/dev/codecademy.py +0 -0
  36. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/dev/codepen.py +0 -0
  37. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/dev/devrant.py +0 -0
  38. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/dev/github.py +0 -0
  39. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/dev/huggingface.py +0 -0
  40. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/dev/leetcode.py +0 -0
  41. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/dev/replit.py +0 -0
  42. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/dev/wordpress.py +0 -0
  43. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/entertainment/__init__.py +0 -0
  44. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/entertainment/appletv.py +0 -0
  45. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/entertainment/justwatch.py +0 -0
  46. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/entertainment/netflix.py +0 -0
  47. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/entertainment/stremio.py +0 -0
  48. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/gaming/__init__.py +0 -0
  49. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/gaming/chess_com.py +0 -0
  50. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/hosting/__init__.py +0 -0
  51. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/hosting/render.py +0 -0
  52. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/learning/__init__.py +0 -0
  53. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/learning/duolingo.py +0 -0
  54. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/music/__init__.py +0 -0
  55. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/music/spotify.py +0 -0
  56. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/other/__init__.py +0 -0
  57. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/other/eventbrite.py +0 -0
  58. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/pipeline/__init__.py +0 -0
  59. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/pipeline/axonaut.py +0 -0
  60. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/pipeline/hubspot.py +0 -0
  61. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/pipeline/insightly.py +0 -0
  62. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/pipeline/zoho.py +0 -0
  63. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/shopping/__init__.py +0 -0
  64. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/shopping/flipkart.py +0 -0
  65. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/shopping/naturabuy.py +0 -0
  66. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/shopping/vivino.py +0 -0
  67. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/social/__init__.py +0 -0
  68. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/social/facebook.py +0 -0
  69. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/social/instagram.py +0 -0
  70. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/social/mastodon.py +0 -0
  71. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/social/x.py +0 -0
  72. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/sports/__init__.py +0 -0
  73. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/sports/espn.py +0 -0
  74. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/email_scan/sports/marca.py +0 -0
  75. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/community/__init__.py +0 -0
  76. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/community/coderlegion.py +0 -0
  77. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/community/hackernews.py +0 -0
  78. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/community/lemmy.py +0 -0
  79. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/community/stackoverflow.py +0 -0
  80. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/creator/__init__.py +0 -0
  81. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/creator/devto.py +0 -0
  82. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/creator/gumroad.py +0 -0
  83. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/creator/hashnode.py +0 -0
  84. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/creator/itch_io.py +0 -0
  85. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/creator/kaggle.py +0 -0
  86. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/creator/medium.py +0 -0
  87. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/creator/patreon.py +0 -0
  88. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/creator/producthunt.py +0 -0
  89. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/creator/substack.py +0 -0
  90. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/creator/twitch.py +0 -0
  91. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/dev/__init__.py +0 -0
  92. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/dev/bitbucket.py +0 -0
  93. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/dev/codeberg.py +0 -0
  94. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/dev/cratesio.py +0 -0
  95. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/dev/dockerhub.py +0 -0
  96. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/dev/github.py +0 -0
  97. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/dev/gitlab.py +0 -0
  98. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/dev/huggingface.py +0 -0
  99. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/dev/launchpad.py +0 -0
  100. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/dev/leetcode.py +0 -0
  101. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/dev/npmjs.py +0 -0
  102. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/dev/replit.py +0 -0
  103. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/dev/sourceforge.py +0 -0
  104. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/donation/__init__.py +0 -0
  105. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/donation/buymeacoffee.py +0 -0
  106. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/donation/liberapay.py +0 -0
  107. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/gaming/__init__.py +0 -0
  108. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/gaming/battlenet.py +0 -0
  109. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/gaming/chess_com.py +0 -0
  110. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/gaming/lichess.py +0 -0
  111. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/gaming/minecraft.py +0 -0
  112. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/gaming/monkeytype.py +0 -0
  113. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/gaming/osu.py +0 -0
  114. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/gaming/roblox.py +0 -0
  115. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/gaming/steam.py +0 -0
  116. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/shopping/__init__.py +0 -0
  117. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/shopping/vinted.py +0 -0
  118. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/social/__init__.py +0 -0
  119. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/social/bluesky.py +0 -0
  120. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/social/discord.py +0 -0
  121. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/social/instagram.py +0 -0
  122. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/social/mastodon.py +0 -0
  123. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/social/pinterest.py +0 -0
  124. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/social/reddit.py +0 -0
  125. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/social/snapchat.py +0 -0
  126. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/social/soundcloud.py +0 -0
  127. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/social/telegram.py +0 -0
  128. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/social/threads.py +0 -0
  129. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/social/tiktok.py +0 -0
  130. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/social/x.py +0 -0
  131. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/user_scan/social/youtube.py +0 -0
  132. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/utils/__init__.py +0 -0
  133. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/user_scanner/utils/update.py +0 -0
  134. {user_scanner-1.1.0.7 → user_scanner-1.1.0.8}/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.1.0.7
3
+ Version: 1.1.0.8
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>
@@ -16,7 +16,7 @@ Project-URL: Homepage, https://github.com/kaifcodec/user-scanner
16
16
 
17
17
  ![User Scanner Logo](https://github.com/user-attachments/assets/49ec8d24-665b-4115-8525-01a8d0ca2ef4)
18
18
  <p align="center">
19
- <img src="https://img.shields.io/badge/Version-1.1.0.7-blueviolet?style=for-the-badge&logo=github" />
19
+ <img src="https://img.shields.io/badge/Version-1.1.0.8-blueviolet?style=for-the-badge&logo=github" />
20
20
  <img src="https://img.shields.io/github/issues/kaifcodec/user-scanner?style=for-the-badge&logo=github" />
21
21
  <img src="https://img.shields.io/badge/Tested%20on-Termux-black?style=for-the-badge&logo=termux" />
22
22
  <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.1.0.7-blueviolet?style=for-the-badge&logo=github" />
5
+ <img src="https://img.shields.io/badge/Version-1.1.0.8-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.1.0.7"
7
+ version = "1.1.0.8"
8
8
  description = "Check username availability across multiple popular platforms"
9
9
  readme = "README.md"
10
10
  license = {file = "LICENSE"}
@@ -48,7 +48,7 @@ async def _check(email: str) -> Result:
48
48
  return Result.available()
49
49
 
50
50
  else:
51
- return Result.error(data)
51
+ return Result.error("Unexpected response body, report it via GitHub issues")
52
52
 
53
53
  except httpx.TimeoutException:
54
54
  return Result.error("Connection timed out")
@@ -58,11 +58,3 @@ async def _check(email: str) -> Result:
58
58
 
59
59
  async def validate_lastfm(email: str) -> Result:
60
60
  return await _check(email)
61
-
62
-
63
-
64
-
65
-
66
-
67
-
68
-
@@ -0,0 +1,48 @@
1
+ import httpx
2
+ from user_scanner.core.result import Result
3
+
4
+
5
+ async def _check(email: str) -> Result:
6
+ url = "https://account.envato.com/api/public/validate_email"
7
+
8
+ headers = {
9
+ 'User-Agent': "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36",
10
+ 'Accept': "application/json",
11
+ 'Content-Type': "application/json",
12
+ 'x-client-version': "3.6.0",
13
+ 'origin': "https://elements.envato.com",
14
+ 'referer': "https://elements.envato.com/",
15
+ 'accept-language': "en-US,en;q=0.9",
16
+ }
17
+
18
+ payload = {
19
+ "language_code": "en",
20
+ "email": email
21
+ }
22
+
23
+ try:
24
+ async with httpx.AsyncClient(timeout=5.0) as client:
25
+ response = await client.post(url, json=payload, headers=headers)
26
+
27
+ if response.status_code == 204:
28
+ return Result.available()
29
+
30
+ if response.status_code == 422:
31
+ data = response.json()
32
+ error_msg = data.get("error_message", "").lower()
33
+
34
+ if "already in use" in error_msg:
35
+ return Result.taken()
36
+
37
+ return Result.error("Unexpected response body, report it via GitHub issues")
38
+
39
+ return Result.error(f"HTTP {response.status_code}")
40
+
41
+ except httpx.TimeoutException:
42
+ return Result.error("Connection timed out")
43
+ except Exception as e:
44
+ return Result.error(f"Unexpected Exception: {e}")
45
+
46
+
47
+ async def validate_envato(email: str) -> Result:
48
+ return await _check(email)
@@ -1,4 +1,4 @@
1
1
  {
2
- "version": "1.1.0.7",
2
+ "version": "1.1.0.8",
3
3
  "version_type": "pypi"
4
4
  }
@@ -1,41 +0,0 @@
1
- import httpx
2
- from user_scanner.core.result import Result
3
-
4
- async def _check(email: str) -> Result:
5
- headers = {
6
- 'User-Agent': "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36",
7
- 'Accept': 'application/json',
8
- 'Accept-Language': 'en-US,en;q=0.9',
9
- 'Content-Type': 'application/x-www-form-urlencoded',
10
- 'Origin': 'https://account.envato.com',
11
- 'Referer': 'https://account.envato.com/sign_up',
12
- }
13
-
14
- payload = {'email': email}
15
-
16
- try:
17
- async with httpx.AsyncClient(timeout=10.0) as client:
18
- response = await client.post(
19
- 'https://account.envato.com/api/validate_email',
20
- headers=headers,
21
- data=payload
22
- )
23
-
24
- if 'Email is already in use' in response.text:
25
- return Result.taken()
26
-
27
- if response.status_code == 200:
28
- return Result.available()
29
-
30
- if "Page designed by Kotulsky" in response.text or response.status_code == 429:
31
- return Result.error("Rate limit or Cloudflare challenge detected")
32
-
33
- return Result.error(f"Unexpected response: {response.status_code}")
34
-
35
- except httpx.TimeoutException:
36
- return Result.error("Connection timed out")
37
- except Exception as e:
38
- return Result.error(str(e))
39
-
40
- async def validate_envato(email: str) -> Result:
41
- return await _check(email)
File without changes