| from fastapi import FastAPI, File, UploadFile |
| from fastapi.responses import FileResponse |
| import os |
| import io |
| from fastapi.middleware.cors import CORSMiddleware |
| import requests |
| import pandas as pd |
|
|
|
|
| app = FastAPI() |
| app.add_middleware( |
| CORSMiddleware, |
| allow_origins=["*"], |
| allow_credentials=True, |
| allow_methods=["*"], |
| allow_headers=["*"], |
| ) |
| |
| API_KEY = "an3vib2nh4-3R48tMWfBZg" |
| WEBSITE_COLUMN = "Website" |
|
|
|
|
|
|
| def get_company_data(api_key, domain): |
| response = requests.get(f"https://api.apollo.io/v1/organizations/enrich?api_key={api_key}&domain={domain}") |
| result = response.json() |
| |
| if "organization" in result: |
| org = result["organization"] |
| return { |
| "domain": domain, |
| "alexa_ranking": org.get("alexa_ranking", "unknown"), |
| "annual_revenue": org.get("annual_revenue", "unknown"), |
| "country": org.get("country", "unknown"), |
| "estimated_num_employees": org.get("estimated_num_employees", "unknown"), |
| "industry": org.get("industry", "unknown"), |
| "keywords": org.get("keywords", "unknown"), |
| "linkedin_uid": org.get("linkedin_uid", "unknown") |
| } |
| else: |
| print(f"No data for {domain}") |
| return { |
| "domain": domain, |
| "alexa_ranking": "unknown", |
| "annual_revenue": "unknown", |
| "country": "unknown", |
| "estimated_num_employees": "unknown", |
| "industry": "unknown", |
| "keywords": "unknown", |
| "linkedin_uid": "unknown" |
| } |
|
|
| @app.post("/get_data_file") |
| def main(file: UploadFile = File(...)): |
| LEAD_LIST_PATH = file.filename |
| print(file.filename) |
| with open(file.filename, "wb") as file_object: |
| file_object.write(file.file.read()) |
| |
| def get_domain(url): |
| if "//" in url: |
| start = url.index("//") + 2 |
| else: |
| start = 0 |
| result = url[start:].strip("/") |
| return result |
| |
| |
| data = pd.read_excel(LEAD_LIST_PATH) |
| websites = data[WEBSITE_COLUMN].drop_duplicates().apply(get_domain) |
| |
| |
| company_data = [] |
| for website in websites: |
| company_data.append(get_company_data(API_KEY, website)) |
| |
| OUTPUT_PATH = "CompanyData.xlsx" |
| |
| df = pd.DataFrame(company_data) |
| df.to_excel(OUTPUT_PATH, index=False) |
| |
| print("Company data has been successfully fetched and saved.") |
| return FileResponse(OUTPUT_PATH, media_type='application/octet-stream', filename=OUTPUT_PATH) |
|
|
|
|
|
|
|
|