user-scanner 1.0.9.0__py3-none-any.whl → 1.0.9.1__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/core/orchestrator.py +5 -3
- user_scanner/creator/hashnode.py +3 -6
- user_scanner/creator/itch_io.py +15 -4
- user_scanner/dev/bitbucket.py +34 -0
- user_scanner/dev/github.py +1 -1
- user_scanner/dev/leetcode.py +35 -0
- user_scanner/dev/sourceforge.py +30 -0
- user_scanner/social/discord.py +4 -4
- user_scanner/social/twitch.py +83 -0
- user_scanner/version.json +1 -1
- {user_scanner-1.0.9.0.dist-info → user_scanner-1.0.9.1.dist-info}/METADATA +3 -3
- {user_scanner-1.0.9.0.dist-info → user_scanner-1.0.9.1.dist-info}/RECORD +15 -11
- {user_scanner-1.0.9.0.dist-info → user_scanner-1.0.9.1.dist-info}/WHEEL +0 -0
- {user_scanner-1.0.9.0.dist-info → user_scanner-1.0.9.1.dist-info}/entry_points.txt +0 -0
- {user_scanner-1.0.9.0.dist-info → user_scanner-1.0.9.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -138,7 +138,7 @@ def run_checks(username: str, printer: Printer, last: bool = True) -> List[Resul
|
|
|
138
138
|
return results
|
|
139
139
|
|
|
140
140
|
|
|
141
|
-
def
|
|
141
|
+
def make_request(url: str, **kwargs) -> httpx.Response:
|
|
142
142
|
"""Simple wrapper to **httpx.get** that predefines headers and timeout"""
|
|
143
143
|
if not "headers" in kwargs:
|
|
144
144
|
kwargs["headers"] = {
|
|
@@ -152,7 +152,9 @@ def make_get_request(url: str, **kwargs) -> httpx.Response:
|
|
|
152
152
|
if not "timeout" in kwargs:
|
|
153
153
|
kwargs["timeout"] = 5.0
|
|
154
154
|
|
|
155
|
-
|
|
155
|
+
method = kwargs.pop("method", "GET")
|
|
156
|
+
|
|
157
|
+
return httpx.request(method.upper(), url, **kwargs)
|
|
156
158
|
|
|
157
159
|
|
|
158
160
|
def generic_validate(url: str, func: Callable[[httpx.Response], AnyResult], **kwargs) -> AnyResult:
|
|
@@ -160,7 +162,7 @@ def generic_validate(url: str, func: Callable[[httpx.Response], AnyResult], **kw
|
|
|
160
162
|
A generic validate function that makes a request and executes the provided function on the response.
|
|
161
163
|
"""
|
|
162
164
|
try:
|
|
163
|
-
response =
|
|
165
|
+
response = make_request(url, **kwargs)
|
|
164
166
|
result = func(response)
|
|
165
167
|
result.url = url
|
|
166
168
|
return result
|
user_scanner/creator/hashnode.py
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import httpx
|
|
2
2
|
from user_scanner.core.result import Result
|
|
3
|
+
from user_scanner.core.orchestrator import generic_validate
|
|
3
4
|
|
|
4
5
|
|
|
5
6
|
def validate_hashnode(user):
|
|
@@ -18,9 +19,7 @@ def validate_hashnode(user):
|
|
|
18
19
|
'Referer': "https://hashnode.com/signup",
|
|
19
20
|
}
|
|
20
21
|
|
|
21
|
-
|
|
22
|
-
response = httpx.post(url, json=payload, headers=headers, timeout=3.0)
|
|
23
|
-
|
|
22
|
+
def process(response):
|
|
24
23
|
if response.status_code == 200:
|
|
25
24
|
data = response.json()
|
|
26
25
|
|
|
@@ -35,9 +34,7 @@ def validate_hashnode(user):
|
|
|
35
34
|
else:
|
|
36
35
|
return Result.error("Invalid status code")
|
|
37
36
|
|
|
38
|
-
|
|
39
|
-
return Result.error(e)
|
|
40
|
-
|
|
37
|
+
return generic_validate(url, process, method="POST", json=payload, headers=headers, timeout=3.0)
|
|
41
38
|
|
|
42
39
|
if __name__ == "__main__":
|
|
43
40
|
user = input("Username?: ").strip()
|
user_scanner/creator/itch_io.py
CHANGED
|
@@ -1,8 +1,19 @@
|
|
|
1
|
-
|
|
1
|
+
import re
|
|
2
|
+
from user_scanner.core.orchestrator import status_validate, Result
|
|
2
3
|
|
|
3
4
|
|
|
4
|
-
def validate_itch_io(user):
|
|
5
|
-
|
|
5
|
+
def validate_itch_io(user: str) -> Result:
|
|
6
|
+
if not (2 <= len(user) <= 25):
|
|
7
|
+
return Result.error("Length must be 2-25 characters.")
|
|
8
|
+
|
|
9
|
+
if not re.match(r'^[a-z0-9_-]+$', user):
|
|
10
|
+
|
|
11
|
+
if re.search(r'[A-Z]', user):
|
|
12
|
+
return Result.error("Use lowercase letters only.")
|
|
13
|
+
|
|
14
|
+
return Result.error("Only use lowercase letters, numbers, underscores, and hyphens.")
|
|
15
|
+
|
|
16
|
+
url = f"https://itch.io/profile/{user}"
|
|
6
17
|
|
|
7
18
|
return status_validate(url, 404, 200, follow_redirects=True)
|
|
8
19
|
|
|
@@ -16,4 +27,4 @@ if __name__ == "__main__":
|
|
|
16
27
|
elif result == 0:
|
|
17
28
|
print("Unavailable!")
|
|
18
29
|
else:
|
|
19
|
-
print("Error occurred!")
|
|
30
|
+
print(f"Error occurred! Reason: {result.get_reason()}")
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import re
|
|
2
|
+
from user_scanner.core.orchestrator import status_validate, Result
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
def validate_bitbucket(user: str) -> Result:
|
|
6
|
+
if not (1 <= len(user) <= 30):
|
|
7
|
+
return Result.error("Length must be 1-30 characters.")
|
|
8
|
+
|
|
9
|
+
if not re.match(r'^[a-z0-9][a-z0-9_-]*$', user):
|
|
10
|
+
|
|
11
|
+
if re.search(r'[A-Z]', user):
|
|
12
|
+
return Result.error("Use lowercase letters only.")
|
|
13
|
+
|
|
14
|
+
return Result.error("Only use lowercase letters, numbers, hyphens, and underscores.")
|
|
15
|
+
|
|
16
|
+
url = f"https://bitbucket.org/{user}/"
|
|
17
|
+
|
|
18
|
+
return status_validate(url, 404, [200, 302], follow_redirects=True)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
if __name__ == "__main__":
|
|
22
|
+
user = input("Username?: ").strip()
|
|
23
|
+
result = validate_bitbucket(user)
|
|
24
|
+
|
|
25
|
+
if result == 1:
|
|
26
|
+
print("Available!")
|
|
27
|
+
elif result == 0:
|
|
28
|
+
print("Unavailable!")
|
|
29
|
+
else:
|
|
30
|
+
print(f"Error occurred! Reason: {result.get_reason()}")
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
user_scanner/dev/github.py
CHANGED
|
@@ -29,7 +29,7 @@ def validate_github(user):
|
|
|
29
29
|
|
|
30
30
|
if response.status_code == 422:
|
|
31
31
|
if GITHUB_INVALID_MSG in response.text:
|
|
32
|
-
return Result.error("Cannot start/end with hyphen or use double hyphens")
|
|
32
|
+
return Result.error("Cannot start/end with hyphen or use double hyphens, underscores")
|
|
33
33
|
|
|
34
34
|
return Result.taken()
|
|
35
35
|
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import re
|
|
2
|
+
from user_scanner.core.orchestrator import status_validate, Result
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
def validate_leetcode(user: str) -> Result:
|
|
6
|
+
if not (3 <= len(user) <= 30):
|
|
7
|
+
return Result.error("Length must be between 3 and 30 characters")
|
|
8
|
+
|
|
9
|
+
if not re.match(r'^[a-zA-Z0-9._-]+$', user):
|
|
10
|
+
return Result.error("Can only use letters, numbers, underscores, periods, or hyphens")
|
|
11
|
+
|
|
12
|
+
url = f"https://leetcode.com/u/{user}/"
|
|
13
|
+
|
|
14
|
+
headers = {
|
|
15
|
+
'User-Agent': "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Mobile Safari/537.36",
|
|
16
|
+
'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",
|
|
17
|
+
'Accept-Encoding': "identity",
|
|
18
|
+
'upgrade-insecure-requests': "1",
|
|
19
|
+
'accept-language': "en-US,en;q=0.9",
|
|
20
|
+
'priority': "u=0, i"
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return status_validate(url, 404, 200, headers=headers, follow_redirects=True)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
if __name__ == "__main__":
|
|
27
|
+
user = input("Username?: ").strip()
|
|
28
|
+
result = validate_leetcode(user)
|
|
29
|
+
|
|
30
|
+
if result == 1:
|
|
31
|
+
print("Available!")
|
|
32
|
+
elif result == 0:
|
|
33
|
+
print("Unavailable!")
|
|
34
|
+
else:
|
|
35
|
+
print(f"Error occurred! Reason: {result.get_reason()}")
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import re
|
|
2
|
+
from user_scanner.core.orchestrator import status_validate, Result
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
def validate_sourceforge(user: str) -> Result:
|
|
6
|
+
if not (3 <= len(user) <= 30):
|
|
7
|
+
return Result.error("Length must be 3-30 characters.")
|
|
8
|
+
|
|
9
|
+
if not re.match(r'^[a-z0-9-]+$', user):
|
|
10
|
+
|
|
11
|
+
if re.search(r'[A-Z]', user):
|
|
12
|
+
return Result.error("Use lowercase letters only.")
|
|
13
|
+
|
|
14
|
+
return Result.error("Only use lowercase letters, numbers, and dashes.")
|
|
15
|
+
|
|
16
|
+
url = f"https://sourceforge.net/u/{user}/"
|
|
17
|
+
|
|
18
|
+
return status_validate(url, 404, 200, follow_redirects=True)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
if __name__ == "__main__":
|
|
22
|
+
user = input("Username?: ").strip()
|
|
23
|
+
result = validate_sourceforge(user)
|
|
24
|
+
|
|
25
|
+
if result == 1:
|
|
26
|
+
print("Available!")
|
|
27
|
+
elif result == 0:
|
|
28
|
+
print("Unavailable!")
|
|
29
|
+
else:
|
|
30
|
+
print(f"Error occurred! Reason: {result.get_reason()}")
|
user_scanner/social/discord.py
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import httpx
|
|
2
2
|
from user_scanner.core.result import Result
|
|
3
|
+
from user_scanner.core.orchestrator import generic_validate
|
|
3
4
|
|
|
4
5
|
def validate_discord(user):
|
|
5
6
|
url = "https://discord.com/api/v9/unique-username/username-attempt-unauthed"
|
|
@@ -15,8 +16,7 @@ def validate_discord(user):
|
|
|
15
16
|
|
|
16
17
|
data = {"username": user}
|
|
17
18
|
|
|
18
|
-
|
|
19
|
-
response = httpx.post(url, headers=headers, json=data, timeout=3.0)
|
|
19
|
+
def process(response):
|
|
20
20
|
if response.status_code == 200:
|
|
21
21
|
status = response.json().get("taken")
|
|
22
22
|
if status is True:
|
|
@@ -24,8 +24,8 @@ def validate_discord(user):
|
|
|
24
24
|
elif status is False:
|
|
25
25
|
return Result.available()
|
|
26
26
|
return Result.error("Invalid status code")
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
|
|
28
|
+
return generic_validate(url, process, method="POST", json=data, headers=headers, timeout=3.0)
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
if __name__ == "__main__":
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import json
|
|
2
|
+
import re
|
|
3
|
+
import httpx
|
|
4
|
+
from user_scanner.core.orchestrator import generic_validate, Result
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def validate_twitch(user: str) -> Result:
|
|
8
|
+
if not (4 <= len(user) <= 25):
|
|
9
|
+
return Result.error("Username must be between 4 and 25 characters long")
|
|
10
|
+
|
|
11
|
+
if not re.match(r"^[a-zA-Z0-9]+$", user):
|
|
12
|
+
return Result.error("Username can only contain alphanumeric characters (a-z, 0-9)")
|
|
13
|
+
|
|
14
|
+
url = "https://gql.twitch.tv/gql"
|
|
15
|
+
|
|
16
|
+
payload = [
|
|
17
|
+
{
|
|
18
|
+
"operationName": "ChannelLayout",
|
|
19
|
+
"variables": {
|
|
20
|
+
"channelLogin": user,
|
|
21
|
+
"includeIsDJ": True
|
|
22
|
+
},
|
|
23
|
+
"extensions": {
|
|
24
|
+
"persistedQuery": {
|
|
25
|
+
"version": 1,
|
|
26
|
+
"sha256Hash": "4c361fa1874dc8f6a49e62b56aa1032eccb31311bdb653918a924f96a8b2d1a6"
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
|
|
32
|
+
headers = {
|
|
33
|
+
'User-Agent': "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Mobile Safari/537.36",
|
|
34
|
+
'Accept-Encoding': "identity",
|
|
35
|
+
'Content-Type': "application/json",
|
|
36
|
+
'sec-ch-ua-platform': "\"Android\"",
|
|
37
|
+
'accept-language': "en-US",
|
|
38
|
+
'client-id': "kimne78kx3ncx6brgo4mv6wki5h1ko",
|
|
39
|
+
'client-version': "7bb0442d-1175-4ab5-9d32-b1f370536cbf",
|
|
40
|
+
'origin': "https://m.twitch.tv",
|
|
41
|
+
'referer': "https://m.twitch.tv/",
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
def process(response: httpx.Response) -> Result:
|
|
45
|
+
if response.status_code != 200:
|
|
46
|
+
return Result.error(f"Unexpected status code: {response.status_code}")
|
|
47
|
+
|
|
48
|
+
try:
|
|
49
|
+
data = response.json()
|
|
50
|
+
except json.JSONDecodeError as e:
|
|
51
|
+
return Result.error(f"Failed to decode JSON response: {e}")
|
|
52
|
+
|
|
53
|
+
user_data = data[0].get('data', {}).get('user', {})
|
|
54
|
+
typename = user_data.get('__typename')
|
|
55
|
+
|
|
56
|
+
if typename == "User":
|
|
57
|
+
return Result.taken()
|
|
58
|
+
elif typename == "UserDoesNotExist":
|
|
59
|
+
return Result.available()
|
|
60
|
+
else:
|
|
61
|
+
return Result.error("Unexpected GraphQL response structure or type.")
|
|
62
|
+
|
|
63
|
+
return generic_validate(
|
|
64
|
+
url,
|
|
65
|
+
process,
|
|
66
|
+
headers=headers,
|
|
67
|
+
method='POST',
|
|
68
|
+
content=json.dumps(payload),
|
|
69
|
+
follow_redirects=False
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
if __name__ == "__main__":
|
|
74
|
+
user = input("Twitch Username?: ").strip()
|
|
75
|
+
result = validate_twitch(user)
|
|
76
|
+
|
|
77
|
+
if result == 1:
|
|
78
|
+
print("Available!")
|
|
79
|
+
elif result == 0:
|
|
80
|
+
print("Unavailable!")
|
|
81
|
+
else:
|
|
82
|
+
reason = result.get_reason()
|
|
83
|
+
print(f"Error occurred! Reason: {reason}")
|
user_scanner/version.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: user-scanner
|
|
3
|
-
Version: 1.0.9.
|
|
3
|
+
Version: 1.0.9.1
|
|
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.9.
|
|
18
|
+
<img src="https://img.shields.io/badge/Version-1.0.9.1-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" />
|
|
@@ -67,7 +67,7 @@ user-scanner -u <username> -m github
|
|
|
67
67
|
```
|
|
68
68
|
|
|
69
69
|
Also, the output file and format can be specified: <br>
|
|
70
|
-
|
|
70
|
+
|
|
71
71
|
```bash
|
|
72
72
|
user-scanner -u <username> -f console #Default format
|
|
73
73
|
user-scanner -u <username> -f csv
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
user_scanner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
2
|
user_scanner/__main__.py,sha256=jmfWuPNToix9UtLNh7IYrm-M22QBdSPtmMHv4ZY66Bc,5253
|
|
3
|
-
user_scanner/version.json,sha256=
|
|
3
|
+
user_scanner/version.json,sha256=xMl1CJDy9wpMkJKVCDUR1Vh7d-oyLU4gx1symSWOLIY,49
|
|
4
4
|
user_scanner/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
5
|
user_scanner/cli/banner.py,sha256=3t6owaDArERlvpcszA1Yi3dtksvh8a9tLyrxRowTC40,1499
|
|
6
6
|
user_scanner/cli/printer.py,sha256=H8rNw0ewG3G0JquKnMLW8PbHmFcALaEZZNUAsAUScHg,4027
|
|
@@ -8,27 +8,30 @@ user_scanner/community/__init__.py,sha256=5EzlM991pJqvqIRc05_QV5BureJZ7wiCRm1AyE
|
|
|
8
8
|
user_scanner/community/coderlegion.py,sha256=W_bdjzdFPRgUrNFFlylvToSJ4AzaFCtTsUy_MRVDdSo,451
|
|
9
9
|
user_scanner/community/stackoverflow.py,sha256=MTL8O0TLHkjVbugBh1pLxELJLU3hkX_YEHjGjaKTJi4,1007
|
|
10
10
|
user_scanner/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
|
-
user_scanner/core/orchestrator.py,sha256=
|
|
11
|
+
user_scanner/core/orchestrator.py,sha256=nfe0KEcT2U_MB48OgmuvQ0tHvQdnJm8VVi06QxiuJMU,7059
|
|
12
12
|
user_scanner/core/result.py,sha256=8qrIXO5jg6OjWkLtEq25lx_b1hLgtDFugdDyrJX4vcU,3300
|
|
13
13
|
user_scanner/core/utils.py,sha256=v3XLUXmknf9zl_JBOmnss3280SrEWBdPcz-zq3S8lak,249
|
|
14
14
|
user_scanner/creator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
15
|
user_scanner/creator/devto.py,sha256=mIACmG1a4eoctywxb5p04sI0YVi3dsjCRw9YVOFBEKQ,435
|
|
16
|
-
user_scanner/creator/hashnode.py,sha256=
|
|
17
|
-
user_scanner/creator/itch_io.py,sha256=
|
|
16
|
+
user_scanner/creator/hashnode.py,sha256=NEIpSyf0zbcZ_QNjU3C7F5oApvVpUQOd_oQuughM-Qc,1403
|
|
17
|
+
user_scanner/creator/itch_io.py,sha256=2a8UVh-_OaWQPcSUHUuijDGpWDxsR8DoCcU1BdTRqqs,854
|
|
18
18
|
user_scanner/creator/kaggle.py,sha256=QaXIG02OGxvQZEvwHm50RKNd7joxGOq0Ht3cFfrYEiU,445
|
|
19
19
|
user_scanner/creator/medium.py,sha256=NIOYnk8_ASD0kYfKqs8t6uZZTV4D-5-ZxyHMzOMMOuI,1015
|
|
20
20
|
user_scanner/creator/patreon.py,sha256=g-r85pxirf0ihK3STyGYPIzp59MB7JH64Opb4wq1fyU,461
|
|
21
21
|
user_scanner/creator/producthunt.py,sha256=p0HoIIVhmv9bBkelhfzRYudUFoyk_qeT66-hPpHEFqk,1938
|
|
22
22
|
user_scanner/dev/__init__.py,sha256=qUR0eLwN-gO6oKk-1cmCVT4G_AxUHHMgpV3wJ7URXi4,7
|
|
23
|
+
user_scanner/dev/bitbucket.py,sha256=qAIlFCmMaNTUx2-a5wJKHjbQjERcJt0zKHJmjLAeXr4,876
|
|
23
24
|
user_scanner/dev/codeberg.py,sha256=Z6nV0_8xZhMiCcNn9Hn79VVh6y0ar9fqL7KS2b7IaDo,447
|
|
24
25
|
user_scanner/dev/cratesio.py,sha256=mJnlLJoMLlQ7f_95QD7LgH1xCj-e6FooOFkpYypBfG4,724
|
|
25
26
|
user_scanner/dev/dockerhub.py,sha256=sPEnomGiPM2mKv2HsA-9WxaXHjzz21A6ox3IXK1etLc,643
|
|
26
|
-
user_scanner/dev/github.py,sha256=
|
|
27
|
+
user_scanner/dev/github.py,sha256=9Q4G84WTAeWfNliApKdRFl1MJLfHvDPJ09mwr8P1ePo,1702
|
|
27
28
|
user_scanner/dev/gitlab.py,sha256=kMDSd74XbofmJocfS4Fd9DxPryIHBMek3N_5c7Z_AJQ,1351
|
|
28
29
|
user_scanner/dev/huggingface.py,sha256=hDanOZ45LeUg3hrN0CYrBnBnLqHCYtOWS0_HCvAbmDw,454
|
|
29
30
|
user_scanner/dev/launchpad.py,sha256=N58ioX_dEHq2uwyyGrWnDKWwbqK9_RiuBQ1uWR5cDfg,799
|
|
31
|
+
user_scanner/dev/leetcode.py,sha256=PTJcgp1W3fzLDK_Jy_VvRjKnLftLYMJaw3kfMjHqt9c,1246
|
|
30
32
|
user_scanner/dev/npmjs.py,sha256=k-DhFqGJWDoQ79EzR8hmVrJk07AfJfPUWnIYuKc2G6w,713
|
|
31
33
|
user_scanner/dev/replit.py,sha256=SI_i2l4w9tm2kBX4-cONBAT8dSynXoGEP4zcU8ngnh0,442
|
|
34
|
+
user_scanner/dev/sourceforge.py,sha256=Kt8MmpCgB1tNwYRI9PYOZzIrL1VfnpzeNC43DcbZlbI,850
|
|
32
35
|
user_scanner/donation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
33
36
|
user_scanner/donation/buymeacoffee.py,sha256=86LGyChv_UKQFp2D7nIoK1B-FCAAbbfabS8NA9yLp5k,459
|
|
34
37
|
user_scanner/donation/liberapay.py,sha256=njClxpbRLZQ_L2-lUYCY6QFnF4IcwfCJPCIg1iEqo7M,1120
|
|
@@ -41,7 +44,7 @@ user_scanner/gaming/roblox.py,sha256=Qs51jLgKh-Ehqlco_j8CFtJ4CLVoZeBwPugDvAyLw3Q
|
|
|
41
44
|
user_scanner/gaming/steam.py,sha256=l8xk_p9aiYQWCPoogQnO1iwkfojPhg6yd76OZHhKN50,740
|
|
42
45
|
user_scanner/social/__init__.py,sha256=jaCkFwX1uYtF0ENifVwF8OfHrYYUTm64B9wlBq9BBfQ,9
|
|
43
46
|
user_scanner/social/bluesky.py,sha256=11Y_vRj3txEDQqoD0iANgSWVSB8L87OotPQZquhneR0,1994
|
|
44
|
-
user_scanner/social/discord.py,sha256=
|
|
47
|
+
user_scanner/social/discord.py,sha256=S_6ItjRcxip_L60UJ2rdLRFf4eXT7fMN7roCKA-lDfc,1193
|
|
45
48
|
user_scanner/social/instagram.py,sha256=GgmKGvi3meKdZ_nQJbJSBZDJTEKSoE6Cn4_VARmo62I,953
|
|
46
49
|
user_scanner/social/mastodon.py,sha256=qISx-gUsddC8lFMcmERA4N0YAnXyS1Jq2Xgg7XE4sL4,450
|
|
47
50
|
user_scanner/social/pinterest.py,sha256=JIJ-HPtMoGvxW7NQzm02lChFKMmE6k6GxFoUZ6OvCec,784
|
|
@@ -50,12 +53,13 @@ user_scanner/social/snapchat.py,sha256=XEW_W4jEBX4AiHREcfHGstt97Ez3GI-3bKSzhtMyn
|
|
|
50
53
|
user_scanner/social/soundcloud.py,sha256=e2yU1w2fnH1EhzYed0kxgcqgWz0YoCQQFf6yKqhRPjM,1246
|
|
51
54
|
user_scanner/social/telegram.py,sha256=9IS-0pghMifNRmj62NcxCOvn23Hvg0AJJcuhCa_aXD4,765
|
|
52
55
|
user_scanner/social/threads.py,sha256=rK8Gm_riDdr0djo23tk38fNVVEBuC6nj2iTXvWrqXeE,951
|
|
56
|
+
user_scanner/social/twitch.py,sha256=blsh5sMT7miF5-xqVXYLieTILzkop2PsWqv9HhP8G40,2509
|
|
53
57
|
user_scanner/social/x.py,sha256=sAnboHHZN2DWyKeds46GLZHxGG-G_bjzfVNIkblSHx8,1406
|
|
54
58
|
user_scanner/social/youtube.py,sha256=UPu584teg75P7FT05RFG3nobbHgPmzjr-ZwyN2sw6gw,1980
|
|
55
59
|
user_scanner/utils/update.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
56
60
|
user_scanner/utils/version.py,sha256=mPh24EwITyXgD3AMgbflRL180pS0JfrvuJdnoErOU34,623
|
|
57
|
-
user_scanner-1.0.9.
|
|
58
|
-
user_scanner-1.0.9.
|
|
59
|
-
user_scanner-1.0.9.
|
|
60
|
-
user_scanner-1.0.9.
|
|
61
|
-
user_scanner-1.0.9.
|
|
61
|
+
user_scanner-1.0.9.1.dist-info/entry_points.txt,sha256=XqU3kssYZ0vXaPy5qYUOTCu4u-48Xie7QWFpBCYc7Nc,59
|
|
62
|
+
user_scanner-1.0.9.1.dist-info/licenses/LICENSE,sha256=XH1QyQG68zo1opDIZHTHcTAbe9XMzewvTaFTukcN9vc,1061
|
|
63
|
+
user_scanner-1.0.9.1.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
|
|
64
|
+
user_scanner-1.0.9.1.dist-info/METADATA,sha256=NXrrk_8W1d8k7DbXvyAhMYq9QFCL-opRBVicqcOQVDI,5697
|
|
65
|
+
user_scanner-1.0.9.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|