Enhance Instagram username resolution by adding logging and improving response structure
Browse files
app.py
CHANGED
@@ -25,21 +25,25 @@ async def index():
|
|
25 |
|
26 |
@app.route('/check/<platform>/<username>', methods=['GET'])
|
27 |
async def check_social_media_handle(platform: str, username: str):
|
|
|
|
|
28 |
match platform.lower():
|
29 |
case "instagram":
|
30 |
-
|
31 |
-
resolve_instagram_username(username))
|
32 |
case "linkedin-user":
|
33 |
-
|
34 |
resolve_linkedin_username(username, "in"))
|
35 |
case "linkedin-page":
|
36 |
-
|
37 |
resolve_linkedin_username(username, "company"))
|
38 |
-
|
39 |
-
|
40 |
-
|
|
|
|
|
41 |
|
42 |
-
def resolve_instagram_username(username: str) -> tuple[str, bool, str] :
|
43 |
def get_json_value(page_source, key, value_pattern):
|
44 |
pattern = rf'[\'"]?{key}[\'"]?\s*:\s*[\'"]?({value_pattern})[\'"]?'
|
45 |
match = re.search(pattern, page_source, flags=re.IGNORECASE)
|
@@ -69,6 +73,8 @@ def resolve_instagram_username(username: str) -> tuple[str, bool, str] :
|
|
69 |
headers={
|
70 |
"x-ig-app-id": x_ig_app_id,
|
71 |
})
|
|
|
|
|
72 |
status = (user_data_response.json() or {}).get('status')
|
73 |
return (
|
74 |
username,
|
|
|
25 |
|
26 |
@app.route('/check/<platform>/<username>', methods=['GET'])
|
27 |
async def check_social_media_handle(platform: str, username: str):
|
28 |
+
logs = []
|
29 |
+
response = {}
|
30 |
match platform.lower():
|
31 |
case "instagram":
|
32 |
+
response = await async_availability_status(
|
33 |
+
resolve_instagram_username(username, logs.append))
|
34 |
case "linkedin-user":
|
35 |
+
response = await async_availability_status(
|
36 |
resolve_linkedin_username(username, "in"))
|
37 |
case "linkedin-page":
|
38 |
+
response = await async_availability_status(
|
39 |
resolve_linkedin_username(username, "company"))
|
40 |
+
case _:
|
41 |
+
response = {
|
42 |
+
"message": f'❌ The platform "{platform}" is not supported'
|
43 |
+
}
|
44 |
+
return {**response, "logs": logs}
|
45 |
|
46 |
+
def resolve_instagram_username(username: str, logger) -> tuple[str, bool, str] :
|
47 |
def get_json_value(page_source, key, value_pattern):
|
48 |
pattern = rf'[\'"]?{key}[\'"]?\s*:\s*[\'"]?({value_pattern})[\'"]?'
|
49 |
match = re.search(pattern, page_source, flags=re.IGNORECASE)
|
|
|
73 |
headers={
|
74 |
"x-ig-app-id": x_ig_app_id,
|
75 |
})
|
76 |
+
logger(f"user_data_response:status: {user_data_response.ok}")
|
77 |
+
logger(f"user_data_response:text: {user_data_response.text}")
|
78 |
status = (user_data_response.json() or {}).get('status')
|
79 |
return (
|
80 |
username,
|