Coding-With-Raptor/Likendin-Agent
0
1from agents import function_tool2import requests3from dotenv import find_dotenv, load_dotenv4import os5 6 7# # Constants8LINKEDIN_ACCESS_TOKEN = os.getenv("LINKEDIN_ACCESS_TOKEN")9 10load_dotenv(find_dotenv())11 12HEADERS = {13 "Authorization": f"Bearer {LINKEDIN_ACCESS_TOKEN}",14 "Content-Type": "application/json",15}16 17 18def get_user_id():19 """20 Retrieve LinkedIn user profile information using the /userinfo endpoint.21 22 Returns:23 dict: User profile information or None if an error occurs.24 """25 url = "https://api.linkedin.com/v2/userinfo"26 27 try:28 response = requests.get(url, headers=HEADERS)29 response.raise_for_status()30 return response.json()31 except requests.exceptions.RequestException as e:32 print(f"Error fetching user info: {e}")33 return None34 35 36# @traceable37@function_tool38def post_content_linkedin(content: str):39 """40 Share content on LinkedIn.41 42 Args:43 params (RunContextWrapper[PostContentParams]): Parameters for the post.44 45 Returns:46 dict: API response or None if an error occurs.47 """48 user_info = get_user_id()49 if not user_info:50 print("Failed to retrieve user information.")51 return None52 53 author_urn = f"urn:li:person:{user_info['sub']}"54 url = "https://api.linkedin.com/v2/ugcPosts"55 payload = {56 "author": author_urn,57 "lifecycleState": "PUBLISHED",58 "specificContent": {59 "com.linkedin.ugc.ShareContent": {60 "shareCommentary": {"text": content},61 "shareMediaCategory": "NONE",62 }63 },64 "visibility": {"com.linkedin.ugc.MemberNetworkVisibility": "PUBLIC"},65 }66 67 try:68 response = requests.post(url, headers=HEADERS, json=payload)69 response.raise_for_status()70 return response.json()71 except requests.exceptions.RequestException as e:72 print(f"Error posting content: {e}")73 return None