mckabue commited on
Commit
505d72e
·
1 Parent(s): 58bed4f

Enhance Instagram username resolution by adding logging and improving response structure

Browse files
Files changed (1) hide show
  1. app.py +14 -8
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
- return await async_availability_status(
31
- resolve_instagram_username(username))
32
  case "linkedin-user":
33
- return await async_availability_status(
34
  resolve_linkedin_username(username, "in"))
35
  case "linkedin-page":
36
- return await async_availability_status(
37
  resolve_linkedin_username(username, "company"))
38
- return {
39
- "message": f'❌ The platform "{platform}" is not supported'
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,