new data added
This commit is contained in:
@@ -1,3 +1,3 @@
|
|||||||
PERPLEXITY_AI_API = "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"
|
PERPLEXITY_AI_API = "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"
|
||||||
OPENAI_API_KEY = "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"
|
OPENAI_API_KEY = "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"
|
||||||
TAVILY_API_KEY = "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"
|
TAVILY_API_KEY = "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"
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
[
|
||||||
|
"{\"name\": \"Nava Rose\", \"facebook\": {\"Facebook_name\": \"thenavarose\", \"Facebook_followers\": \"3,025 likes\"}, \"instagram\": {\"Instagram_name\": \"@thenavarose\", \"Instagram_followers\": \"474.3K\"}, \"tiktok\": {\"Tiktok_name\": \"@the.navarose\", \"Tiktok_followers\": \"5.8 million\"}, \"youtube\": {\"Youtube_name\": \"Nava Rose\", \"Youtube_subscribers\": \"1.17 million\"}, \"contact\": {\"contact\": null, \"location\": \"Los Angeles, California, United States\"}}",
|
||||||
|
"{\"name\": \"Sophia Li\", \"facebook\": {\"Facebook_name\": null, \"Facebook_followers\": null}, \"instagram\": {\"Instagram_name\": \"sophfei\", \"Instagram_followers\": \"70K\"}, \"tiktok\": {\"Tiktok_name\": \"@sophfei\", \"Tiktok_followers\": \"87.7K\"}, \"youtube\": {\"influencer_youtube_name\": null, \"youtube_followers\": null}, \"contact\": {\"contact\": \"Not publicly listed\", \"location\": \"United States\"}}",
|
||||||
|
"{\"name\": \"Emily Redfern\", \"facebook\": {\"Facebook_name\": \"Emily Redfern\", \"Facebook_followers\": 345761}, \"instagram\": {\"Instagram_name\": \"emily_redfern\", \"Instagram_followers\": \"20K\"}, \"tiktok\": {\"Tiktok_username\": \"@emily_redfern\", \"Tiktok_followers\": \"87.7K\"}, \"youtube\": {\"Youtube username\": null, \"Youtube subscribers\": null}, \"contact\": {\"contact\": \"Not available\", \"location\": \"Not available\"}}",
|
||||||
|
"{\"name\": \"Nolan Gould\", \"facebook\": {\"Facebook_name\": \"NolanGouldOfficial\", \"Facebook_followers\": null}, \"instagram\": {\"influencer_instagram_name\": \"nolangould\", \"instagram_followers\": \"1.7 million\"}, \"tiktok\": {\"Tiktok_name\": \"@nolangould\", \"Tiktok_followers\": \"53.6K\"}, \"youtube\": {\"Youtube_name\": null, \"Youtube_followers\": null}, \"contact\": {\"contact\": \"No specific contact details provided. Suggested to reach out to Nolan Gould's agent for inquiries.\", \"location\": \"Los Angeles, California, United States\"}}",
|
||||||
|
"{\"name\": \"Lucy Biggers\", \"facebook\": {\"Facebook_name\": null, \"Facebook_followers\": 6120}, \"instagram\": {\"Instagram_name\": \"lucybiggers\", \"Instagram_followers\": \"41K followers\"}, \"tiktok\": {\"Tiktok_name\": null, \"Tiktok_followers\": null}, \"youtube\": {\"influencer_youtube_name\": null, \"youtube_followers\": 11500000}, \"contact\": {\"contact\": \"No specific contact details or email address available\", \"location\": \"United States\"}}",
|
||||||
|
"{\"name\": \"Bonnie Thunders\", \"facebook\": {\"Facebook_name\": \"bonniethunders340\", \"Facebook_followers\": \"11,000\"}, \"instagram\": {\"Instagram_name\": \"@bonniethunders\", \"Instagram_followers\": \"19K\"}, \"tiktok\": {\"TikTok_username\": null, \"TikTok_followers\": null}, \"youtube\": {\"Youtube_name\": null, \"Youtube_followers\": null}, \"contact\": {\"contact\": \"Available through The Handbook\", \"location\": \"Portland, Oregon, United States\"}}",
|
||||||
|
"{\"name\": \"Erika Lampe\", \"facebook\": {\"Facebook_name\": null, \"Facebook_followers\": null}, \"instagram\": {\"Instagram_name\": \"@lampe23\", \"Instagram_followers\": 8228}, \"tiktok\": {\"Tiktok_name\": \"@erika.lampe\", \"Tiktok_followers\": 2330}, \"youtube\": {\"Youtube_name\": null, \"Youtube_followers\": \"120K\"}, \"contact\": {\"contact\": \"Contact information not available\", \"location\": \"NYC, USA\"}}",
|
||||||
|
"{\"name\": \"Ridge\", \"facebook\": {\"Facebook_name\": \"@ridgeenvironmentalplanning\", \"Facebook_followers\": \"294,529\"}, \"instagram\": {\"influencer_instagram_name\": null, \"instagram_followers\": null}, \"tiktok\": {\"TikTok_name\": \"@ridge.x\", \"TikTok_followers\": \"87.7K\"}, \"youtube\": {\"Youtube_name\": null, \"Youtube_followers\": null}, \"contact\": {\"contact\": \"Not available\", \"location\": \"Wheat Ridge, CO, US\"}}",
|
||||||
|
"{\"name\": \"Kiana Kazemi\", \"facebook\": {\"Facebook_name\": null, \"Facebook_followers\": null}, \"instagram\": {\"Instagram_username\": \"@kiana.kaz\", \"Instagram_followers\": \"15K\"}, \"tiktok\": {\"Tiktok_name\": \"@kianakazemi\", \"Tiktok_followers\": 455}, \"youtube\": {\"Youtube_username\": \"Kiana Kazemi\", \"Youtube_followers\": null}, \"contact\": {\"contact\": \"hellokianakazemi@gmail.com\", \"location\": \"California, United States\"}}",
|
||||||
|
"{\"name\": \"Leah Thomas\", \"facebook\": {\"Facebook_name\": null, \"Facebook_followers\": null}, \"instagram\": {\"Instagram_name\": \"@greengirlleah\", \"Instagram_followers\": \"260,000\"}, \"tiktok\": {\"Tiktok_name\": \"@greengirlleahthomas\", \"Tiktok_followers\": \"20.6K\"}, \"youtube\": {\"YouTube_name\": \"@greengirlleah\", \"YouTube_followers\": 41000}, \"contact\": {\"contact\": null, \"location\": \"Santa Barbara, California, United States\"}}",
|
||||||
|
"{\"name\": \"Emily Purks\", \"facebook\": {\"Facebook_name\": \"emily.purkiss\", \"Facebook_followers\": null}, \"instagram\": {\"Instagram_name\": \"@curlyemgabs\", \"Instagram_followers\": \"39K\"}, \"tiktok\": {\"Tiktok_name\": null, \"Tiktok_followers\": \"87.7K\"}, \"youtube\": {\"Youtube_username\": null, \"Youtube_followers\": null}, \"contact\": {\"contact\": \"emilytitolo97@gmail.com\", \"location\": \"Raleigh, North Carolina, USA\"}}",
|
||||||
|
"{\"name\": \"Sara Oteri\", \"facebook\": {\"Facebook_name\": \"@sara.oteri.397\", \"Facebook_followers\": \"41,078\"}, \"instagram\": {\"Instagram_name\": \"@sara.oteri\", \"Instagram_followers\": \"33,000\"}, \"tiktok\": {\"Tiktok_username\": null, \"Tiktok_followers\": null}, \"youtube\": {\"youtube_name\": null, \"youtube_followers\": null}, \"contact\": {\"contact\": \"sara.oteri@gmail.com\", \"location\": \"Western Australia, Australia\"}}",
|
||||||
|
"{\"name\": \"Astrid Aschenbrenner\", \"facebook\": {\"Facebook_name\": \"astrid.aschenbrenner.5\", \"Facebook_followers\": null}, \"instagram\": {\"Instagram_name\": \"@wienerkind_\", \"Instagram_followers\": \"36K\"}, \"tiktok\": {\"tiktok_name\": \"@wienerkind_\", \"tiktok_followers\": null}, \"youtube\": {\"Youtube_name\": null, \"Youtube_followers\": 152000}, \"contact\": {\"contact\": \"Available through The Handbook's influencer marketing platform\", \"location\": \"Austria\"}}",
|
||||||
|
"{\"name\": \"Alaina Wood\", \"facebook\": {\"Facebook_name\": null, \"Facebook_followers\": null}, \"instagram\": {\"Instagram_name\": \"@itsthegarbagequeen\", \"Instagram_followers\": 194000}, \"tiktok\": {\"Tiktok_username\": \"@thegarbagequeen\", \"Tiktok_followers\": \"383.1K\"}, \"youtube\": {\"Youtube_name\": \"The Garbage Queen\", \"Youtube_subscribers\": null}, \"contact\": {\"contact\": \"w*****@gmail.com\", \"location\": \"Tennessee, United States\"}}",
|
||||||
|
"{\"name\": \"Kristy Drutman\", \"facebook\": {\"Facebook_name\": null, \"Facebook_followers\": null}, \"instagram\": {\"Instagram_name\": \"@browngirl_green\", \"Instagram_followers\": \"79K\"}, \"tiktok\": {\"Tiktok_username\": null, \"Tiktok_followers\": \"78.8 million\"}, \"youtube\": {\"Youtube_username\": null, \"Youtube_followers\": null}, \"contact\": {\"contact\": null, \"location\": \"United States\"}}",
|
||||||
|
"{\"name\": \"Ben Brown & Ciara Doyle\", \"facebook\": {\"Facebook_name\": null, \"Facebook_followers\": null}, \"instagram\": {\"Instagram_influencer_name\": \"@goinggreenmedia\", \"Instagram_followers\": \"527K\"}, \"tiktok\": {\"Tiktok_username\": \"@goinggreenmedia\", \"Tiktok_followers\": null}, \"youtube\": {\"Youtube_name\": \"Going Green Media\", \"Youtube_followers\": null}, \"contact\": {\"contact\": \"hello@goinggreenmedia.co.uk\", \"location\": \"Los Angeles, California, United States\"}}",
|
||||||
|
"{\"name\": \"Jeremy Casebeer\", \"facebook\": {\"Facebook_name\": \"@jeremy.casebeer\", \"Facebook_followers\": null}, \"instagram\": {\"Instagram_name\": \"jeremy.casebeer\", \"Instagram_followers\": \"20.6k\"}, \"tiktok\": {\"Tiktok_name\": \"jeremy.casebeer\", \"Tiktok_followers\": \"87.7K\"}, \"youtube\": {\"Youtube_name\": \"@jeremycasebeer5649\", \"Youtube_subscribers\": null}, \"contact\": {\"contact\": null, \"location\": \"Santa Barbara, California, United States\"}}",
|
||||||
|
"{\"name\": \"Barkha Singh\", \"facebook\": {\"Facebook_name\": \"barkha.singh.2024\", \"Facebook_followers\": \"485,848\"}, \"instagram\": {\"Instagram_name\": \"@barkhasingh0308\", \"Instagram_followers\": \"3 million\"}, \"tiktok\": {\"Tiktok_name\": \"@barkhasingh0308\", \"Tiktok_followers\": \"87.7K\"}, \"youtube\": {\"youtube_name\": null, \"youtube_subscribers\": 488000}, \"contact\": {\"contact\": \"Join The Handbook platform for access to Barkha Singh's direct contact information.\", \"location\": \"Not publicly disclosed\"}}",
|
||||||
|
"{\"name\": \"Rae Rodriguez\", \"facebook\": {\"Facebook_name\": null, \"Facebook_followers\": null}, \"instagram\": {\"Instagram_name\": \"raerodriguez_\", \"Instagram_followers\": \"41.3K\"}, \"tiktok\": {\"Tiktok_influencer_name\": \"@raerodriguez_\", \"Tiktok_followers\": \"37.1K\"}, \"youtube\": {\"youtube_name\": \"@raerodriguez\", \"youtube_subscribers\": \"120K\"}, \"contact\": {\"contact\": \"r***@americascores.org\", \"location\": \"Not explicitly mentioned\"}}",
|
||||||
|
"{\"name\": \"SAMPAN\", \"facebook\": {\"Facebook_name\": null, \"Facebook_followers\": null}, \"instagram\": {\"Instagram_username\": null, \"Instagram_followers\": null}, \"tiktok\": {\"Tiktok_name\": \"@samanthapanlilio\", \"Tiktok_followers\": 49000}, \"youtube\": {\"Youtube_name\": \"@perkumpulansampan\", \"Youtube_followers\": null}, \"contact\": {\"contact\": {\"phone\": \"(215) 732-3501\", \"email_format\": \"sampanphilly.com\"}, \"location\": \"Not specified\"}}",
|
||||||
|
"{\"name\": \"Tomaz Stojanovic\", \"facebook\": {\"Facebook_name\": \"tomaz.stojanovic.2024\", \"Facebook_followers\": null}, \"instagram\": {\"Instagram_name\": \"@bl4ck\", \"Instagram_followers\": \"126K followers\"}, \"tiktok\": {\"Tiktok_name\": null, \"Tiktok_followers\": null}, \"youtube\": {\"Youtube_name\": null, \"Youtube_followers\": \"125K\"}, \"contact\": {\"contact\": null, \"location\": null}}",
|
||||||
|
"{\"name\": \"Tessa Nelissen\", \"facebook\": {\"Facebook_name\": \"tessa.nelissen.18\", \"Facebook_followers\": null}, \"instagram\": {\"Instagram_name\": \"jessali_tn\", \"Instagram_followers\": \"95K\"}, \"tiktok\": {\"Tiktok_name\": \"@jessali_tn\", \"Tiktok_followers\": \"87.7K\"}, \"youtube\": {\"Youtube_name\": \"jessali_tn\", \"Youtube_followers\": null}, \"contact\": {\"contact\": \"@jessali_tn\", \"location\": \"Norway\"}}",
|
||||||
|
"{\"name\": \"GITTEMARIE JOHANSEN\", \"facebook\": {\"facebook_name\": \"Gittemary\", \"facebook_followers\": 3483}, \"instagram\": {\"Instagram_name\": \"@gittemary\", \"Instagram_followers\": \"180K\"}, \"tiktok\": {\"tiktok_name\": \"@gittemary\", \"tiktok_followers\": null}, \"youtube\": {\"Youtube_name\": \"Gittemary\", \"Youtube_followers\": null}, \"contact\": {\"contact\": \"***@outlook.dk\", \"location\": \"Denmark\"}}",
|
||||||
|
"{\"name\": \"Lampe23\", \"facebook\": {\"Facebook_name\": null, \"Facebook_followers\": null}, \"instagram\": {\"influencer_social_media_name\": \"@lampe23\", \"instagram_followers\": \"8,228\"}, \"tiktok\": {\"Tiktok_name\": null, \"Tiktok_followers\": \"87.7K\"}, \"youtube\": {\"YouTube_name\": null, \"YouTube_followers\": 11000}, \"contact\": {\"contact\": null, \"location\": \"Arizona, United States\"}}",
|
||||||
|
"{\"name\": \"Iamexploringworld\", \"facebook\": {\"facebook_name\": null, \"facebook_followers\": null}, \"instagram\": {\"Instagram_name\": null, \"Instagram_followers\": 6514}, \"tiktok\": {\"Tiktok_name\": null, \"Tiktok_followers\": null}, \"youtube\": {\"Youtube_name\": null, \"Youtube_followers\": 46300}, \"contact\": {\"contact\": null, \"location\": null}}",
|
||||||
|
"{\"name\": \"She.roams.wild\", \"facebook\": {\"Facebook_name\": \"@WildSheRoams\", \"Facebook_followers\": null}, \"instagram\": {\"Instagram_name\": \"she.roams.wild\", \"Instagram_followers\": \"22K\"}, \"tiktok\": {\"TikTok_name\": \"@sheroamswild\", \"TikTok_followers\": \"44.3K\"}, \"youtube\": {\"Youtube_name\": \"SheRoamsWild\", \"Youtube_followers\": 14000}, \"contact\": {\"contact\": \"she.roams.wild@thestation.io\", \"location\": \"United States\"}}"
|
||||||
|
]
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
[
|
||||||
|
"{\"name\": \"The Verge\", \"facebook\": {\"Facebook_name\": \"theverge\", \"Facebook_followers\": \"3,410,715\"}, \"instagram\": {\"Instagram_name\": \"@verge\", \"Instagram_followers\": \"2 million\"}, \"tiktok\": {\"TikTok_name\": \"@verge\", \"TikTok_followers\": \"310.2K\"}, \"youtube\": {\"Youtube_username\": \"TheVerge\", \"Youtube_followers\": \"3.4 million\"}, \"contact\": {\"contact\": \"Contact details can be found on their official website under the 'Contact The Verge' section.\", \"location\": \"No specific location information available.\"}}",
|
||||||
|
"{\"name\": \"Linus Tech Tips\", \"facebook\": {\"Facebook_name\": \"LinusTech\", \"Facebook_followers\": \"1.8 million\"}, \"instagram\": {\"Instagram_name\": \"@linustech\", \"Instagram_followers\": \"2 million\"}, \"tiktok\": {\"Tiktok_name\": \"@linus_tech_tips\", \"Tiktok_followers\": \"3.4K\"}, \"youtube\": {\"Youtube_name\": \"Linus Tech Tips\", \"Youtube_subscribers\": \"15.9 million\"}, \"contact\": {\"contact\": \"linustechtips@gmail.com\", \"location\": \"British Columbia, Canada\"}}",
|
||||||
|
"{\"name\": \"Marques Brownlee\", \"facebook\": {\"Facebook_name\": \"marquesbrownlee\", \"Facebook_followers\": null}, \"instagram\": {\"Instagram_username\": \"@mkbhd\", \"Instagram_followers\": \"5 million\"}, \"tiktok\": {\"Tiktok_name\": \"@mkbhd\", \"Tiktok_followers\": \"2.1 million\"}, \"youtube\": {\"Youtube_name\": \"MKBHD\", \"Youtube_followers\": \"19.1 million\"}, \"contact\": {\"contact\": {\"email\": \"m***@mkbhd.com\", \"general_email\": \"[email protected]\"}, \"location\": \"United States\"}}",
|
||||||
|
"{\"name\": \"JerryRigEverything\", \"facebook\": {\"Facebook_name\": \"JerryRigEverything\", \"Facebook_followers\": 1629628}, \"instagram\": {\"Instagram_name\": \"@JerryRigEverything\", \"Instagram_followers\": \"755,000\"}, \"tiktok\": {\"Tiktok_name\": \"@jerryrigeverythingusa\", \"Tiktok_followers\": \"1462\"}, \"youtube\": {\"Youtube name\": \"JerryRigEverything\", \"Youtube subscribers\": 8.89}, \"contact\": {\"contact\": \"za****n@gmail.com\", \"location\": \"United States\"}}",
|
||||||
|
"{\"name\": \"Unbox Therapy\", \"facebook\": {\"Facebook_name\": \"unboxtherapy\", \"Facebook_followers\": \"2.7 million\"}, \"instagram\": {\"Instagram_name\": \"@unboxtherapy\", \"Instagram_followers\": \"3 million\"}, \"tiktok\": {\"Tiktok_name\": \"@unboxtherapyofficial\", \"Tiktok_followers\": \"925.4K\"}, \"youtube\": {\"Youtube_username\": \"Unbox Therapy\", \"Youtube_followers\": \"24.8 million\"}, \"contact\": {\"contact\": null, \"location\": \"United States\"}}",
|
||||||
|
"{\"name\": \"TechInfluencer\", \"facebook\": {\"Facebook_name\": \"The Tech Influencer\", \"Facebook_followers\": null}, \"instagram\": {\"Instagram_name\": \"NULL\", \"Instagram_followers\": \"225,000\"}, \"tiktok\": {\"Tiktok_name\": null, \"Tiktok_followers\": null}, \"youtube\": {\"youtube_name\": \"Trakin Tech\", \"youtube_followers\": 394000}, \"contact\": {\"contact\": null, \"location\": \"Los Angeles County, California, United States\"}}",
|
||||||
|
"{\"name\": \"Janky and Guggimon\", \"facebook\": {\"Facebook_name\": null, \"Facebook_followers\": null}, \"instagram\": {\"Instagram_name\": \"@jankyandguggimon, @guggimon\", \"Instagram_followers\": \"Janky: 995,000, Guggimon: 1.4 million\"}, \"tiktok\": {\"Tiktok_username\": \"@jankyandguggimon\", \"Tiktok_followers\": \"11.8 million\"}, \"youtube\": {\"Youtube_influencer_name\": null, \"Youtube_followers\": null}, \"contact\": {\"contact\": \"+1 (310) 861-4115\", \"location\": \"Virtual realm of social media platforms\"}}",
|
||||||
|
"{\"name\": \"Daily Dose Of Internet\", \"facebook\": {\"Facebook_name\": \"DoseOfInternetDaily\", \"Facebook_followers\": 17857}, \"instagram\": {\"Instagram_name\": \"@daily_dose_of_internet_\", \"Instagram_followers\": \"981,000\"}, \"tiktok\": {\"Tiktok_name\": \"@dailydoseofinternet\", \"Tiktok_followers\": \"334.4K\"}, \"youtube\": {\"youtube_name\": \"@DailyDoseOfInternet\", \"youtube_followers\": \"19.3 million\"}, \"contact\": {\"contact\": \"Contact details are not directly provided. Reach through social media platforms like YouTube, Instagram, TikTok, and Facebook.\", \"location\": \"United States\"}}",
|
||||||
|
"{\"name\": \"IShowSpeed\", \"facebook\": {\"Facebook_name\": \"Ishowspeed\", \"Facebook_followers\": \"over two million\"}, \"instagram\": {\"Instagram_name\": \"@ishowspeed\", \"Instagram_followers\": \"14 million\"}, \"tiktok\": {\"Tiktok_username\": \"@ishowspeed\", \"Tiktok_followers\": \"30.5 million\"}, \"youtube\": {\"Youtube_name\": \"IShowSpeed\", \"Youtube_subscribers\": null}, \"contact\": {\"contact\": \"ishowspeed513@gmail.com\", \"location\": \"Philippines\"}}",
|
||||||
|
"{\"name\": \"Lil Miquela\", \"facebook\": {\"facebook_name\": \"lilmiquela\", \"facebook_followers\": null}, \"instagram\": {\"Instagram_name\": \"lilmiquela\", \"Instagram_followers\": \"3 million\"}, \"tiktok\": {\"Tiktok_name\": \"@lilmiquela\", \"Tiktok_followers\": \"3.4 million\"}, \"youtube\": {\"youtube_name\": \"LilMiquela\", \"youtube_subscribers\": \"11 million\"}, \"contact\": {\"contact\": \"No direct contact information available as Lil Miquela is a fictional character and AI influencer.\", \"location\": \"Los Angeles\"}}"
|
||||||
|
]
|
||||||
+272
-110
@@ -2,7 +2,7 @@
|
|||||||
"cells": [
|
"cells": [
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 12,
|
"execution_count": 32,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
"True"
|
"True"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 12,
|
"execution_count": 32,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"output_type": "execute_result"
|
"output_type": "execute_result"
|
||||||
}
|
}
|
||||||
@@ -25,6 +25,8 @@
|
|||||||
"from tavily import TavilyClient\n",
|
"from tavily import TavilyClient\n",
|
||||||
"from langchain_core.prompts.prompt import PromptTemplate\n",
|
"from langchain_core.prompts.prompt import PromptTemplate\n",
|
||||||
"from langchain_core.output_parsers import StrOutputParser, JsonOutputParser\n",
|
"from langchain_core.output_parsers import StrOutputParser, JsonOutputParser\n",
|
||||||
|
"import concurrent.futures\n",
|
||||||
|
"import json\n",
|
||||||
"from loguru import logger\n",
|
"from loguru import logger\n",
|
||||||
"load_dotenv()"
|
"load_dotenv()"
|
||||||
]
|
]
|
||||||
@@ -147,46 +149,18 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 7,
|
"execution_count": 21,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"prompt = \"\"\"\n",
|
"prompt = \"\"\"\n",
|
||||||
" Give me a list of the names of the all the beauty and skincare influencers in USA\n",
|
" Give me a list of the names of the all the top and popular beauty and skincare influencers in USA. People that are known across the internet. I only need their names. Give me all that's available as much as possible. \n",
|
||||||
"\"\"\""
|
"\"\"\""
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 8,
|
"execution_count": 22,
|
||||||
"metadata": {},
|
|
||||||
"outputs": [],
|
|
||||||
"source": [
|
|
||||||
"# prompt = \"\"\"\n",
|
|
||||||
"# I'm a business owner in search for influencers to promote my brand.\\n\n",
|
|
||||||
"# My brand falls under this category : \"Beauty & Skincare\" \\n.\n",
|
|
||||||
"# I need your help with getting information for at least the top 30 influencers in Alabama in the USA. \\n\n",
|
|
||||||
"# These are the informations I need regarding each of them: \\n\n",
|
|
||||||
"# 1. Name \\n\n",
|
|
||||||
"# 2. Contact info \\n\n",
|
|
||||||
"# 4. Facebook username\\n\n",
|
|
||||||
"# 5. Instagram username \\n\n",
|
|
||||||
"# 6. Tiktok username \\n\n",
|
|
||||||
"# 7. Youtube username \\n\n",
|
|
||||||
"# 8. Facebook followers \\n\n",
|
|
||||||
"# 9. Instagram followers \\n\n",
|
|
||||||
"# 10 Tiktok followers \\n\n",
|
|
||||||
"# 11. Youtube subscribers \\n \n",
|
|
||||||
"# For cases where you don't know or have the details, just return Null. \\n\n",
|
|
||||||
"# Make sure you return a structured response only. Don't add extra informations. \\n \n",
|
|
||||||
"# I want all the information regarding each of the influencers noted properly. \\n\n",
|
|
||||||
"# Please do this carefully and correctly. \n",
|
|
||||||
"# \"\"\""
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": 9,
|
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
@@ -194,7 +168,7 @@
|
|||||||
"output_type": "stream",
|
"output_type": "stream",
|
||||||
"text": [
|
"text": [
|
||||||
"\n",
|
"\n",
|
||||||
" Give me a list of the names of the all the beauty and skincare influencers in USA\n",
|
" Give me a list of the names of the all the top and popular beauty and skincare influencers in USA. People that are known across the internet. I only need their names. Give me all that's available as much as possible. \n",
|
||||||
"\n"
|
"\n"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -205,67 +179,47 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 10,
|
"execution_count": 23,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"name": "stdout",
|
"name": "stdout",
|
||||||
"output_type": "stream",
|
"output_type": "stream",
|
||||||
"text": [
|
"text": [
|
||||||
"Given the extensive list of influencers across various sources, here is a combined list of beauty and skincare influencers mentioned in the provided search results:\n",
|
"Here is a comprehensive list of popular beauty and skincare influencers in the USA, based on the provided sources:\n",
|
||||||
"\n",
|
"\n",
|
||||||
"### From Modash (Top 20 American Beauty Influencers on Instagram)\n",
|
"1. **Caroline Hirons**\n",
|
||||||
"1. Alexis Tyler (@iamalexistyler)\n",
|
"2. **Hyram Yarbro**\n",
|
||||||
"2. LaShay (@k_bella3)\n",
|
"3. **Shalini Kutti**\n",
|
||||||
"3. G.H.❤️ RN,BSN👩🏽⚕️ (@_therealparis)\n",
|
"4. **Amy Serrano**\n",
|
||||||
"4. Ashanti Camille | HTX Fashion & Lifestyle\n",
|
"5. **Cecilia**\n",
|
||||||
"5. MaLeaн\n",
|
"6. **Ozy**\n",
|
||||||
"6. C J (@hoodspolitic_)\n",
|
"7. **Divina Wong**\n",
|
||||||
"7. 💕🐎COUNTRY BEAUTY🐎💕 (@_escapewithsyd)\n",
|
"8. **Shreya Jain**\n",
|
||||||
"8. Beauty Therapist (@ambitiousamb__)\n",
|
"9. **Debasree Banerjee**\n",
|
||||||
"9. Faye Davis (@mz_fae88)\n",
|
"10. **Shalini Srivastava**\n",
|
||||||
"10. Media Queen 👑 (@what_shayna_say)\n",
|
"11. **Ankita Chaturvedi**\n",
|
||||||
"11. Tee 🤍 | Natural Hair + UGC (@theblushway)\n",
|
"12. **Adrianna Kalisz**\n",
|
||||||
"12. (And 8 more influencers listed on the page, but not detailed here due to space constraints)\n",
|
"13. **Bethany Mota**\n",
|
||||||
|
"14. **Zoe Elizabeth Sugg (Zoella)**\n",
|
||||||
|
"15. **Rachel Levin**\n",
|
||||||
|
"16. **Nikkie De Jager**\n",
|
||||||
|
"17. **Eva Gutowski**\n",
|
||||||
|
"18. **Marzia Bisognin**\n",
|
||||||
|
"19. **Jeffree Star**\n",
|
||||||
|
"20. **Carli Bybel**\n",
|
||||||
|
"21. **Mindy McKnight**\n",
|
||||||
|
"22. **Promise Phan**\n",
|
||||||
|
"23. **Jessica Lyn**\n",
|
||||||
|
"24. **Cordelia (Phyrra)**\n",
|
||||||
|
"25. **Jennifer Mathews**\n",
|
||||||
|
"26. **Sunny Subramanian**\n",
|
||||||
|
"27. **Vicky Farrell**\n",
|
||||||
|
"28. **Mariel**\n",
|
||||||
|
"29. **Danielle**\n",
|
||||||
|
"30. **Kasey S**\n",
|
||||||
"\n",
|
"\n",
|
||||||
"### From Feedspot (Top 50 Cruelty Free Beauty Influencers in 2024)\n",
|
"Note: This list includes both macro and micro influencers, as well as those who specialize in various aspects of beauty and skincare.\n"
|
||||||
"1. Jessica Lyn (@veganbeautyaddict)\n",
|
|
||||||
"2. Cordelia (@phyrra)\n",
|
|
||||||
"3. Jennifer Mathews\n",
|
|
||||||
"4. Sunny Subramanian\n",
|
|
||||||
"5. Vicky (@kabukirune)\n",
|
|
||||||
"6. Bella Fiori\n",
|
|
||||||
"7. Suzana Rose\n",
|
|
||||||
"8. Tashina\n",
|
|
||||||
"9. Mariel (@marielveganbeauty)\n",
|
|
||||||
"10. Danielle (@crueltyfreeveganbeauty)\n",
|
|
||||||
"11. Kasey S (@skinandvelvet)\n",
|
|
||||||
"12. Project Pan (@themakeupfairy_)\n",
|
|
||||||
"13. Caitie Anisman-Reiner (@naturallabeauty)\n",
|
|
||||||
"14. Krisztina Williams (@krisztinawilliams)\n",
|
|
||||||
"15. Dreesa (@flightqueen7)\n",
|
|
||||||
"16. Marissa Jean (@glambyrissaj)\n",
|
|
||||||
"17. Hailee Jones (@haileejonesmua)\n",
|
|
||||||
"18. Kate Audrey (@kateaudreyartistry)\n",
|
|
||||||
"19. Becky Louise (@bottled.blue)\n",
|
|
||||||
"20. (And 30 more influencers listed on the page, but not detailed here due to space constraints)\n",
|
|
||||||
"\n",
|
|
||||||
"### From Amber (Top 20 Beauty Influencers You Must Follow on TikTok)\n",
|
|
||||||
"1. Nikkia Joy\n",
|
|
||||||
"2. Makeup by Analiza\n",
|
|
||||||
"3. Sanny\n",
|
|
||||||
"4. BJ Bushra\n",
|
|
||||||
"5. sarahli\n",
|
|
||||||
"6. Sasha_British\n",
|
|
||||||
"7. chass\n",
|
|
||||||
"8. Ruby Malik\n",
|
|
||||||
"9. Makeup A Murder, INC.\n",
|
|
||||||
"10. (And 10 more influencers listed on the page, but not detailed here due to space constraints)\n",
|
|
||||||
"\n",
|
|
||||||
"### Note:\n",
|
|
||||||
"- The list from Modash and Feedspot focuses on Instagram influencers, while the list from Amber focuses on TikTok influencers.\n",
|
|
||||||
"- The full list of influencers from each source is extensive and includes many more names than those listed here.\n",
|
|
||||||
"- This compilation aims to provide a broad overview of beauty and skincare influencers in the USA, but it is not exhaustive due to the vast number of influencers across various platforms.\n"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -276,33 +230,33 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 11,
|
"execution_count": 17,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"name": "stdout",
|
"name": "stdout",
|
||||||
"output_type": "stream",
|
"output_type": "stream",
|
||||||
"text": [
|
"text": [
|
||||||
"Based on the provided search result, here are the available details for Faye Davis:\n",
|
"Based on the provided search result and general knowledge, here are the available details for Chriselle Lim:\n",
|
||||||
"\n",
|
"\n",
|
||||||
"1. **Name**: Faye Davis\n",
|
"1. **Name**: Chriselle Lim\n",
|
||||||
"2. **Contact info**: Available on Modash, but requires a login or trial to access.\n",
|
"2. **Contact Info**: Not provided in the search result.\n",
|
||||||
"3. **Facebook username**: Not provided in the search results.\n",
|
"4. **Facebook Username**: Not specified in the search result.\n",
|
||||||
"4. **Instagram username**: @mz_fae88.\n",
|
"5. **Instagram Username**: TheChriselleFactor (though not directly mentioned in the provided link, it is commonly known and can be inferred from her website name, TheChriselleFactor.com)\n",
|
||||||
"5. **TikTok username**: Not provided in the search results.\n",
|
"6. **TikTok Username**: Not specified in the search result.\n",
|
||||||
"6. **YouTube username**: Not provided in the search results.\n",
|
"7. **YouTube Username**: Not specified in the search result, but it is also TheChriselleFactor based on general knowledge.\n",
|
||||||
"7. **Facebook followers**: Not provided in the search results.\n",
|
"8. **Facebook Followers**: Not specified in the search result.\n",
|
||||||
"8. **Instagram followers**: 12.3k.\n",
|
"9. **Instagram Followers**: Not specified in the search result.\n",
|
||||||
"9. **TikTok followers**: Not provided in the search results.\n",
|
"10. **TikTok Followers**: Not specified in the search result.\n",
|
||||||
"10. **YouTube subscribers**: Not provided in the search results.\n",
|
"11. **YouTube Subscribers**: Not specified in the search result.\n",
|
||||||
"\n",
|
"\n",
|
||||||
"The information available is limited to what is provided in the search result from Modash, focusing on Instagram influencers. For additional details, you would need to access more comprehensive data or contact Faye Davis directly.\n"
|
"For more detailed and up-to-date information, visiting Chriselle Lim's official social media profiles or her website would be necessary.\n"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
"prompt = \"\"\"\n",
|
"prompt = \"\"\"\n",
|
||||||
" Give me a the following social details of Faye Davis, a beauty and skincare influencer: \\n\n",
|
" Give me a the following social details of Chriselle Lim, a beauty and skincare influencer: \\n\n",
|
||||||
" 1. Name \\n\n",
|
" 1. Name \\n\n",
|
||||||
" 2. Contact info \\n\n",
|
" 2. Contact info \\n\n",
|
||||||
" 4. Facebook username\\n\n",
|
" 4. Facebook username\\n\n",
|
||||||
@@ -318,6 +272,61 @@
|
|||||||
"print(result)"
|
"print(result)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 27,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"def extract_names(influencer_names:str) -> dict:\n",
|
||||||
|
" logger.info(f\"Formatting Influencer Data\")\n",
|
||||||
|
" initiator_prompt = PromptTemplate(\n",
|
||||||
|
" template=\"\"\"<|begin_of_text|><|start_header_id|>system<|end_header_id|>\n",
|
||||||
|
" You are a Influencer Data Extractor AI Agent tasked with extracting information from a search result\\n\n",
|
||||||
|
" You are provided with three informations: \\n\n",
|
||||||
|
" 1. Search result of influencers names\n",
|
||||||
|
" \n",
|
||||||
|
" Your job is to extract all the influencers names\\n\n",
|
||||||
|
" Make sure to extract all the names there \\n\n",
|
||||||
|
" You are to return this as a JSON output. The key should be 'names' in the JSON \\n\n",
|
||||||
|
" Do not add to the search result, just return the JSON data of all the influencer names as expected.\\n\n",
|
||||||
|
"\n",
|
||||||
|
" <|eot_id|><|start_header_id|>user<|end_header_id|>\n",
|
||||||
|
" INFLUENCER_NAMEs: {influencer_names}\\n\n",
|
||||||
|
" \n",
|
||||||
|
" <|eot_id|><|start_header_id|>assistant<|end_header_id|>\"\"\",\n",
|
||||||
|
" input_variables=[\"influencer_names\"],\n",
|
||||||
|
" )\n",
|
||||||
|
"\n",
|
||||||
|
" initiator_router = initiator_prompt | llm | JsonOutputParser()\n",
|
||||||
|
" output = initiator_router.invoke({\"influencer_names\":influencer_names})\n",
|
||||||
|
" return output"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 28,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stderr",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"\u001b[32m2024-10-25 22:48:23.827\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mextract_names\u001b[0m:\u001b[36m2\u001b[0m - \u001b[1mFormatting Influencer Data\u001b[0m\n"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"{'names': ['Caroline Hirons', 'Hyram Yarbro', 'Shalini Kutti', 'Amy Serrano', 'Cecilia', 'Ozy', 'Divina Wong', 'Shreya Jain', 'Debasree Banerjee', 'Shalini Srivastava', 'Ankita Chaturvedi', 'Adrianna Kalisz', 'Bethany Mota', 'Zoe Elizabeth Sugg (Zoella)', 'Rachel Levin', 'Nikkie De Jager', 'Eva Gutowski', 'Marzia Bisognin', 'Jeffree Star', 'Carli Bybel', 'Mindy McKnight', 'Promise Phan', 'Jessica Lyn', 'Cordelia (Phyrra)', 'Jennifer Mathews', 'Sunny Subramanian', 'Vicky Farrell', 'Mariel', 'Danielle', 'Kasey S']}\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"print(extract_names(result))"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": null,
|
"execution_count": null,
|
||||||
@@ -334,31 +343,184 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": null,
|
"execution_count": 29,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": []
|
"source": [
|
||||||
|
"product_categories = [\n",
|
||||||
|
" \"Beauty & Skincare\",\n",
|
||||||
|
" \"Fashion & Lifestyle\",\n",
|
||||||
|
" \"Health & Fitness\",\n",
|
||||||
|
" \"Travel & Adventure\",\n",
|
||||||
|
" \"Food & Beverage\",\n",
|
||||||
|
" \"Technology & Gadgets\",\n",
|
||||||
|
" \"Gaming & Esports\",\n",
|
||||||
|
" \"Parenting & Family\",\n",
|
||||||
|
" \"Finance & Business\",\n",
|
||||||
|
" \"Wellness & Mental Health\",\n",
|
||||||
|
" \"Automotive & Motorsports\",\n",
|
||||||
|
" \"Entertainment & Pop Culture\",\n",
|
||||||
|
" \"Photography & Visual Arts\",\n",
|
||||||
|
" \"Education & Learning\",\n",
|
||||||
|
" \"Environmental & Sustainability\"\n",
|
||||||
|
"]"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": null,
|
"execution_count": 30,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": []
|
"source": [
|
||||||
|
"def get_category_influencers(product_category: str):\n",
|
||||||
|
" logger.info(\"Search for influencers names\")\n",
|
||||||
|
" names_prompt = f\"Give me a list of the names of the all the top and popular {product_category} influencers in USA. People that are known across the internet. I only need their names. Give me all that's available as much as possible.\"\n",
|
||||||
|
" search_names = perplexity_data(names_prompt)\n",
|
||||||
|
" logger.info(\"Extracting influencers names\")\n",
|
||||||
|
" influencers_names = extract_names(search_names)\n",
|
||||||
|
" return influencers_names\n",
|
||||||
|
" "
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": null,
|
"execution_count": 31,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [
|
||||||
"source": []
|
{
|
||||||
|
"name": "stderr",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"\u001b[32m2024-10-25 22:57:56.687\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mget_category_influencers\u001b[0m:\u001b[36m2\u001b[0m - \u001b[1mSearch for influencers names\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 22:58:25.819\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mget_category_influencers\u001b[0m:\u001b[36m5\u001b[0m - \u001b[1mExtracting influencers names\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 22:58:25.820\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mextract_names\u001b[0m:\u001b[36m2\u001b[0m - \u001b[1mFormatting Influencer Data\u001b[0m\n"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"{'names': ['Stefana Avara', 'Adrian Leung', 'Jennifer Tavernier', 'Mason Mahoney', 'Brenton Ross Simmons', 'Kayla Itsines', 'Jesse James West', 'Charlee Atkins', 'Vicky Justiz', 'Alexia Clark', 'Jacqueline Hooton', 'Marra Bentley', 'Sara Preston', 'Jenn Labonte', 'Shannon', 'Melissa Neill', 'Donna Tryba', 'Christine Dwyer', 'Sol Gilbert', 'Jessica Cooke', 'Sabrina Brenton', 'Marilynn Roth', 'Pam Dodd', 'Varalakshmi Yanamandra', 'Marc Ryan', 'Dani', 'Danielle Shugg', 'Isilda', 'Ishani Vellodi Reddy', 'Michelle Lewin', 'Tammy Hembrow', 'Anllela Sagra', 'Jen Selter', 'Emily Skye', 'Natalie Jill', 'Chalene Johnson', 'Yasmin Kadiri', 'Heidi Powell', 'Chris Powell', 'Jillian Michaels', 'Bob Harper', 'Tony Horton', 'Shaun T']}\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"print(get_category_influencers(product_category=\"Health & Fitness\"))"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": null,
|
"execution_count": 33,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": []
|
"source": [
|
||||||
|
"# This is the function to get influencers for all product categories using multithreading concurrency\n",
|
||||||
|
"def get_all_names(product_categories: list):\n",
|
||||||
|
" all_influencers = {}\n",
|
||||||
|
"\n",
|
||||||
|
" # Using ThreadPoolExecutor for multithreading concurrency\n",
|
||||||
|
" with concurrent.futures.ThreadPoolExecutor() as executor:\n",
|
||||||
|
" # Create a dictionary where futures map to their category name\n",
|
||||||
|
" future_to_category = {executor.submit(get_category_influencers, category): category for category in product_categories}\n",
|
||||||
|
"\n",
|
||||||
|
" for future in concurrent.futures.as_completed(future_to_category):\n",
|
||||||
|
" category = future_to_category[future]\n",
|
||||||
|
" try:\n",
|
||||||
|
" influencers = future.result() # Get result of the completed future\n",
|
||||||
|
" all_influencers[category] = influencers\n",
|
||||||
|
" except Exception as exc:\n",
|
||||||
|
" logger.error(f\"{category} generated an exception: {exc}\")\n",
|
||||||
|
" \n",
|
||||||
|
" return all_influencers"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 34,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stderr",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"\u001b[32m2024-10-25 23:12:53.262\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mget_category_influencers\u001b[0m:\u001b[36m2\u001b[0m - \u001b[1mSearch for influencers names\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:12:53.265\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mget_category_influencers\u001b[0m:\u001b[36m2\u001b[0m - \u001b[1mSearch for influencers names\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:12:53.271\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mget_category_influencers\u001b[0m:\u001b[36m2\u001b[0m - \u001b[1mSearch for influencers names\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:12:53.278\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mget_category_influencers\u001b[0m:\u001b[36m2\u001b[0m - \u001b[1mSearch for influencers names\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:12:53.280\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mget_category_influencers\u001b[0m:\u001b[36m2\u001b[0m - \u001b[1mSearch for influencers names\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:12:53.283\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mget_category_influencers\u001b[0m:\u001b[36m2\u001b[0m - \u001b[1mSearch for influencers names\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:12:53.286\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mget_category_influencers\u001b[0m:\u001b[36m2\u001b[0m - \u001b[1mSearch for influencers names\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:12:53.290\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mget_category_influencers\u001b[0m:\u001b[36m2\u001b[0m - \u001b[1mSearch for influencers names\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:12:53.296\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mget_category_influencers\u001b[0m:\u001b[36m2\u001b[0m - \u001b[1mSearch for influencers names\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:12:53.301\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mget_category_influencers\u001b[0m:\u001b[36m2\u001b[0m - \u001b[1mSearch for influencers names\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:12:53.305\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mget_category_influencers\u001b[0m:\u001b[36m2\u001b[0m - \u001b[1mSearch for influencers names\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:12:53.308\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mget_category_influencers\u001b[0m:\u001b[36m2\u001b[0m - \u001b[1mSearch for influencers names\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:12:53.321\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mget_category_influencers\u001b[0m:\u001b[36m2\u001b[0m - \u001b[1mSearch for influencers names\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:12:53.325\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mget_category_influencers\u001b[0m:\u001b[36m2\u001b[0m - \u001b[1mSearch for influencers names\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:12:53.327\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mget_category_influencers\u001b[0m:\u001b[36m2\u001b[0m - \u001b[1mSearch for influencers names\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:13:10.466\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mget_category_influencers\u001b[0m:\u001b[36m5\u001b[0m - \u001b[1mExtracting influencers names\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:13:10.469\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mextract_names\u001b[0m:\u001b[36m2\u001b[0m - \u001b[1mFormatting Influencer Data\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:13:11.429\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mget_category_influencers\u001b[0m:\u001b[36m5\u001b[0m - \u001b[1mExtracting influencers names\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:13:11.430\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mextract_names\u001b[0m:\u001b[36m2\u001b[0m - \u001b[1mFormatting Influencer Data\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:13:13.266\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mget_category_influencers\u001b[0m:\u001b[36m5\u001b[0m - \u001b[1mExtracting influencers names\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:13:13.267\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mextract_names\u001b[0m:\u001b[36m2\u001b[0m - \u001b[1mFormatting Influencer Data\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:13:13.441\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mget_category_influencers\u001b[0m:\u001b[36m5\u001b[0m - \u001b[1mExtracting influencers names\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:13:13.442\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mextract_names\u001b[0m:\u001b[36m2\u001b[0m - \u001b[1mFormatting Influencer Data\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:13:14.085\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mget_category_influencers\u001b[0m:\u001b[36m5\u001b[0m - \u001b[1mExtracting influencers names\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:13:14.086\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mextract_names\u001b[0m:\u001b[36m2\u001b[0m - \u001b[1mFormatting Influencer Data\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:13:17.804\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mget_category_influencers\u001b[0m:\u001b[36m5\u001b[0m - \u001b[1mExtracting influencers names\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:13:17.805\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mextract_names\u001b[0m:\u001b[36m2\u001b[0m - \u001b[1mFormatting Influencer Data\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:13:17.908\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mget_category_influencers\u001b[0m:\u001b[36m5\u001b[0m - \u001b[1mExtracting influencers names\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:13:17.909\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mextract_names\u001b[0m:\u001b[36m2\u001b[0m - \u001b[1mFormatting Influencer Data\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:13:18.736\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mget_category_influencers\u001b[0m:\u001b[36m5\u001b[0m - \u001b[1mExtracting influencers names\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:13:18.736\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mextract_names\u001b[0m:\u001b[36m2\u001b[0m - \u001b[1mFormatting Influencer Data\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:13:19.140\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mget_category_influencers\u001b[0m:\u001b[36m5\u001b[0m - \u001b[1mExtracting influencers names\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:13:19.141\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mextract_names\u001b[0m:\u001b[36m2\u001b[0m - \u001b[1mFormatting Influencer Data\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:13:19.423\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mget_category_influencers\u001b[0m:\u001b[36m5\u001b[0m - \u001b[1mExtracting influencers names\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:13:19.424\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mextract_names\u001b[0m:\u001b[36m2\u001b[0m - \u001b[1mFormatting Influencer Data\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:13:19.627\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mget_category_influencers\u001b[0m:\u001b[36m5\u001b[0m - \u001b[1mExtracting influencers names\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:13:19.628\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mextract_names\u001b[0m:\u001b[36m2\u001b[0m - \u001b[1mFormatting Influencer Data\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:13:20.475\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mget_category_influencers\u001b[0m:\u001b[36m5\u001b[0m - \u001b[1mExtracting influencers names\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:13:20.476\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mextract_names\u001b[0m:\u001b[36m2\u001b[0m - \u001b[1mFormatting Influencer Data\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:13:23.157\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mget_category_influencers\u001b[0m:\u001b[36m5\u001b[0m - \u001b[1mExtracting influencers names\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:13:23.158\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mextract_names\u001b[0m:\u001b[36m2\u001b[0m - \u001b[1mFormatting Influencer Data\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:13:24.891\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mget_category_influencers\u001b[0m:\u001b[36m5\u001b[0m - \u001b[1mExtracting influencers names\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:13:24.891\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mextract_names\u001b[0m:\u001b[36m2\u001b[0m - \u001b[1mFormatting Influencer Data\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:14:34.208\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mget_category_influencers\u001b[0m:\u001b[36m5\u001b[0m - \u001b[1mExtracting influencers names\u001b[0m\n",
|
||||||
|
"\u001b[32m2024-10-25 23:14:34.209\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36m__main__\u001b[0m:\u001b[36mextract_names\u001b[0m:\u001b[36m2\u001b[0m - \u001b[1mFormatting Influencer Data\u001b[0m\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"# Fetch all influencer names concurrently\n",
|
||||||
|
"all_influencers_data = get_all_names(product_categories)\n",
|
||||||
|
"\n",
|
||||||
|
"# Convert the result to JSON format\n",
|
||||||
|
"all_influencers_json = json.dumps(all_influencers_data, indent=4)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 35,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"Data saved to influencers_names_data.json\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"# Save the JSON data to a file\n",
|
||||||
|
"output_file = 'influencers_names_data.json'\n",
|
||||||
|
"with open(output_file, 'w') as file:\n",
|
||||||
|
" file.write(all_influencers_json)\n",
|
||||||
|
"\n",
|
||||||
|
"# Optionally, print the saved file path\n",
|
||||||
|
"print(f\"Data saved to {output_file}\")"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
|
|||||||
+20
-2
@@ -3,9 +3,10 @@ from fastapi import FastAPI, Form, Body
|
|||||||
from fastapi.middleware.cors import CORSMiddleware
|
from fastapi.middleware.cors import CORSMiddleware
|
||||||
from fastapi.responses import FileResponse, JSONResponse
|
from fastapi.responses import FileResponse, JSONResponse
|
||||||
from typing import List, Dict
|
from typing import List, Dict
|
||||||
|
import uvicorn
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
from utils import product_categorizer
|
from utils import product_categorizer
|
||||||
|
from social_media_collection import get_all_influencer_data
|
||||||
|
|
||||||
app = FastAPI()
|
app = FastAPI()
|
||||||
|
|
||||||
@@ -30,7 +31,24 @@ app.add_middleware(
|
|||||||
class ProductRequest(BaseModel):
|
class ProductRequest(BaseModel):
|
||||||
products: List[str]
|
products: List[str]
|
||||||
|
|
||||||
@app.post("/categorize-products/")
|
@app.post("/api/categorize-products/")
|
||||||
async def categorize_products(request: ProductRequest):
|
async def categorize_products(request: ProductRequest):
|
||||||
categorized_output = product_categorizer(request.products)
|
categorized_output = product_categorizer(request.products)
|
||||||
return JSONResponse(content={"categorized_products": categorized_output})
|
return JSONResponse(content={"categorized_products": categorized_output})
|
||||||
|
|
||||||
|
|
||||||
|
class InfluencerData(BaseModel):
|
||||||
|
influencer_names: List[str]
|
||||||
|
category : str
|
||||||
|
|
||||||
|
@app.post("/api/influencer-data/")
|
||||||
|
async def influencers_data(request: InfluencerData):
|
||||||
|
collected_data = get_all_influencer_data(request.influencer_names, request.category)
|
||||||
|
return JSONResponse(content={"categorized_products": collected_data})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Example of how to run the FastAPI server with Uvicorn
|
||||||
|
if __name__ == "__main__":
|
||||||
|
uvicorn.run(app, host="127.0.0.1", port=8000)
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
[
|
||||||
|
"{\"name\": \"Ken Robinson\", \"facebook\": {\"Facebook_name\": null, \"Facebook_followers\": 165709}, \"instagram\": {\"Instagram_name\": \"@sirKenRobinson\", \"Instagram_followers\": \"36,000\"}, \"tiktok\": {\"Tiktok_name\": null, \"Tiktok_followers\": null}, \"youtube\": {\"Youtube_name\": \"sirkenrobinson\", \"Youtube_followers\": null}, \"contact\": {\"contact\": \"Not publicly disclosed\", \"location\": \"Cedar City, Utah, United States\"}}",
|
||||||
|
"{\"name\": \"Sal Khan\", \"facebook\": {\"Facebook_name\": \"@salkhanacademy\", \"Facebook_followers\": \"681\"}, \"instagram\": {\"Instagram_name\": \"@khanacademy\", \"Instagram_followers\": \"108K\"}, \"tiktok\": {\"Tiktok_name\": null, \"Tiktok_followers\": 314}, \"youtube\": {\"Youtube_name\": \"khanacademy\", \"Youtube_followers\": \"6.33 million\"}, \"contact\": {\"contact\": \"sal@execsallied.com\", \"location\": \"Palo Alto, California, United States\"}}",
|
||||||
|
"{\"name\": \"Bill Zimmerman\", \"facebook\": {\"Facebook_name\": null, \"Facebook_followers\": null}, \"instagram\": {\"Instagram_name\": \"@billzhustle\", \"Instagram_followers\": 713}, \"tiktok\": {\"Tiktok_username\": \"@billzimmerman\", \"Tiktok_followers\": null}, \"youtube\": {\"Youtube_name\": \"BillZhustle\", \"Youtube_followers\": null}, \"contact\": {\"contact\": [\"wfz1@psu.edu\", \"billz@makebeliefscomix.com\"], \"location\": \"State College, Pennsylvania, United States\"}}",
|
||||||
|
"{\"name\": \"Terry Heick\", \"facebook\": {\"Facebook_name\": \"terryheick\", \"Facebook_followers\": 606}, \"instagram\": {\"Instagram_name\": \"wanderfullearner\", \"Instagram_followers\": 217}, \"tiktok\": {\"influencer_tiktok_name\": null, \"tiktok_followers\": null}, \"youtube\": {\"Youtube_name\": \"terryheick\", \"Youtube_followers\": null}, \"contact\": {\"contact\": \"terry@teachthought.com\", \"location\": \"Kentucky, United States\"}}",
|
||||||
|
"{\"name\": \"Diane Ravitch\", \"facebook\": {\"Facebook_name\": null, \"Facebook_followers\": null}, \"instagram\": {\"Instagram_name\": \"@diane.ravitch\", \"Instagram_followers\": 577}, \"tiktok\": {\"tiktok_name\": null, \"tiktok_followers\": null}, \"youtube\": {\"Youtube_name\": null, \"Youtube_followers\": null}, \"contact\": {\"contact\": {\"agent\": \"Beth White\", \"agency\": \"American Program Bureau, Inc.\", \"address\": \"313 Washington Street, Suite 225, Newton, MA 02458\", \"phone\": \"617.614.1600\", \"email\": \"bwhite@apbspeakers.com\"}, \"location\": \"New York, United States\"}}",
|
||||||
|
"{\"name\": \"Jessica Maddox\", \"facebook\": {\"Facebook_name\": null, \"Facebook_followers\": null}, \"instagram\": {\"Instagram_name\": \"@jessicammaddox\", \"Instagram_followers\": 809}, \"tiktok\": {\"Tiktok_username\": \"_jessicamaddox_\", \"Tiktok_followers\": \"1.6K\"}, \"youtube\": {\"youtube_name\": null, \"youtube_followers\": null}, \"contact\": {\"contact\": \"For inquiries, reach out to the University of Alabama's Department of Journalism and Creative Media.\", \"location\": \"Alabama, United States\"}}",
|
||||||
|
"{\"name\": \"Rebecca Hains\", \"facebook\": {\"Facebook_username\": null, \"Facebook_followers\": 37108}, \"instagram\": {\"Instagram_name\": \"@rebeccahainsphd\", \"Instagram_followers\": 545}, \"tiktok\": {\"Tiktok_name\": null, \"Tiktok_followers\": \"3 million\"}, \"youtube\": {\"Youtube_name\": \"Rebecca\", \"Youtube_followers\": null}, \"contact\": {\"contact\": \"re*****@salemstate.edu\", \"location\": \"Salem, Massachusetts, United States\"}}",
|
||||||
|
"{\"name\": \"Steve Hargadon\", \"facebook\": {\"Facebook_name\": null, \"Facebook_followers\": null}, \"instagram\": {\"instagram_name\": \"@homelearningsummit\", \"instagram_followers\": 596}, \"tiktok\": {\"Tiktok_name\": null, \"Tiktok_followers\": null}, \"youtube\": {\"Youtube_name\": null, \"Youtube_followers\": null}, \"contact\": {\"contact\": \"steve@hargadon.com\", \"location\": \"Greater London, United Kingdom\"}}",
|
||||||
|
"{\"name\": \"Vicki Davis\", \"facebook\": {\"Facebook_name\": null, \"Facebook_followers\": \"4.4K\"}, \"instagram\": {\"Instagram_name\": \"coolcatteacher\", \"Instagram_followers\": \"160K\"}, \"tiktok\": {\"Tiktok_username\": \"NULL\", \"Tiktok_followers\": 169}, \"youtube\": {\"Youtube_name\": null, \"Youtube_followers\": \"160K\"}, \"contact\": {\"contact\": \"Cool Cat Teacher Blog\", \"location\": \"United States\"}}",
|
||||||
|
"{\"name\": \"Larry Ferlazzo\", \"facebook\": {\"Facebook_name\": \"larryferlazzo\", \"Facebook_followers\": \"2,272\"}, \"instagram\": {\"Instagram_name\": \"mrferlazzo\", \"Instagram_followers\": 1559}, \"tiktok\": {\"Tiktok_username\": \"@larry.ferlazzo\", \"Tiktok_followers\": 77}, \"youtube\": {\"Youtube_name\": null, \"Youtube_followers\": null}, \"contact\": {\"contact\": \"MrFerlazzo@aol.com\", \"location\": \"Sacramento, California, United States\"}}",
|
||||||
|
"{\"name\": \"Emma Sofija\", \"facebook\": {\"Facebook_name\": null, \"Facebook_followers\": 2125}, \"instagram\": {\"Instagram_username\": \"@emmasofija\", \"Instagram_followers\": \"51K\"}, \"tiktok\": {\"Tiktok_username\": \"Excel Dictionary\", \"Tiktok_followers\": \"154,000\"}, \"youtube\": {\"Youtube_name\": null, \"Youtube_followers\": null}, \"contact\": {\"contact\": \"No specific email or contact details available\", \"location\": \"Los Angeles, United States\"}}",
|
||||||
|
"{\"name\": \"Elizabeth Mulvahill\", \"facebook\": {\"Facebook_name\": null, \"Facebook_followers\": null}, \"instagram\": {\"Instagram_name\": \"@e_mulvihill\", \"Instagram_followers\": null}, \"tiktok\": {\"tiktok_name\": null, \"tiktok_followers\": null}, \"youtube\": {\"Youtube_name\": \"@LearningInfluencers\", \"Youtube_followers\": null}, \"contact\": {\"contact\": \"e***@weareteachers.com\", \"location\": \"Colorado, United States\"}}",
|
||||||
|
"{\"name\": \"Samantha Cleaver\", \"facebook\": {\"Facebook_name\": \"samantha.cleaver.12\", \"Facebook_followers\": null}, \"instagram\": {\"influencer_instagram_name\": \"@activereadingmama\", \"instagram_followers\": 1062}, \"tiktok\": {\"Tiktok_name\": null, \"Tiktok_followers\": null}, \"youtube\": {\"Youtube_name\": null, \"Youtube_followers\": null}, \"contact\": {\"contact\": \"AmyFonville@babybundles.org\", \"location\": \"North Carolina, United States\"}}",
|
||||||
|
"{\"name\": \"Robert Kozinets\", \"facebook\": {\"Facebook_name\": null, \"Facebook_followers\": null}, \"instagram\": {\"Instagram_name\": \"NULL\", \"Instagram_followers\": 415}, \"tiktok\": {\"Tiktok_influencer_name\": null, \"Tiktok_followers\": 5037}, \"youtube\": {\"Youtube_name\": null, \"Youtube_followers\": null}, \"contact\": {\"contact\": \"No publicly listed contact details available.\", \"location\": \"California, United States\"}}",
|
||||||
|
"{\"name\": \"Aaron Dinin\", \"facebook\": {\"facebook_name\": null, \"facebook_followers\": 7359}, \"instagram\": {\"Instagram_name\": \"@aarondinin\", \"Instagram_followers\": \"187K\"}, \"tiktok\": {\"Tiktok_name\": \"@aaronidinin\", \"Tiktok_followers\": \"737.1K\"}, \"youtube\": {\"influencer_youtube_name\": null, \"youtube_followers\": null}, \"contact\": {\"contact\": \"a***@duke.edu\", \"location\": \"North Carolina, United States\"}}",
|
||||||
|
"{\"name\": \"Sugata Mitra\", \"facebook\": {\"Facebook_name\": null, \"Facebook_followers\": \"4,617\"}, \"instagram\": {\"Instagram_name\": null, \"Instagram_followers\": 1688}, \"tiktok\": {\"Tiktok_name\": null, \"Tiktok_followers\": null}, \"youtube\": {\"Youtube_name\": null, \"Youtube_followers\": null}, \"contact\": {\"contact\": \"No available contact details\", \"location\": \"Newcastle, England, United Kingdom\"}}",
|
||||||
|
"{\"name\": \"Ted-Ed\", \"facebook\": {\"Facebook_name\": \"TEDEducation\", \"Facebook_followers\": \"6,318,676\"}, \"instagram\": {\"Instagram_name\": \"@tededucation\", \"Instagram_followers\": \"683K\"}, \"tiktok\": {\"Tiktok_name\": \"@tedtoks\", \"Tiktok_followers\": 63}, \"youtube\": {\"Youtube_username\": \"TEDEducation\", \"Youtube_subscribers\": \"20 million\"}, \"contact\": {\"contact\": \"+1-212-346-9333\", \"location\": \"Pittsburgh, PA, United States\"}}",
|
||||||
|
"{\"name\": \"Edutopia\", \"facebook\": {\"Facebook_name\": \"edutopia\", \"Facebook_followers\": 1490157}, \"instagram\": {\"Instagram_name\": \"@edutopia\", \"Instagram_followers\": \"369K\"}, \"tiktok\": {\"Tiktok_name\": \"@iamthatenglishteacher\", \"Tiktok_followers\": null}, \"youtube\": {\"Youtube_username\": \"Edutopia3\", \"Youtube_subscribers\": 230000}, \"contact\": {\"contact\": \"info@edutopia.org\", \"location\": \"Not specified\"}}",
|
||||||
|
"{\"name\": \"Nick Kosir\", \"facebook\": {\"Facebook_username\": null, \"Facebook_followers\": 1253730}, \"instagram\": {\"Instagram_name\": \"@nickkosir\", \"Instagram_followers\": 2000000}, \"tiktok\": {\"Tiktok_name\": \"@officialnickkosir\", \"Tiktok_followers\": \"8.9 million\"}, \"youtube\": {\"Youtube_name\": \"Nick Kosir\", \"Youtube_followers\": \"1.26 million\"}, \"contact\": {\"contact\": \"nkosir@gmail.com\", \"location\": \"Rye, New York, United States\"}}",
|
||||||
|
"{\"name\": \"Khan Academy\", \"facebook\": {\"Facebook_name\": \"khanacademy\", \"Facebook_followers\": \"1,622,154\"}, \"instagram\": {\"Instagram_name\": \"@khanacademy\", \"Instagram_followers\": \"295K\"}, \"tiktok\": {\"Tiktok_name\": \"@khanacademy\", \"Tiktok_followers\": \"29,000\"}, \"youtube\": {\"Youtube_username\": \"khanacademy\", \"Youtube_subscribers\": \"7 million\"}, \"contact\": {\"contact\": \"donate@khanacademy.org\", \"location\": \"California, United States\"}}",
|
||||||
|
"{\"name\": \"Alex Cooper\", \"facebook\": {\"facebook_name\": null, \"facebook_followers\": null}, \"instagram\": {\"Instagram_name\": \"@alex\", \"Instagram_followers\": \"3 million\"}, \"tiktok\": {\"Tiktok_name\": \"@fathercooper\", \"Tiktok_followers\": \"2,500\"}, \"youtube\": {\"Youtube_name\": \"alexandracooper\", \"Youtube_subscribers\": \"17.5 million\"}, \"contact\": {\"contact\": \"No specific contact details provided. Consider reaching out through her official social media channels or contact her management team.\", \"location\": \"Pennsylvania, United States\"}}",
|
||||||
|
"{\"name\": \"Alix Earle\", \"facebook\": {\"Facebook_name\": \"@alixearle\", \"Facebook_followers\": null}, \"instagram\": {\"Instagram_name\": \"@alix_earle\", \"Instagram_followers\": \"2.4 million\"}, \"tiktok\": {\"Tiktok_name\": \"@alixearle\", \"Tiktok_followers\": \"7.1 million\"}, \"youtube\": {\"youtube_username\": null, \"youtube_followers\": null}, \"contact\": {\"contact\": \"alixearleteam@unitedtalent.com\", \"location\": \"Florida, United States\"}}",
|
||||||
|
"{\"name\": \"Dylan Huey\", \"facebook\": {\"Facebook_name\": \"dylan.huey.3\", \"Facebook_followers\": \"2 million or more\"}, \"instagram\": {\"Instagram_username\": \"@dylannhuey\", \"Instagram_followers\": 739}, \"tiktok\": {\"tiktok_name\": \"@rodinflash\", \"tiktok_followers\": \"4.2 million\"}, \"youtube\": {\"influencer_youtube_name\": null, \"youtube_followers\": null}, \"contact\": {\"contact\": \"https://dylanhuey.me/\", \"location\": \"Boston, United States\"}}",
|
||||||
|
"{\"name\": \"National Geographic\", \"facebook\": {\"Facebook_name\": \"natgeo\", \"Facebook_followers\": \"46,503,161\"}, \"instagram\": {\"Instagram_name\": \"@natgeolearning\", \"Instagram_followers\": \"281 million\"}, \"tiktok\": {\"Tiktok_name\": \"@natgeo\", \"Tiktok_followers\": \"9 million\"}, \"youtube\": {\"Youtube_name\": \"NatGeoLearning\", \"Youtube_subscribers\": \"23 million\"}, \"contact\": {\"contact\": \"(888) 915-3276, https://eltngl.com\", \"location\": \"Washington, D.C., United States\"}}",
|
||||||
|
"{\"name\": \"Dalton Daltoff\", \"facebook\": {\"facebook_name\": null, \"facebook_followers\": null}, \"instagram\": {\"Instagram_name\": \"@dalton.daltoff\", \"Instagram_followers\": 1114}, \"tiktok\": {\"Tiktok_username\": \"@dalton_daltoff\", \"Tiktok_followers\": \"82.4K\"}, \"youtube\": {\"youtube_name\": \"DaltonEducation\", \"youtube_followers\": \"179,000\"}, \"contact\": {\"contact\": \"thepropermasshole@gmail.com\", \"location\": \"Boston, Massachusetts, United States\"}}",
|
||||||
|
"{\"name\": \"Life Noggin\", \"facebook\": {\"Facebook_name\": \"@LifeNoggin\", \"Facebook_followers\": \"47,268\"}, \"instagram\": {\"Instagram_name\": \"lifenoggin\", \"Instagram_followers\": \"54,000\"}, \"tiktok\": {\"Tiktok_name\": \"@lifenoggin\", \"Tiktok_followers\": \"13.1K\"}, \"youtube\": {\"YouTube_name\": \"Life Noggin\", \"YouTube_followers\": \"3.2 million\"}, \"contact\": {\"contact\": \"Not provided\", \"location\": \"United States of America\"}}",
|
||||||
|
"{\"name\": \"AsapSCIENCE\", \"facebook\": {\"facebook_name\": \"AsapSCIENCE\", \"facebook_followers\": \"2,688,057\"}, \"instagram\": {\"Instagram_name\": \"@ASAPscience\", \"Instagram_followers\": \"614K\"}, \"tiktok\": {\"Tiktok_username\": \"@asapscience\", \"Tiktok_followers\": \"1.1 million\"}, \"youtube\": {\"Youtube_name\": \"AsapSCIENCE\", \"Youtube_followers\": \"10.7 million\"}, \"contact\": {\"contact\": \"asapscience@gmail.com\", \"location\": \"Canada\"}}"
|
||||||
|
]
|
||||||
@@ -0,0 +1,480 @@
|
|||||||
|
{
|
||||||
|
"Photography & Visual Arts": {
|
||||||
|
"names": [
|
||||||
|
"Tanveer Badal",
|
||||||
|
"Evelyn Ha",
|
||||||
|
"Nico Heller",
|
||||||
|
"Reece Feldman",
|
||||||
|
"Brian Skerry",
|
||||||
|
"Gordon Buchanan",
|
||||||
|
"Richard Peters",
|
||||||
|
"Nicole Isaacs",
|
||||||
|
"Edith Perez",
|
||||||
|
"Lauren Scott"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Gaming & Esports": {
|
||||||
|
"names": [
|
||||||
|
"VanossGaming (Evan Fong)",
|
||||||
|
"Markiplier (Mark Edward Fischbach)",
|
||||||
|
"Jacksepticeye (Se\u00e1n William McLoughlin)",
|
||||||
|
"DanTDM (Daniel Middleton)",
|
||||||
|
"CaptainSparklez (Jordan Maron)",
|
||||||
|
"The Game Theorists (Matthew Patrick)",
|
||||||
|
"Game Grumps (Ross O'Donovan)",
|
||||||
|
"I AM WILDCAT (Tyler Wine)",
|
||||||
|
"H20Delirious (Jonathan Smith)",
|
||||||
|
"PopularMMOs (Patrick Brown)",
|
||||||
|
"Dakotaz (Brett Hoffman)",
|
||||||
|
"Jynxzi (Nicholas Stewart)",
|
||||||
|
"Kai Cenat",
|
||||||
|
"Gaules (Alexandre Borba)",
|
||||||
|
"xQc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Technology & Gadgets": {
|
||||||
|
"names": [
|
||||||
|
"Marques Brownlee",
|
||||||
|
"IShowSpeed",
|
||||||
|
"Daily Dose Of Internet",
|
||||||
|
"Lil Miquela",
|
||||||
|
"Janky and Guggimon",
|
||||||
|
"Unbox Therapy",
|
||||||
|
"JerryRigEverything",
|
||||||
|
"Linus Tech Tips",
|
||||||
|
"TechInfluencer",
|
||||||
|
"The Verge"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Parenting & Family": {
|
||||||
|
"names": [
|
||||||
|
"Olivia J Owen",
|
||||||
|
"Jo Frost",
|
||||||
|
"Nataliia",
|
||||||
|
"Kolter Bouchard",
|
||||||
|
"Ashley Lewis",
|
||||||
|
"Chinyelu",
|
||||||
|
"Roland Hall",
|
||||||
|
"Rachel Samson",
|
||||||
|
"Paige Turner",
|
||||||
|
"Brenden Guy",
|
||||||
|
"Kylie, Scott, and Addi",
|
||||||
|
"Janet Lansbury",
|
||||||
|
"Honest Mum",
|
||||||
|
"24/7 Moms",
|
||||||
|
"ModernMom",
|
||||||
|
"CafeMom",
|
||||||
|
"Grown & Flown",
|
||||||
|
"Mom Spark",
|
||||||
|
"The Simple Parent",
|
||||||
|
"Adina Soclof"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Entertainment & Pop Culture": {
|
||||||
|
"names": [
|
||||||
|
"Cristiano Ronaldo",
|
||||||
|
"Selena Gomez",
|
||||||
|
"MrBeast (Jimmy Donaldson)",
|
||||||
|
"Leo Messi",
|
||||||
|
"Justin Bieber",
|
||||||
|
"Kylie Jenner",
|
||||||
|
"Dwayne Johnson",
|
||||||
|
"Taylor Swift",
|
||||||
|
"Ariana Grande",
|
||||||
|
"Kim Kardashian",
|
||||||
|
"Katy Perry",
|
||||||
|
"Beyonc\u00e9",
|
||||||
|
"Khaby Lame",
|
||||||
|
"Kourtney Kardashian",
|
||||||
|
"Kevin Hart",
|
||||||
|
"Cardi B",
|
||||||
|
"Billie Eilish",
|
||||||
|
"Demi Lovato",
|
||||||
|
"Miley Cyrus",
|
||||||
|
"Charlie D\u2019Amelio",
|
||||||
|
"Nicholas Stewart (Jynxzi)",
|
||||||
|
"Kai Cenat",
|
||||||
|
"Tarik Rahmi Celik (Tarik)",
|
||||||
|
"Hasan Piker (HasanAbi)",
|
||||||
|
"Juan Alberto Garc\u00eda (IlloJuan)",
|
||||||
|
"Saqib Zahid (LIRIK)",
|
||||||
|
"Jaryd Russell Lazar (Summit1g)",
|
||||||
|
"Chikara \u2018Shaka\u2019 Kawakami (fps_shaka)",
|
||||||
|
"Sodapoppin (Chance Morris)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Environmental & Sustainability": {
|
||||||
|
"names": [
|
||||||
|
"Leah Thomas",
|
||||||
|
"Alaina Wood",
|
||||||
|
"Kristy Drutman",
|
||||||
|
"Sophia Li",
|
||||||
|
"Ben Brown & Ciara Doyle",
|
||||||
|
"Nava Rose",
|
||||||
|
"Erika Lampe",
|
||||||
|
"Kiana Kazemi",
|
||||||
|
"Nolan Gould",
|
||||||
|
"Emily Purks",
|
||||||
|
"Bonnie Thunders",
|
||||||
|
"Lucy Biggers",
|
||||||
|
"Astrid Aschenbrenner",
|
||||||
|
"Ridge",
|
||||||
|
"Emily Redfern",
|
||||||
|
"Sara Oteri",
|
||||||
|
"Barkha Singh",
|
||||||
|
"Tessa Nelissen",
|
||||||
|
"Jeremy Casebeer",
|
||||||
|
"Rae Rodriguez",
|
||||||
|
"GITTEMARIE JOHANSEN",
|
||||||
|
"SAMPAN",
|
||||||
|
"Tomaz Stojanovic",
|
||||||
|
"She.roams.wild",
|
||||||
|
"Lampe23",
|
||||||
|
"Iamexploringworld"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Finance & Business": {
|
||||||
|
"names": [
|
||||||
|
"Gary Vaynerchuk",
|
||||||
|
"Justin Welsh",
|
||||||
|
"Guy Kawasaki",
|
||||||
|
"Melinda Gates",
|
||||||
|
"Richard Branson",
|
||||||
|
"Dina Calakovic",
|
||||||
|
"Mark Cuban",
|
||||||
|
"Rachel Mitchell",
|
||||||
|
"Michelle Singletary",
|
||||||
|
"Kara Stevens",
|
||||||
|
"Tonya Rapley",
|
||||||
|
"Patrice Washington",
|
||||||
|
"Bola Sokunbi",
|
||||||
|
"Tiffany Aliche",
|
||||||
|
"Marsha Barnes",
|
||||||
|
"Dominique Broadway",
|
||||||
|
"Kendra James",
|
||||||
|
"Melissa Boutin",
|
||||||
|
"Carrie Pink",
|
||||||
|
"Dasha Kennedy",
|
||||||
|
"Soumendra Jena",
|
||||||
|
"EA FC Trading and Investing",
|
||||||
|
"Amjad Sithara",
|
||||||
|
"HY Tan",
|
||||||
|
"Amanda Holden",
|
||||||
|
"Dan | The Financial Motto",
|
||||||
|
"Marquise Gold | Mr. Dubai",
|
||||||
|
"Amanda McGrew",
|
||||||
|
"Chris Dixon",
|
||||||
|
"Roger Ver",
|
||||||
|
"Balaji Srinivasan",
|
||||||
|
"Erik Voorhees",
|
||||||
|
"Marc Andreessen",
|
||||||
|
"Crypto God John",
|
||||||
|
"CryptoWendyO",
|
||||||
|
"Crypto Jack"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Education & Learning": {
|
||||||
|
"names": [
|
||||||
|
"Sal Khan",
|
||||||
|
"Sugata Mitra",
|
||||||
|
"Ken Robinson",
|
||||||
|
"Diane Ravitch",
|
||||||
|
"Larry Ferlazzo",
|
||||||
|
"Vicki Davis",
|
||||||
|
"Steve Hargadon",
|
||||||
|
"Terry Heick",
|
||||||
|
"Samantha Cleaver",
|
||||||
|
"Elizabeth Mulvahill",
|
||||||
|
"Bill Zimmerman",
|
||||||
|
"Robert Kozinets",
|
||||||
|
"Aaron Dinin",
|
||||||
|
"Rebecca Hains",
|
||||||
|
"Jessica Maddox",
|
||||||
|
"Emma Sofija",
|
||||||
|
"Ted-Ed",
|
||||||
|
"Khan Academy",
|
||||||
|
"AsapSCIENCE",
|
||||||
|
"National Geographic",
|
||||||
|
"Life Noggin",
|
||||||
|
"Edutopia",
|
||||||
|
"Nick Kosir",
|
||||||
|
"Dalton Daltoff",
|
||||||
|
"Dylan Huey",
|
||||||
|
"Alex Cooper",
|
||||||
|
"Alix Earle"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Beauty & Skincare": {
|
||||||
|
"names": [
|
||||||
|
"Jessica Lyn",
|
||||||
|
"Cordelia",
|
||||||
|
"Jennifer Mathews",
|
||||||
|
"Sunny Subramanian",
|
||||||
|
"Vicky Farrell",
|
||||||
|
"Bella Fiori",
|
||||||
|
"Suzana Rose",
|
||||||
|
"Tashina",
|
||||||
|
"Mariel",
|
||||||
|
"Danielle",
|
||||||
|
"Kasey S",
|
||||||
|
"Project Pan",
|
||||||
|
"Caitie Anisman-Reiner",
|
||||||
|
"Krisztina Williams",
|
||||||
|
"Dreesa",
|
||||||
|
"Marissa Jean",
|
||||||
|
"Hailee Jones",
|
||||||
|
"Kate Audrey",
|
||||||
|
"Becky Louise",
|
||||||
|
"Nikki",
|
||||||
|
"Paige Mackenzie",
|
||||||
|
"Emily",
|
||||||
|
"Master Esthetician",
|
||||||
|
"Truly Megan",
|
||||||
|
"Let\u2019s Glow Together",
|
||||||
|
"Jexy",
|
||||||
|
"Stephanie Juglard",
|
||||||
|
"Lia Stauber",
|
||||||
|
"Linda Souici",
|
||||||
|
"Alex\u00e9sandra",
|
||||||
|
"Kristen Cas",
|
||||||
|
"Kat",
|
||||||
|
"Gg.darras",
|
||||||
|
"Amanda Hunter",
|
||||||
|
"Sheryl",
|
||||||
|
"Nikkia Joy",
|
||||||
|
"Makeup by Analiza",
|
||||||
|
"Sanny",
|
||||||
|
"Maryan ahmedey",
|
||||||
|
"BJ Bushra"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Food & Beverage": {
|
||||||
|
"names": [
|
||||||
|
"Gal Shua-Haim",
|
||||||
|
"Thomas Straker",
|
||||||
|
"Tess Madalyn",
|
||||||
|
"Nara Smith",
|
||||||
|
"Owen Han",
|
||||||
|
"Emily Mariko",
|
||||||
|
"Matty Matheson",
|
||||||
|
"Nana Joe",
|
||||||
|
"Justin Capone",
|
||||||
|
"Gabbriette",
|
||||||
|
"Meredith (Wish Bone Kitchen)",
|
||||||
|
"@imhungry",
|
||||||
|
"@bby.bruh",
|
||||||
|
"@roscoesofficial",
|
||||||
|
"@yummertime",
|
||||||
|
"@kfashion__s",
|
||||||
|
"@_patrykwlodarczyk_",
|
||||||
|
"@jo.jerusalem",
|
||||||
|
"@maeumlin",
|
||||||
|
"@laurentrenkle",
|
||||||
|
"@stayingmindfull",
|
||||||
|
"Justin (@therealfoodstalker)",
|
||||||
|
"Alyssa Fagien (@atl_bucketlist)",
|
||||||
|
"Adam & Cole (@atlfoodiesofficial)",
|
||||||
|
"Sam (@eatingthroughatlanta)",
|
||||||
|
"Olivia (@foodistagirl)",
|
||||||
|
"Emily (@atlantafortheyoung)",
|
||||||
|
"Rachel (@thatredheadedfoodie)",
|
||||||
|
"Angie (@gourmetangiie)",
|
||||||
|
"Maya (@theaptchef)",
|
||||||
|
"Nikka Shae (@ohnikka)",
|
||||||
|
"Chef Joe (@theofficialchefjoe)",
|
||||||
|
"Erica A. Thomas (@eatingwitherica)",
|
||||||
|
"Wendy Gajadharsingh (@thebubblytalk)",
|
||||||
|
"Sarah (@atlantabestbites)",
|
||||||
|
"The Shapiro sisters (Sara, Madison, Carly, and Julia) from @sistersnacking"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Health & Fitness": {
|
||||||
|
"names": [
|
||||||
|
"Cormac Murphy",
|
||||||
|
"Tasiamarie",
|
||||||
|
"Yuly",
|
||||||
|
"Jo",
|
||||||
|
"Rachel",
|
||||||
|
"Fadwa",
|
||||||
|
"Triana",
|
||||||
|
"Ashley Lissette",
|
||||||
|
"Joshua Keith",
|
||||||
|
"Emely Correchel",
|
||||||
|
"Stefana Avara",
|
||||||
|
"Adrian Leung",
|
||||||
|
"Jennifer Tavernier",
|
||||||
|
"Mason Mahoney",
|
||||||
|
"Ulisses Jr.",
|
||||||
|
"Brenton Ross Simmons",
|
||||||
|
"Kayla Itsines",
|
||||||
|
"Jesse James West",
|
||||||
|
"Charlee Atkins",
|
||||||
|
"Vicky Justiz",
|
||||||
|
"Massy Arias",
|
||||||
|
"Alexia Clark",
|
||||||
|
"Varalakshmi Yanamandra",
|
||||||
|
"Marc Ryan",
|
||||||
|
"Dani",
|
||||||
|
"Danielle Shugg",
|
||||||
|
"Isilda",
|
||||||
|
"Ishani Vellodi Reddy",
|
||||||
|
"Michelle Lewin",
|
||||||
|
"Tammy Hembrow",
|
||||||
|
"Jen Selter",
|
||||||
|
"Anllela Sagra",
|
||||||
|
"Christian Guzman",
|
||||||
|
"Steve Cook",
|
||||||
|
"Jeff Seid",
|
||||||
|
"Bradley Martyn",
|
||||||
|
"Heidi Powell",
|
||||||
|
"Chris Bumstead",
|
||||||
|
"Simeon Panda",
|
||||||
|
"Calum Von Moger",
|
||||||
|
"Emily Skye",
|
||||||
|
"Natalie Jill"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Travel & Adventure": {
|
||||||
|
"names": [
|
||||||
|
"Chris Burkard",
|
||||||
|
"Murad Osmann",
|
||||||
|
"Lauren Bullen",
|
||||||
|
"Jack Morris",
|
||||||
|
"The Poor Traveler",
|
||||||
|
"Angelica Blick",
|
||||||
|
"Fearless and Far",
|
||||||
|
"Brian Skerry",
|
||||||
|
"Atlas and Boots",
|
||||||
|
"Expert Vagabond",
|
||||||
|
"Curb Free with Cory Lee",
|
||||||
|
"Breathe Dream Go",
|
||||||
|
"Kiersten Rich",
|
||||||
|
"Kate McCulley",
|
||||||
|
"Lee Litumbe",
|
||||||
|
"Tara Whiteman",
|
||||||
|
"Brooke Saward",
|
||||||
|
"Archana Singh",
|
||||||
|
"Kristin Luna",
|
||||||
|
"Alyssa Ramos",
|
||||||
|
"Kritika Goel",
|
||||||
|
"Amanda Williams",
|
||||||
|
"Naomi Adams",
|
||||||
|
"Matthew Kepnes",
|
||||||
|
"Josh McNair",
|
||||||
|
"Alexandra Baackes",
|
||||||
|
"Susan Portnoy",
|
||||||
|
"Gary Leff",
|
||||||
|
"Geraldine DeRuiter",
|
||||||
|
"Kelly Watson",
|
||||||
|
"Alexandria",
|
||||||
|
"Adventures with the Hills",
|
||||||
|
"Lolly, Elisa, and Sam",
|
||||||
|
"Meagan Smith and Andy Jaffray",
|
||||||
|
"Biliana",
|
||||||
|
"Emily and Josh",
|
||||||
|
"Goth Babe",
|
||||||
|
"Shaun Whale"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Wellness & Mental Health": {
|
||||||
|
"names": [
|
||||||
|
"Rohit Tigga",
|
||||||
|
"Cat Volcy",
|
||||||
|
"Anisa Benitez",
|
||||||
|
"Juss Stinson (Madam Juss)",
|
||||||
|
"Ruth Pearce",
|
||||||
|
"Barbara Vercruysse",
|
||||||
|
"Dr. Mehmet Yildiz",
|
||||||
|
"Dr. Manuel Serrano-Gil",
|
||||||
|
"Paul Corke",
|
||||||
|
"Dean Miles",
|
||||||
|
"Dr. Angela Butts Chester",
|
||||||
|
"Karin Brauner",
|
||||||
|
"Sandeep Nath",
|
||||||
|
"Dr. Arayeh Norouzi",
|
||||||
|
"Dr. Kate Truitt",
|
||||||
|
"Angela Maiers",
|
||||||
|
"Cynthia Lockrey",
|
||||||
|
"Gab Ciminelli",
|
||||||
|
"Jason Cochran",
|
||||||
|
"Ayelet Baron",
|
||||||
|
"Sarah Willoughby",
|
||||||
|
"Zen Benefiel",
|
||||||
|
"Jane Anderson CSP",
|
||||||
|
"Div Manickam",
|
||||||
|
"Andy Workman",
|
||||||
|
"Judy Julin",
|
||||||
|
"Saurabh Gupta",
|
||||||
|
"Don Davis",
|
||||||
|
"MICHAEL PADURANO",
|
||||||
|
"Adam Boostrom",
|
||||||
|
"Aleksandra Plazinic, Ph.D.",
|
||||||
|
"Vassia Sarantopoulou",
|
||||||
|
"John Baldoni",
|
||||||
|
"Emily Skye",
|
||||||
|
"Massy Arias",
|
||||||
|
"David Laid",
|
||||||
|
"Alexia Clark",
|
||||||
|
"Lauren Fisher",
|
||||||
|
"GrowWithJo",
|
||||||
|
"Whitney Simmons",
|
||||||
|
"Chris Heria",
|
||||||
|
"Chloe Ting"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Fashion & Lifestyle": {
|
||||||
|
"names": [
|
||||||
|
"Caroline Simpson",
|
||||||
|
"Daejah",
|
||||||
|
"Ashanti Camille",
|
||||||
|
"Olivia Swanson",
|
||||||
|
"JAY",
|
||||||
|
"Shonovia Lashon",
|
||||||
|
"Media Queen",
|
||||||
|
"PinkBlush",
|
||||||
|
"BIGDAE",
|
||||||
|
"CecilyMarie",
|
||||||
|
"The Prettiest",
|
||||||
|
"Darion Famous",
|
||||||
|
"Chriselle Lim",
|
||||||
|
"Ty Severe",
|
||||||
|
"Sincerely Jules",
|
||||||
|
"Emma Chamberlain",
|
||||||
|
"Delilah Belle",
|
||||||
|
"Rachel Kang",
|
||||||
|
"Jourdan Sloane",
|
||||||
|
"Ashley Paige",
|
||||||
|
"Martha Elman",
|
||||||
|
"Melanie Locke",
|
||||||
|
"Chelsea Jordan",
|
||||||
|
"Kristin Cabat",
|
||||||
|
"Hannah Trick",
|
||||||
|
"Audrey Coyne",
|
||||||
|
"Wisdom Kaye",
|
||||||
|
"The Nava Rose",
|
||||||
|
"Roxxsaurus",
|
||||||
|
"Joe Ando",
|
||||||
|
"Karron S Dhinggra",
|
||||||
|
"Liz Uy",
|
||||||
|
"One Dapper Street",
|
||||||
|
"Lorenz Wiedenmann",
|
||||||
|
"Mark Bryan",
|
||||||
|
"Noah Altink",
|
||||||
|
"Jessica Chelsea Hamilton",
|
||||||
|
"Kristle Lauren",
|
||||||
|
"Kylie Nelson",
|
||||||
|
"Mal",
|
||||||
|
"Mackensey Stang",
|
||||||
|
"Wanda Stephanow",
|
||||||
|
"Aayushi Badheka",
|
||||||
|
"Dana Berez",
|
||||||
|
"Lindsay Moore",
|
||||||
|
"Brenna Novello",
|
||||||
|
"Renata",
|
||||||
|
"Nicole"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Automotive & Motorsports": {
|
||||||
|
"names": []
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,116 @@
|
|||||||
|
from openai import OpenAI
|
||||||
|
import os
|
||||||
|
import requests
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
from langchain_openai import ChatOpenAI
|
||||||
|
from tavily import TavilyClient
|
||||||
|
from langchain_core.prompts.prompt import PromptTemplate
|
||||||
|
from langchain_core.output_parsers import StrOutputParser, JsonOutputParser
|
||||||
|
import concurrent.futures
|
||||||
|
import json
|
||||||
|
from loguru import logger
|
||||||
|
load_dotenv()
|
||||||
|
|
||||||
|
os.environ["OPENAI_API_KEY"] = os.getenv("OPENAI_API_KEY")
|
||||||
|
llm = ChatOpenAI(model="gpt-4o")
|
||||||
|
|
||||||
|
API_KEY = os.getenv('PERPLEXITY_AI_API')
|
||||||
|
|
||||||
|
def perplexity_data(prompt, api_key=API_KEY):
|
||||||
|
url = "https://api.perplexity.ai/chat/completions"
|
||||||
|
|
||||||
|
payload = {
|
||||||
|
"model": "llama-3.1-sonar-huge-128k-online",
|
||||||
|
"messages": [
|
||||||
|
{
|
||||||
|
"role": "system",
|
||||||
|
"content": "Be precise and concise."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": prompt
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"temperature": 0.2,
|
||||||
|
"top_p": 0.9,
|
||||||
|
"return_citations": True,
|
||||||
|
"search_domain_filter": ["perplexity.ai"],
|
||||||
|
"return_images": False,
|
||||||
|
"return_related_questions": False,
|
||||||
|
"search_recency_filter": "month",
|
||||||
|
"top_k": 0,
|
||||||
|
"stream": False,
|
||||||
|
"presence_penalty": 0,
|
||||||
|
"frequency_penalty": 1
|
||||||
|
}
|
||||||
|
|
||||||
|
headers = {
|
||||||
|
"Authorization": f"Bearer {api_key}",
|
||||||
|
"Content-Type": "application/json"
|
||||||
|
}
|
||||||
|
|
||||||
|
response = requests.post(url, json=payload, headers=headers)
|
||||||
|
|
||||||
|
# Check if the request was successful
|
||||||
|
if response.status_code == 200:
|
||||||
|
response_data = response.json()
|
||||||
|
try:
|
||||||
|
# Extract the message content
|
||||||
|
message_content = response_data['choices'][0]['message']['content']
|
||||||
|
return message_content
|
||||||
|
except (KeyError, IndexError):
|
||||||
|
return "Unexpected response format."
|
||||||
|
else:
|
||||||
|
return f"Request failed with status code: {response.status_code}"
|
||||||
|
|
||||||
|
def extract_names(influencer_names:str) -> dict:
|
||||||
|
logger.info(f"Formatting Influencer Data")
|
||||||
|
initiator_prompt = PromptTemplate(
|
||||||
|
template="""<|begin_of_text|><|start_header_id|>system<|end_header_id|>
|
||||||
|
You are a Influencer Data Extractor AI Agent tasked with extracting information from a search result\n
|
||||||
|
You are provided with three informations: \n
|
||||||
|
1. Search result of influencers names
|
||||||
|
|
||||||
|
Your job is to extract all the influencers names\n
|
||||||
|
Make sure to extract all the names there \n
|
||||||
|
You are to return this as a JSON output. The key should be 'names' in the JSON \n
|
||||||
|
Do not add to the search result, just return the JSON data of all the influencer names as expected.\n
|
||||||
|
|
||||||
|
<|eot_id|><|start_header_id|>user<|end_header_id|>
|
||||||
|
INFLUENCER_NAMEs: {influencer_names}\n
|
||||||
|
|
||||||
|
<|eot_id|><|start_header_id|>assistant<|end_header_id|>""",
|
||||||
|
input_variables=["influencer_names"],
|
||||||
|
)
|
||||||
|
|
||||||
|
initiator_router = initiator_prompt | llm | JsonOutputParser()
|
||||||
|
output = initiator_router.invoke({"influencer_names":influencer_names})
|
||||||
|
return output
|
||||||
|
|
||||||
|
def get_category_influencers(product_category: str):
|
||||||
|
logger.info("Search for influencers names")
|
||||||
|
names_prompt = f"Give me a list of the names of the all the top and popular {product_category} influencers in USA. People that are known across the internet. I only need their names. Give me all that's available as much as possible."
|
||||||
|
search_names = perplexity_data(names_prompt)
|
||||||
|
logger.info("Extracting influencers names")
|
||||||
|
influencers_names = extract_names(search_names)
|
||||||
|
return influencers_names
|
||||||
|
|
||||||
|
|
||||||
|
# This is the function to get influencers for all product categories using multithreading concurrency
|
||||||
|
def get_all_names(product_categories: list):
|
||||||
|
all_influencers = {}
|
||||||
|
|
||||||
|
# Using ThreadPoolExecutor for multithreading concurrency
|
||||||
|
with concurrent.futures.ThreadPoolExecutor() as executor:
|
||||||
|
# Create a dictionary where futures map to their category name
|
||||||
|
future_to_category = {executor.submit(get_category_influencers, category): category for category in product_categories}
|
||||||
|
|
||||||
|
for future in concurrent.futures.as_completed(future_to_category):
|
||||||
|
category = future_to_category[future]
|
||||||
|
try:
|
||||||
|
influencers = future.result() # Get result of the completed future
|
||||||
|
all_influencers[category] = influencers
|
||||||
|
except Exception as exc:
|
||||||
|
logger.error(f"{category} generated an exception: {exc}")
|
||||||
|
|
||||||
|
return all_influencers
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
from social_media_collection import get_all_influencer_data
|
||||||
|
from names_collection import get_influencer_names
|
||||||
|
|
||||||
@@ -0,0 +1,152 @@
|
|||||||
|
import os
|
||||||
|
import requests
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
from langchain_openai import ChatOpenAI
|
||||||
|
from tavily import TavilyClient
|
||||||
|
from langchain_core.prompts.prompt import PromptTemplate
|
||||||
|
from langchain_core.output_parsers import StrOutputParser, JsonOutputParser
|
||||||
|
from loguru import logger
|
||||||
|
import concurrent.futures
|
||||||
|
import json
|
||||||
|
load_dotenv()
|
||||||
|
|
||||||
|
|
||||||
|
os.environ["OPENAI_API_KEY"] = os.getenv("OPENAI_API_KEY")
|
||||||
|
os.environ["TAVILY_API_KEY"] = os.getenv("TAVILY_API_KEY")
|
||||||
|
os.environ["PERPLEXITY_AI_API"] = os.getenv("PERPLEXITY_AI_API")
|
||||||
|
|
||||||
|
llm = ChatOpenAI(model="gpt-4o")
|
||||||
|
|
||||||
|
# Instantiating TavilyClient
|
||||||
|
tavily_client = TavilyClient()
|
||||||
|
|
||||||
|
def get_influencer_data(social_media: str, influencer_name:str , socialmedia_name: str, socialmedia_followers:str) -> dict:
|
||||||
|
logger.info(f"Formatting Influencer Data")
|
||||||
|
initiator_prompt = PromptTemplate(
|
||||||
|
template="""<|begin_of_text|><|start_header_id|>system<|end_header_id|>
|
||||||
|
You are a Influencer Data Extractor AI Agent tasked with extracting information from a search result\n
|
||||||
|
You are provided with three informations: \n
|
||||||
|
1. The social media name \n
|
||||||
|
2. The influencer social media name search result \n
|
||||||
|
3. The influencer social media followers/subscribers search results \n
|
||||||
|
|
||||||
|
Your job is to extract the influencer social media name, and social media followers or subscriber. \n
|
||||||
|
You are to return this as a JSON output. Two data should be there, the influencer social media name, and social media followers or subscribers.\n
|
||||||
|
Do this decently and properly. If the search result isn't showing the social media name or social media folloers/subscribers, return the data as NULL. \n
|
||||||
|
Don not add to the search result, just return the JSON data as expected. Also rmember to replace social media with the given social media name in the JSON output.\n
|
||||||
|
|
||||||
|
<|eot_id|><|start_header_id|>user<|end_header_id|>
|
||||||
|
SOCIALMEDIA: {social_media} \n
|
||||||
|
INFLUENCER_NAME: {influencer_name}\n
|
||||||
|
SOCIALMEDIA_NAME: {socialmedia_name} \n
|
||||||
|
SOCIALMEDIA_FOLLOWERS: {socialmedia_followers} \n
|
||||||
|
|
||||||
|
<|eot_id|><|start_header_id|>assistant<|end_header_id|>""",
|
||||||
|
input_variables=["social_media", "socialmedia_name", "socialmedia_followers", "influencer_name"],
|
||||||
|
)
|
||||||
|
|
||||||
|
initiator_router = initiator_prompt | llm | JsonOutputParser()
|
||||||
|
output = initiator_router.invoke({"social_media":social_media, "socialmedia_name":socialmedia_name, "socialmedia_followers":socialmedia_followers, "influencer_name":influencer_name})
|
||||||
|
return output
|
||||||
|
|
||||||
|
def socialmedia_details(social_media:str, influencer_name:str, product_category:str):
|
||||||
|
logger.info(f"{social_media} name search")
|
||||||
|
name_question = f"What is the {social_media} username of {influencer_name}, this person is a popular {product_category} influencer."
|
||||||
|
print(name_question)
|
||||||
|
name = tavily_client.qna_search(query=name_question, search_depth='advanced', max_results=10)
|
||||||
|
print(name)
|
||||||
|
|
||||||
|
logger.info(f"{social_media} followers search")
|
||||||
|
followers_question = f"How many {social_media} followers does {influencer_name} have? Note this is a {product_category} popular influencer."
|
||||||
|
print(followers_question)
|
||||||
|
followers = tavily_client.qna_search(query=followers_question, search_depth='advanced', max_results=10)
|
||||||
|
print(followers)
|
||||||
|
|
||||||
|
logger.info(f"Formatting Influencer {social_media} Data")
|
||||||
|
format_response = get_influencer_data(social_media={social_media}, influencer_name=influencer_name, socialmedia_name=name, socialmedia_followers=followers)
|
||||||
|
return format_response
|
||||||
|
|
||||||
|
def get_influencer_contact(influencer_name:str, contact:str, location:str) -> dict:
|
||||||
|
logger.info(f"Formatting Influencer Data")
|
||||||
|
initiator_prompt = PromptTemplate(
|
||||||
|
template="""<|begin_of_text|><|start_header_id|>system<|end_header_id|>
|
||||||
|
You are a Influencer Data Extractor AI Agent tasked with extracting information from a search result\n
|
||||||
|
You are provided with three informations: \n
|
||||||
|
1. The social media name \n
|
||||||
|
2. The influencer contact info search result \n
|
||||||
|
3. The influencer location or state search results \n
|
||||||
|
|
||||||
|
Your job is to extract the influencer's contact info, and location. Make sure things are properly filtered and good. \n
|
||||||
|
Pick relevalt info, that can be useful for reaching the influencer \n
|
||||||
|
You are to return this as a JSON output. The contact and location should be the keys in the JSON \n
|
||||||
|
Do not add to the search result, just return the JSON data as expected.\n
|
||||||
|
|
||||||
|
<|eot_id|><|start_header_id|>user<|end_header_id|>
|
||||||
|
INFLUENCER_NAME: {influencer_name}\n
|
||||||
|
CONTACT: {contact} \n
|
||||||
|
LOCATION: {location} \n
|
||||||
|
|
||||||
|
<|eot_id|><|start_header_id|>assistant<|end_header_id|>""",
|
||||||
|
input_variables=["contact", "location", "influencer_name"],
|
||||||
|
)
|
||||||
|
|
||||||
|
initiator_router = initiator_prompt | llm | JsonOutputParser()
|
||||||
|
output = initiator_router.invoke({"contact":contact, "location":location, "influencer_name":influencer_name})
|
||||||
|
return output
|
||||||
|
|
||||||
|
def contact_details(influencer_name:str, product_category:str):
|
||||||
|
logger.info(f"contact details search")
|
||||||
|
contact_question = f"What is the contact details or email of {influencer_name}, this person is a popular {product_category} influencer."
|
||||||
|
print(contact_question)
|
||||||
|
contact = tavily_client.qna_search(query=contact_question, search_depth='advanced', max_results=10)
|
||||||
|
print(contact)
|
||||||
|
|
||||||
|
logger.info(f"Location details search")
|
||||||
|
location_question = f"What is the location of {influencer_name}, this person is a popular {product_category} influencer. Check for state and country."
|
||||||
|
print(location_question)
|
||||||
|
location = tavily_client.qna_search(query=location_question, search_depth='advanced', max_results=10)
|
||||||
|
print(location)
|
||||||
|
|
||||||
|
logger.info(f"Formatting Influencer contact details")
|
||||||
|
format_response = get_influencer_contact(influencer_name=influencer_name, contact=contact, location=location)
|
||||||
|
return format_response
|
||||||
|
|
||||||
|
|
||||||
|
# creating a function to get all the influencer data
|
||||||
|
def influencer_data(influencer_name: str, product_category:str):
|
||||||
|
logger.info("Getting {influencer_name} social media data")
|
||||||
|
facebook = socialmedia_details(social_media="Facebook", influencer_name=influencer_name, product_category=product_category)
|
||||||
|
instagram = socialmedia_details(social_media="Instagram", influencer_name=influencer_name, product_category=product_category)
|
||||||
|
tiktok = socialmedia_details(social_media="Tiktok", influencer_name=influencer_name, product_category=product_category)
|
||||||
|
youtube = socialmedia_details(social_media="Youtube", influencer_name=influencer_name, product_category=product_category)
|
||||||
|
contact_info = contact_details(influencer_name=influencer_name, product_category=product_category)
|
||||||
|
|
||||||
|
response = {
|
||||||
|
"name": influencer_name,
|
||||||
|
"facebook": facebook,
|
||||||
|
"instagram": instagram,
|
||||||
|
"tiktok": tiktok,
|
||||||
|
"youtube": youtube,
|
||||||
|
"contact" : contact_info
|
||||||
|
}
|
||||||
|
|
||||||
|
return json.dumps(response)
|
||||||
|
|
||||||
|
# Function to get all influencers details concurrently for a category
|
||||||
|
def get_all_influencer_data(influencer_names: list, category: str):
|
||||||
|
all_influencers_data = []
|
||||||
|
|
||||||
|
# Using ThreadPoolExecutor to fetch influencer data concurrently
|
||||||
|
with concurrent.futures.ThreadPoolExecutor() as executor:
|
||||||
|
# Submit tasks for each influencer and collect the future objects
|
||||||
|
future_to_influencer = {executor.submit(influencer_data, name, category): name for name in influencer_names}
|
||||||
|
|
||||||
|
for future in concurrent.futures.as_completed(future_to_influencer):
|
||||||
|
influencer = future_to_influencer[future]
|
||||||
|
try:
|
||||||
|
influencer_details = future.result() # Get the result of the completed future
|
||||||
|
all_influencers_data.append(influencer_details)
|
||||||
|
except Exception as exc:
|
||||||
|
logger.error(f"{influencer} generated an exception: {exc}")
|
||||||
|
|
||||||
|
return all_influencers_data
|
||||||
+4212
-40
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user