Spaces:
Sleeping
Sleeping
| import json | |
| import requests | |
| import smtplib | |
| from email.mime.text import MIMEText | |
| from email.mime.multipart import MIMEMultipart | |
| from duckduckgo_search import DDGS | |
| import os | |
| emailkey = os.getenv("EMAIL_KEY") | |
| def search_duckduckgo(keywords): | |
| search_term = " ".join(keywords) | |
| with DDGS() as ddgs: | |
| return list(ddgs.text(keywords=search_term, region="cn-zh", safesearch="on", max_results=5)) | |
| def search_papers(query): | |
| url = f"https://api.crossref.org/works?query={query}" | |
| response = requests.get(url) | |
| if response.status_code == 200: | |
| data = response.json() | |
| papers = data['message']['items'] | |
| processed_papers = [] | |
| for paper in papers: | |
| processed_paper = { | |
| "ๆ ้ข": paper.get('title', [''])[0], | |
| "ไฝ่ ": ", ".join([f"{author.get('given', '')} {author.get('family', '')}" for author in paper.get('author', [])]), | |
| "DOI": paper.get('DOI', ''), | |
| "ISBN": ", ".join(paper.get('ISBN', [])), | |
| "ๆ่ฆ": paper.get('abstract', '').replace('<p>', '').replace('</p>', '').replace('<italic>', '').replace('</italic>', '') | |
| } | |
| processed_papers.append(processed_paper) | |
| return processed_papers | |
| else: | |
| return [] | |
| def send_email(to, subject, content): | |
| try: | |
| with smtplib.SMTP('106.15.184.28', 8025) as smtp: | |
| smtp.login("jwt", emailkey) | |
| message = MIMEMultipart() | |
| message['From'] = "Me <aixiao@aixiao.xyz>" | |
| message['To'] = to | |
| message['Subject'] = subject | |
| message.attach(MIMEText(content, 'html')) | |
| smtp.sendmail("aixiao@aixiao.xyz", to, message.as_string()) | |
| return True | |
| except Exception as e: | |
| print(f"ๅ้้ฎไปถๆถๅบ้: {str(e)}") | |
| return False | |
| def process_function_call(function_name, function_args): | |
| if function_name == "search_duckduckgo": | |
| keywords = function_args.get('keywords', []) | |
| if not keywords: | |
| return None | |
| return search_duckduckgo(keywords) | |
| elif function_name == "search_papers": | |
| query = function_args.get('query', '') | |
| if not query: | |
| return None | |
| return search_papers(query) | |
| elif function_name == "send_email": | |
| to = function_args.get('to', '') | |
| subject = function_args.get('subject', '') | |
| content = function_args.get('content', '') | |
| if not to or not subject or not content: | |
| return None | |
| success = send_email(to, subject, content) | |
| return { | |
| "success": success, | |
| "to": to, | |
| "subject": subject, | |
| "content": content | |
| } | |
| else: | |
| return None |