Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
@@ -12,29 +12,45 @@ from Gradio_UI import GradioUI
|
|
12 |
def get_bluesky_post(arg: str) -> str:
|
13 |
"""Fetches the most recent post from a Bluesky account.
|
14 |
Args:
|
15 |
-
arg: The Bluesky handle
|
16 |
Returns:
|
17 |
A string containing the most recent post content or an error message
|
18 |
"""
|
19 |
import requests
|
20 |
|
21 |
-
#
|
22 |
-
handle = arg.strip()
|
|
|
|
|
|
|
23 |
if "." not in handle:
|
24 |
full_handle = f"{handle}.bsky.social"
|
25 |
else:
|
26 |
full_handle = handle
|
27 |
|
28 |
try:
|
|
|
|
|
29 |
# Step 1: Use the public API endpoint to resolve the handle to a DID
|
30 |
-
# As per docs: public endpoints can be called directly against https://public.api.bsky.app
|
31 |
resolver_url = "https://public.api.bsky.app/xrpc/com.atproto.identity.resolveHandle"
|
32 |
resolver_params = {"handle": full_handle}
|
33 |
|
34 |
resolver_response = requests.get(resolver_url, params=resolver_params)
|
35 |
|
36 |
if resolver_response.status_code != 200:
|
37 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
|
39 |
resolver_data = resolver_response.json()
|
40 |
user_did = resolver_data.get("did")
|
|
|
12 |
def get_bluesky_post(arg: str) -> str:
|
13 |
"""Fetches the most recent post from a Bluesky account.
|
14 |
Args:
|
15 |
+
arg: The Bluesky handle (e.g., 'beccalewy' or 'resistrebelrevolt.net')
|
16 |
Returns:
|
17 |
A string containing the most recent post content or an error message
|
18 |
"""
|
19 |
import requests
|
20 |
|
21 |
+
# Clean up the handle (remove any extra spaces)
|
22 |
+
handle = arg.strip()
|
23 |
+
|
24 |
+
# Don't automatically append .bsky.social if the handle already has a domain
|
25 |
+
# (like resistrebelrevolt.net)
|
26 |
if "." not in handle:
|
27 |
full_handle = f"{handle}.bsky.social"
|
28 |
else:
|
29 |
full_handle = handle
|
30 |
|
31 |
try:
|
32 |
+
print(f"Trying to resolve handle: {full_handle}")
|
33 |
+
|
34 |
# Step 1: Use the public API endpoint to resolve the handle to a DID
|
|
|
35 |
resolver_url = "https://public.api.bsky.app/xrpc/com.atproto.identity.resolveHandle"
|
36 |
resolver_params = {"handle": full_handle}
|
37 |
|
38 |
resolver_response = requests.get(resolver_url, params=resolver_params)
|
39 |
|
40 |
if resolver_response.status_code != 200:
|
41 |
+
# Try alternate formats if the first attempt fails
|
42 |
+
if "." in handle:
|
43 |
+
# Maybe they included the domain but not in the right format
|
44 |
+
alternate_handle = handle # Original handle without modification
|
45 |
+
print(f"First attempt failed, trying alternate handle: {alternate_handle}")
|
46 |
+
|
47 |
+
resolver_params = {"handle": alternate_handle}
|
48 |
+
resolver_response = requests.get(resolver_url, params=resolver_params)
|
49 |
+
|
50 |
+
if resolver_response.status_code != 200:
|
51 |
+
return f"Could not resolve handle @{handle}. Status code: {resolver_response.status_code}"
|
52 |
+
else:
|
53 |
+
return f"Could not resolve handle @{handle}. Status code: {resolver_response.status_code}"
|
54 |
|
55 |
resolver_data = resolver_response.json()
|
56 |
user_did = resolver_data.get("did")
|