Files
hiffi-artist-intelligence/data/generate_seed_500.py
T

551 lines
28 KiB
Python

"""
data/generate_seed_500.py
Generates the complete 500-artist seed roster (data/seed_artists_500.csv).
Deduplicates and guarantees an exact 500-artist target cohort.
"""
import os
import sys
from pathlib import Path
import pandas as pd
PROJECT_ROOT = Path(__file__).resolve().parent.parent
if str(PROJECT_ROOT) not in sys.path:
sys.path.insert(0, str(PROJECT_ROOT))
from data.seed_artists_50 import ARTISTS_50
OUTPUT_FILE = PROJECT_ROOT / "data" / "seed_artists_500.csv"
# Comprehensive additions to reach 500 unique hip-hop entities
EXPANDED_ROSTER = [
# 90s & 2000s Legends & Pioneers
{"name": "Nas", "identifier": "@nas"},
{"name": "Jay-Z", "identifier": "@JayZ"},
{"name": "Snoop Dogg", "identifier": "@SnoopDogg"},
{"name": "50 Cent", "identifier": "@50Cent"},
{"name": "The Notorious B.I.G.", "identifier": "@notoriousbig"},
{"name": "2Pac", "identifier": "@2pac"},
{"name": "Dr. Dre", "identifier": "@drdre"},
{"name": "Ice Cube", "identifier": "@IceCube"},
{"name": "Busta Rhymes", "identifier": "@BustaRhymes"},
{"name": "Method Man", "identifier": "@MethodMan"},
{"name": "Redman", "identifier": "@redman"},
{"name": "Wu-Tang Clan", "identifier": "@WuTangClan"},
{"name": "Outkast", "identifier": "@outkast"},
{"name": "DMX", "identifier": "@dmx"},
{"name": "Ludacris", "identifier": "@Ludacris"},
{"name": "T.I.", "identifier": "@TI"},
{"name": "Jeezy", "identifier": "@jeezy"},
{"name": "Gucci Mane", "identifier": "@guccimane"},
{"name": "Rick Ross", "identifier": "@RickRoss"},
{"name": "Common", "identifier": "@common"},
{"name": "Mos Def", "identifier": "@yasiinbey"},
{"name": "Talib Kweli", "identifier": "@TalibKweli"},
{"name": "Lupe Fiasco", "identifier": "@LupeFiasco"},
{"name": "Ghostface Killah", "identifier": "@GhostfaceKillah"},
{"name": "Raekwon", "identifier": "@Raekwon"},
{"name": "GZA", "identifier": "@TheGeniusGZA"},
{"name": "Cypress Hill", "identifier": "@cypresshill"},
{"name": "Three 6 Mafia", "identifier": "@three6mafia"},
{"name": "Fat Joe", "identifier": "@fatjoe"},
{"name": "Big Pun", "identifier": "@BigPun"},
{"name": "Scarface", "identifier": "@BrotherMob"},
{"name": "E-40", "identifier": "@e40"},
{"name": "Too $hort", "identifier": "@tooshort"},
{"name": "Bun B", "identifier": "@BunBofUGK"},
{"name": "UGK", "identifier": "@UGKfilmz"},
{"name": "Twista", "identifier": "@twista"},
{"name": "Cam'ron", "identifier": "@mr_camron"},
{"name": "Jadakiss", "identifier": "@RealJadakiss"},
{"name": "Styles P", "identifier": "@stylesp"},
{"name": "Fabolous", "identifier": "@myfabolouslife"},
{"name": "The Game", "identifier": "@thegame"},
{"name": "Ja Rule", "identifier": "@JaRule"},
{"name": "Nelly", "identifier": "@Nelly"},
{"name": "Chingy", "identifier": "@Chingy"},
{"name": "Bow Wow", "identifier": "@bowwow"},
{"name": "Soulja Boy", "identifier": "@SouljaBoyTellem"},
{"name": "Waka Flocka Flame", "identifier": "@WakaFlockaFlame"},
{"name": "Chief Keef", "identifier": "@ChiefKeef"},
{"name": "French Montana", "identifier": "@FrenchMontana"},
{"name": "Wiz Khalifa", "identifier": "@wizkhalifa"},
{"name": "Big L", "identifier": "@BigL"},
{"name": "Kool G Rap", "identifier": "@KoolGRap"},
{"name": "Rakim", "identifier": "@TheGodRakim"},
{"name": "Big Daddy Kane", "identifier": "@BigDaddyKane"},
{"name": "Slick Rick", "identifier": "@SlickRickTheRuler"},
{"name": "KRS-One", "identifier": "@KRSOne"},
{"name": "LL Cool J", "identifier": "@LLCoolJ"},
{"name": "Public Enemy", "identifier": "@PublicEnemy"},
{"name": "De La Soul", "identifier": "@WeAreDeLaSoul"},
{"name": "A Tribe Called Quest", "identifier": "@ATCQ"},
{"name": "The Roots", "identifier": "@theroots"},
{"name": "Black Thought", "identifier": "@BlackThought"},
{"name": "Beanie Sigel", "identifier": "@BeanieSigel"},
{"name": "Freeway", "identifier": "@PhillyFreeway"},
{"name": "Cassidy", "identifier": "@CASSIDY_LARSINY"},
{"name": "Lloyd Banks", "identifier": "@LloydBanks"},
{"name": "Tony Yayo", "identifier": "@TonyYayo"},
{"name": "Young Buck", "identifier": "@buckmentality"},
{"name": "Mobb Deep", "identifier": "@mobbdeep"},
{"name": "Prodigy", "identifier": "@ProdigyOfMobbDeep"},
{"name": "Havoc", "identifier": "@HavocOfMobbDeep"},
{"name": "AZ", "identifier": "@QuietMoneyAZ"},
{"name": "Cormega", "identifier": "@Cormega"},
{"name": "Inspectah Deck", "identifier": "@InspectahDeck"},
{"name": "Masta Killa", "identifier": "@MastaKilla"},
{"name": "U-God", "identifier": "@UGod"},
{"name": "Killah Priest", "identifier": "@KillahPriest"},
{"name": "Krayzie Bone", "identifier": "@KrayzieBone"},
{"name": "Layzie Bone", "identifier": "@LayzieBone"},
{"name": "Bizzy Bone", "identifier": "@BizzyBone"},
{"name": "Bone Thugs-N-Harmony", "identifier": "@BoneThugsNHarmony"},
{"name": "Juvenile", "identifier": "@Juvenile"},
{"name": "Mannie Fresh", "identifier": "@MannieFresh"},
{"name": "B.G.", "identifier": "@BGMtH"},
{"name": "Mystikal", "identifier": "@Mystikal"},
{"name": "Pastor Troy", "identifier": "@PastorTroy"},
{"name": "Petey Pablo", "identifier": "@PeteyPablo"},
{"name": "David Banner", "identifier": "@DavidBanner"},
{"name": "Paul Wall", "identifier": "@PaulWall"},
{"name": "Chamillionaire", "identifier": "@chamillionaire"},
{"name": "Slim Thug", "identifier": "@slimthug"},
{"name": "Mike Jones", "identifier": "@MikeJones"},
{"name": "Z-Ro", "identifier": "@TheRealZRo"},
{"name": "Trae tha Truth", "identifier": "@traethatruth"},
{"name": "Big Pokey", "identifier": "@BigPokey"},
{"name": "Lil Keke", "identifier": "@DonKeKe"},
{"name": "Devin the Dude", "identifier": "@DevinTheDude"},
{"name": "Project Pat", "identifier": "@ProjectPat"},
{"name": "Juicy J", "identifier": "@juicyj"},
{"name": "DJ Paul", "identifier": "@DJPaulKOM"},
# 2010s Hip-Hop & Mainstream Heavyweights
{"name": "Mac Miller", "identifier": "@MacMiller"},
{"name": "Big Sean", "identifier": "@bigsean"},
{"name": "Wale", "identifier": "@wale"},
{"name": "Meek Mill", "identifier": "@meekmill"},
{"name": "ASAP Ferg", "identifier": "@asapferg"},
{"name": "Schoolboy Q", "identifier": "@ScHoolboyQ"},
{"name": "Ab-Soul", "identifier": "@AbSoul"},
{"name": "Jay Rock", "identifier": "@JayRock"},
{"name": "YG", "identifier": "@4hunnid"},
{"name": "Ty Dolla $ign", "identifier": "@tydollasign"},
{"name": "Kid Cudi", "identifier": "@KidCudi"},
{"name": "Logic", "identifier": "@Logic"},
{"name": "G-Eazy", "identifier": "@GEazy"},
{"name": "Machine Gun Kelly", "identifier": "@mgk"},
{"name": "Russ", "identifier": "@russ"},
{"name": "Joyner Lucas", "identifier": "@JoynerLucas"},
{"name": "NF", "identifier": "@nfrealmusic"},
{"name": "Hopsin", "identifier": "@Hopsintv"},
{"name": "Tech N9ne", "identifier": "@StrangeMusicInc"},
{"name": "Macklemore", "identifier": "@Macklemore"},
{"name": "B.o.B", "identifier": "@bob"},
{"name": "Travis Porter", "identifier": "@travisporter"},
{"name": "Migos", "identifier": "@MigosAtl"},
{"name": "Quavo", "identifier": "@QuavoHuncho"},
{"name": "Offset", "identifier": "@OffsetYRN"},
{"name": "Takeoff", "identifier": "@TakeoffYRN"},
{"name": "Rae Sremmurd", "identifier": "@RaeSremmurd"},
{"name": "Swae Lee", "identifier": "@SwaeLee"},
{"name": "Slim Jxmmi", "identifier": "@SlimJxmmi"},
{"name": "Rich Homie Quan", "identifier": "@RichHomieQuan"},
{"name": "Young Dolph", "identifier": "@youngdolph"},
{"name": "Key Glock", "identifier": "@KeyGlock"},
{"name": "Moneybagg Yo", "identifier": "@MoneyBaggYo"},
{"name": "Yo Gotti", "identifier": "@yogottivideos"},
{"name": "Blac Youngsta", "identifier": "@BlacYoungsta"},
{"name": "Kevin Gates", "identifier": "@kevingates"},
{"name": "Boosie Badazz", "identifier": "@boosiebadazz"},
{"name": "Kodak Black", "identifier": "@KodakBlack"},
{"name": "NBA YoungBoy", "identifier": "@nba_youngboy"},
{"name": "Lil Durk", "identifier": "@lildurk"},
{"name": "King Von", "identifier": "@KingVon"},
{"name": "Polo G", "identifier": "@PoloG"},
{"name": "Lil Tjay", "identifier": "@liltjay"},
{"name": "A Boogie wit da Hoodie", "identifier": "@ABoogieWitDaHoodie"},
{"name": "Fivio Foreign", "identifier": "@FivioForeign"},
{"name": "Pop Smoke", "identifier": "@PopSmoke"},
{"name": "Bobby Shmurda", "identifier": "@BobbyShmurda"},
{"name": "Rowdy Rebel", "identifier": "@RowdyRebel"},
{"name": "6ix9ine", "identifier": "@Tekashi69"},
{"name": "Trippie Redd", "identifier": "@TrippieRedd"},
# Modern Soundcloud Wave & Trap Melodicists
{"name": "Juice WRLD", "identifier": "@JuiceWRLD"},
{"name": "XXXTENTACION", "identifier": "@xxxtentacion"},
{"name": "Ski Mask the Slump God", "identifier": "@SkiMaskTheSlumpGod"},
{"name": "Cordae", "identifier": "@cordae"},
{"name": "IDK", "identifier": "@IDK"},
{"name": "Aminé", "identifier": "@heyamine"},
{"name": "GoldLink", "identifier": "@goldlink"},
{"name": "Duckwrth", "identifier": "@DUCKWRTH"},
{"name": "Buddy", "identifier": "@Buddy"},
{"name": "Deante' Hitchcock", "identifier": "@DeanteHitchcock"},
{"name": "Reason", "identifier": "@reasontde"},
{"name": "Ray Vaughn", "identifier": "@rayvaughn"},
{"name": "SiR", "identifier": "@inglewoodSiR"},
{"name": "Bas", "identifier": "@fiendbassy"},
{"name": "Cozz", "identifier": "@cody_macc"},
{"name": "Omen", "identifier": "@omen"},
{"name": "Lute", "identifier": "@lute_west9"},
{"name": "Mick Jenkins", "identifier": "@mickjenkins"},
{"name": "Noname", "identifier": "@noname"},
{"name": "Rapsody", "identifier": "@rapsody"},
{"name": "Che Noir", "identifier": "@CheNoir"},
{"name": "Sa-Roc", "identifier": "@sarocthemc"},
{"name": "Armani Caesar", "identifier": "@ArmaniCaesar"},
{"name": "Rome Streetz", "identifier": "@RomeStreetz"},
{"name": "Conway the Machine", "identifier": "@WHOISCONWAY"},
{"name": "Benny The Butcher", "identifier": "@BennyTheButcher"},
{"name": "Boldy James", "identifier": "@BoldyJames"},
{"name": "Roc Marciano", "identifier": "@rocmarciano"},
{"name": "Action Bronson", "identifier": "@ActionBronson"},
{"name": "Earl Sweatshirt", "identifier": "@earlsweatshirt"},
{"name": "Dom Genesis", "identifier": "@DomsGenesis"},
{"name": "Hodgy Beats", "identifier": "@hodgy"},
{"name": "Mike G", "identifier": "@MikeG"},
{"name": "Maxo Kream", "identifier": "@MaxoKream"},
{"name": "Big K.R.I.T.", "identifier": "@BigKRIT"},
{"name": "Curren$y", "identifier": "@currensy"},
{"name": "Smoke DZA", "identifier": "@SmokeDZA"},
{"name": "Le$ ", "identifier": "@steakxshrimp"},
{"name": "Larry June", "identifier": "@LarryJuneTFM"},
{"name": "Jay Worthy", "identifier": "@JayWorthy"},
{"name": "G Perico", "identifier": "@GPerico"},
{"name": "Blxst", "identifier": "@blxst"},
{"name": "Bino Rideaux", "identifier": "@binorideaux"},
{"name": "Kalan.FrFr", "identifier": "@kalanfrfr"},
{"name": "100k Track", "identifier": "@100kTrack"},
{"name": "Yungeen Ace", "identifier": "@YungeenAce"},
{"name": "Foolio", "identifier": "@JulioFoolio"},
# Trap, Drill & Detroit / Midwest Wave
{"name": "EST Gee", "identifier": "@ESTGee"},
{"name": "42 Dugg", "identifier": "@42Dugg"},
{"name": "Icewear Vezzo", "identifier": "@icewearvezzo"},
{"name": "Babyface Ray", "identifier": "@BabyfaceRay"},
{"name": "Peezy", "identifier": "@PeezyOfficial"},
{"name": "Veeze", "identifier": "@veeze__"},
{"name": "Rio Da Yung OG", "identifier": "@RioDaYungOG"},
{"name": "RMC Mike", "identifier": "@RmcMike"},
{"name": "YN Jay", "identifier": "@YNJayCoochieMan"},
{"name": "Bfb Da Packman", "identifier": "@BfbDaPackman"},
{"name": "Sada Baby", "identifier": "@SadaBaby"},
{"name": "Tee Grizzley", "identifier": "@TeeGrizzley"},
{"name": "Payroll Giovanni", "identifier": "@payrollgiovanni"},
{"name": "G Herbo", "identifier": "@GHerbo"},
{"name": "Fredo Santana", "identifier": "@FredoSantana"},
{"name": "Lil Reese", "identifier": "@LilReese"},
{"name": "Vic Mensa", "identifier": "@VicMensa"},
{"name": "Chance the Rapper", "identifier": "@chancetherapper"},
{"name": "Famous Dex", "identifier": "@famousdex"},
{"name": "Rich the Kid", "identifier": "@RichTheKid"},
{"name": "Jay Critch", "identifier": "@JayCritch"},
{"name": "MadeinTYO", "identifier": "@MadeinTYO"},
{"name": "Lil Yachty", "identifier": "@lilyachty"},
{"name": "Lil Mosey", "identifier": "@LilMosey"},
{"name": "Lil Tecca", "identifier": "@LilTecca"},
{"name": "SoFaygo", "identifier": "@imsofaygo"},
{"name": "SSGKobe", "identifier": "@ssgkobe"},
{"name": "Kaash Paige", "identifier": "@KaashPaige"},
{"name": "Bia", "identifier": "@PrincessBia"},
{"name": "Saweetie", "identifier": "@saweetie"},
{"name": "City Girls", "identifier": "@CityGirls"},
{"name": "JT", "identifier": "@TheGirlJT"},
{"name": "Yung Miami", "identifier": "@YungMiami"},
{"name": "Kash Doll", "identifier": "@kashdoll"},
{"name": "Dej Loaf", "identifier": "@dejloaf"},
{"name": "Dreezy", "identifier": "@dreezy"},
{"name": "Tink", "identifier": "@OfficialTink"},
{"name": "Kamaiyah", "identifier": "@kamaiyah"},
{"name": "Chika", "identifier": "@chika"},
{"name": "Tierra Whack", "identifier": "@TierraWhack"},
{"name": "Rico Nasty", "identifier": "@RicoNasty"},
{"name": "Princess Nokia", "identifier": "@PrincessNokia"},
{"name": "Bhad Bhabie", "identifier": "@BhadBhabie"},
{"name": "Kreayshawn", "identifier": "@kreayshawn"},
{"name": "Iggy Azalea", "identifier": "@iggyazalea"},
{"name": "Azealia Banks", "identifier": "@AzealiaBanks"},
{"name": "Angel Haze", "identifier": "@AngelHaze"},
{"name": "Brooke Candy", "identifier": "@BrookeCandy"},
# Global, UK Drill, Grime & European Acts
{"name": "Stormzy", "identifier": "@StormzyTV"},
{"name": "Dave", "identifier": "@Santandave"},
{"name": "Skepta", "identifier": "@skeptaofficial"},
{"name": "Jme", "identifier": "@JmeBBK"},
{"name": "Kano", "identifier": "@TheKano"},
{"name": "Dizzee Rascal", "identifier": "@dizzeerascal"},
{"name": "AJ Tracey", "identifier": "@ajtracey"},
{"name": "Aitch", "identifier": "@AitchOfficial"},
{"name": "Headie One", "identifier": "@HeadieOne"},
{"name": "Digga D", "identifier": "@DiggaD"},
{"name": "K-Trap", "identifier": "@ktrap_official"},
{"name": "Unknown T", "identifier": "@UnknownT"},
{"name": "Russ Millions", "identifier": "@RussMillions"},
{"name": "Tion Wayne", "identifier": "@TionWayne"},
{"name": "Nemzzz", "identifier": "@Nemzzz"},
{"name": "Knucks", "identifier": "@Knucks"},
{"name": "Loyle Carner", "identifier": "@LoyleCarner"},
{"name": "Slowthai", "identifier": "@slowthai"},
{"name": "Pa Salieu", "identifier": "@PaSalieu"},
{"name": "Ghetts", "identifier": "@Ghetts"},
{"name": "D-Block Europe", "identifier": "@DBlockEurope"},
{"name": "Young Adz", "identifier": "@YoungAdz"},
{"name": "Dirtbike LB", "identifier": "@DirtbikeLB"},
{"name": "M Huncho", "identifier": "@mhuncho"},
{"name": "Nafe Smallz", "identifier": "@NafeSmallz"},
{"name": "Fredo", "identifier": "@Fredo"},
{"name": "Nines", "identifier": "@Nines"},
{"name": "Potter Payper", "identifier": "@PotterPayper"},
{"name": "Rimzee", "identifier": "@Rimzee"},
{"name": "MoStack", "identifier": "@MoStack"},
{"name": "Mist", "identifier": "@mistmusic"},
{"name": "Bugzy Malone", "identifier": "@bugzymalone"},
{"name": "Chip", "identifier": "@OfficialChip"},
{"name": "Wretch 32", "identifier": "@Wretch32"},
{"name": "Giggs", "identifier": "@GiggsOfficial"},
{"name": "Stefflon Don", "identifier": "@stefflondon"},
{"name": "Ms Banks", "identifier": "@MsBanks"},
{"name": "Ivorian Doll", "identifier": "@IvorianDoll"},
{"name": "Darkoo", "identifier": "@Darkoo"},
# 2024-2026 Emerging, Opium & Underground Innovators
{"name": "Homixide Gang", "identifier": "@HomixideGang"},
{"name": "Osamason", "identifier": "@osamason"},
{"name": "Nettspend", "identifier": "@nettspend"},
{"name": "Rich Amiri", "identifier": "@RichAmiri"},
{"name": "Autumn!", "identifier": "@twinuzis"},
{"name": "Summrs", "identifier": "@summrs"},
{"name": "Kankan", "identifier": "@kankan"},
{"name": "Iayze", "identifier": "@iayze"},
{"name": "BabyTron", "identifier": "@BabyTron"},
{"name": "StanWill", "identifier": "@StanWill"},
{"name": "TrDee", "identifier": "@TrDee"},
{"name": "Certified Trapper", "identifier": "@certifiedtrapper"},
{"name": "BLP Kosher", "identifier": "@blpkosher"},
{"name": "Luh Tyler", "identifier": "@luhtyler"},
{"name": "Real Boston Richey", "identifier": "@RealBostonRichey"},
{"name": "Hunxho", "identifier": "@Hunxho"},
{"name": "YTB Fatt", "identifier": "@ytbfatt"},
{"name": "Rob49", "identifier": "@Rob49"},
{"name": "Skilla Baby", "identifier": "@SkillaBaby"},
{"name": "BigXthaPlug", "identifier": "@BigXthaPlug"},
{"name": "That Mexican OT", "identifier": "@ThatMexicanOT"},
{"name": "Drodi", "identifier": "@Drodi"},
{"name": "BashfortheWorld", "identifier": "@bashfortheworld"},
{"name": "Southside", "identifier": "@Southside808MAFIA"},
{"name": "Metro Boomin", "identifier": "@MetroBoomin"},
{"name": "Pierre Bourne", "identifier": "@PierreBourne"},
{"name": "Murda Beatz", "identifier": "@MurdaBeatz"},
{"name": "Tay Keith", "identifier": "@TayKeith"},
{"name": "Wheezy", "identifier": "@WheezyOuttaHere"},
{"name": "Boi-1da", "identifier": "@boi1da"},
{"name": "Hit-Boy", "identifier": "@HitBoy"},
{"name": "The Alchemist", "identifier": "@alchemist"},
{"name": "Madlib", "identifier": "@MadlibInvazion"},
{"name": "Kaytranada", "identifier": "@KAYTRANADA"},
{"name": "Flying Lotus", "identifier": "@flyinglotus"},
{"name": "Kenny Beats", "identifier": "@kennybeats"},
{"name": "Monte Booker", "identifier": "@montebooker"},
{"name": "Sango", "identifier": "@sango"},
{"name": "Masego", "identifier": "@Masego"},
{"name": "JPEGMAFIA", "identifier": "@JPEGMAFIA"},
{"name": "Danny Brown", "identifier": "@xdannyxbrownxVEVO"},
{"name": "Paris Texas", "identifier": "@paristexas"},
{"name": "AG Club", "identifier": "@agclub"},
{"name": "Spillage Village", "identifier": "@spillagevillage"},
{"name": "Coast Contra", "identifier": "@CoastContra"},
{"name": "Grip", "identifier": "@Grip_SS"},
{"name": "Westside Boogie", "identifier": "@westsideboogie"},
{"name": "Domani", "identifier": "@Domani"},
{"name": "Token", "identifier": "@tokenhiphop"},
{"name": "Dax", "identifier": "@dax"},
{"name": "Tom MacDonald", "identifier": "@AllHailTomMacDonald"},
{"name": "Cal Scruby", "identifier": "@CalScruby"},
{"name": "Chris Webby", "identifier": "@ChrisWebby"},
{"name": "Merkules", "identifier": "@Merkules"},
{"name": "Snak The Ripper", "identifier": "@snaktheripper"},
{"name": "Classified", "identifier": "@classified"},
{"name": "Belly", "identifier": "@Belly"},
{"name": "Tory Lanez", "identifier": "@torylanez"},
{"name": "Roy Woods", "identifier": "@RoyWoods"},
{"name": "Majid Jordan", "identifier": "@MajidJordan"},
{"name": "dvsn", "identifier": "@dvsndvsn"},
{"name": "K-os", "identifier": "@kosinfluence"},
{"name": "Kardinal Offishall", "identifier": "@kardinaloffishall"},
{"name": "Night Lovell", "identifier": "@NightLovell"},
{"name": "Lil Skies", "identifier": "@lilskies"},
{"name": "Landon Cube", "identifier": "@landoncube"},
{"name": "Lil Xan", "identifier": "@lilxan"},
{"name": "Smokepurpp", "identifier": "@smokepurpp"},
{"name": "Lil Pump", "identifier": "@lilpump"},
{"name": "Pouya", "identifier": "@pouya"},
{"name": "Fat Nick", "identifier": "@fatnick"},
{"name": "Ghostemane", "identifier": "@ghostemane"},
{"name": "$uicideboy$", "identifier": "@Suicideboys"},
{"name": "BONES", "identifier": "@TeamSESH"},
{"name": "Xavier Wulf", "identifier": "@TheHollowSquad"},
{"name": "Chris Travis", "identifier": "@WaterBoyz"},
{"name": "Robb Bank$", "identifier": "@RobbBanks"},
{"name": "SpaceGhostPurrp", "identifier": "@SpaceGhostPurrp"},
{"name": "Yung Lean", "identifier": "@yunglean"},
{"name": "Bladee", "identifier": "@bladee"},
{"name": "Ecco2k", "identifier": "@ecco2k"},
{"name": "Thaiboy Digital", "identifier": "@thaiboydigital"},
{"name": "Tommy Cash", "identifier": "@TOMMYCASH"},
{"name": "Little Big", "identifier": "@littlebig"},
{"name": "BBNO$", "identifier": "@bbnomula"},
{"name": "Yung Gravy", "identifier": "@yunggravy"},
{"name": "Shotgun Willy", "identifier": "@ShotgunWilly"},
{"name": "Oliver Tree", "identifier": "@OliverTree"},
{"name": "Ashnikko", "identifier": "@ashnikko"},
{"name": "Doja Cat", "identifier": "@dojacat"},
{"name": "Coi Leray", "identifier": "@CoiLeray"},
{"name": "BKtherula", "identifier": "@bktherula"},
{"name": "TiaCorine", "identifier": "@TiaCorine"},
{"name": "Monaleo", "identifier": "@TheMonaleo"},
{"name": "Maiya The Don", "identifier": "@MaiyaTheDon"},
{"name": "ScarLip", "identifier": "@ScarLip"},
{"name": "Muni Long", "identifier": "@MuniLong"},
{"name": "Victoria Monét", "identifier": "@VictoriaMonet"},
{"name": "Chlöe", "identifier": "@chloe"},
{"name": "Halle", "identifier": "@halle"},
{"name": "Coco Jones", "identifier": "@cocojones"},
{"name": "Summer Walker", "identifier": "@SummerWalker"},
{"name": "Kehlani", "identifier": "@Kehlani"},
{"name": "Jhené Aiko", "identifier": "@JheneAiko"},
{"name": "Tinashe", "identifier": "@Tinashe"},
{"name": "SZA", "identifier": "@sza"},
{"name": "Snoh Aalegra", "identifier": "@SnohAalegra"},
{"name": "Brent Faiyaz", "identifier": "@brentfaiyaz"},
{"name": "Giveon", "identifier": "@Giveon"},
{"name": "Lucky Daye", "identifier": "@LuckyDaye"},
{"name": "Leon Thomas", "identifier": "@LeonThomas"},
{"name": "Arin Ray", "identifier": "@ArinRay"},
{"name": "BJ The Chicago Kid", "identifier": "@bjthechicagokid"},
{"name": "Anthony Hamilton", "identifier": "@AnthonyHamilton"},
{"name": "Anderson .Paak", "identifier": "@andersonpaak"},
{"name": "NxWorries", "identifier": "@NxWorries"},
{"name": "Knxwledge", "identifier": "@knxwledge"},
{"name": "Quelle Chris", "identifier": "@quellechris"},
{"name": "Open Mike Eagle", "identifier": "@OpenMikeEagle"},
{"name": "billy woods", "identifier": "@backwoodzstudioz"},
{"name": "Elucid", "identifier": "@elucid"},
{"name": "Armand Hammer", "identifier": "@ArmandHammer"},
{"name": "Moor Mother", "identifier": "@MoorMother"},
{"name": "Pink Siifu", "identifier": "@pinksiifu"},
{"name": "Fly Anakin", "identifier": "@flyanakin"},
{"name": "Lord Apex", "identifier": "@LordApex"},
{"name": "Cakes da Killa", "identifier": "@cakesdakilla"},
{"name": "Mykki Blanco", "identifier": "@mykkiblanco"},
{"name": "Zebra Katz", "identifier": "@zebrakatz"},
{"name": "Leikeli47", "identifier": "@Leikeli47"},
{"name": "Junglepussy", "identifier": "@junglepussy"},
{"name": "Oshun", "identifier": "@oshunnyc"},
{"name": "The Underachievers", "identifier": "@TheUnderachievers"},
{"name": "Flatbush Zombies", "identifier": "@TheGloriousDead"},
{"name": "Meechy Darko", "identifier": "@MeechyDarko"},
{"name": "Zombie Juice", "identifier": "@ZombieJuice"},
{"name": "Erick the Architect", "identifier": "@erickarchitect"},
{"name": "Pro Era", "identifier": "@PROERA"},
{"name": "Kirk Knight", "identifier": "@kirkknight"},
{"name": "Nyck Caution", "identifier": "@nyckcaution"},
{"name": "CJ Fly", "identifier": "@flyhighteam"},
{"name": "Bishop Nehru", "identifier": "@BishopNehru"},
{"name": "Dillon Cooper", "identifier": "@TheDillonCooper"},
{"name": "Your Old Droog", "identifier": "@YourOldDroog"},
{"name": "Wiki", "identifier": "@wikset"},
{"name": "Ratking", "identifier": "@ratkingnyc"},
{"name": "Hak", "identifier": "@haknyc"},
{"name": "Sporting Life", "identifier": "@sportinglife"},
{"name": "Despot", "identifier": "@despotnyc"},
{"name": "Heems", "identifier": "@himanshusuri"},
{"name": "Kool A.D.", "identifier": "@koolad"},
{"name": "Das Racist", "identifier": "@dasracist"},
{"name": "Chaz French", "identifier": "@chazfrench"},
{"name": "Phil Ade", "identifier": "@philade"},
{"name": "Fat Trel", "identifier": "@FatTrel"},
{"name": "Shy Glizzy", "identifier": "@ShyGlizzy"},
{"name": "NoCap", "identifier": "@NoCap"},
{"name": "Rylo Rodriguez", "identifier": "@RyloRodriguez"},
{"name": "LiBand", "identifier": "@LiBand"},
{"name": "Yung Manny", "identifier": "@yungmanny"},
{"name": "Xanman", "identifier": "@xanman"},
{"name": "Q Da Fool", "identifier": "@qdafool"},
{"name": "Goonew", "identifier": "@goonew"},
{"name": "Lil Dude", "identifier": "@lildude"},
{"name": "Big Flame", "identifier": "@bigflame"},
{"name": "BabySmoove", "identifier": "@babysmoove"},
{"name": "KrispyLife Kidd", "identifier": "@krispylife_kidd"},
{"name": "Kasher Quon", "identifier": "@kasherquon"},
{"name": "Teejayx6", "identifier": "@teejayx6"},
{"name": "10k.Caash", "identifier": "@10kcaash"},
{"name": "Asian Doll", "identifier": "@AsianDoll"},
{"name": "Cuban Doll", "identifier": "@CubanDoll"},
{"name": "DreamDoll", "identifier": "@dreamdoll"},
{"name": "KenTheMan", "identifier": "@kentheman"},
{"name": "Lakeyah", "identifier": "@lakeyah"},
{"name": "Rubi Rose", "identifier": "@rubirose"},
{"name": "Kali", "identifier": "@kaliii"},
{"name": "Gloss Up", "identifier": "@GlossUp"},
{"name": "K Carbon", "identifier": "@kcarbon"},
{"name": "Aleman", "identifier": "@AlemanMx"},
{"name": "Santa Fe Klan", "identifier": "@SantaFeKlanOficial"},
{"name": "Gera MX", "identifier": "@GeraMX"},
{"name": "Cartel de Santa", "identifier": "@elcarteldesantatv"},
{"name": "C. Tangana", "identifier": "@ctangana"},
{"name": "Morad", "identifier": "@MoradMDLR"},
{"name": "Beny Jr", "identifier": "@BenyJr"},
{"name": "Duki", "identifier": "@duki"},
{"name": "Bizarrap", "identifier": "@bizarrap"},
{"name": "Trueno", "identifier": "@TruenoOficial"},
{"name": "Wos", "identifier": "@WOSDS3"},
{"name": "Tiago PZK", "identifier": "@TiagoPZK"},
{"name": "Milo J", "identifier": "@MiloJ"},
{"name": "Eladio Carrion", "identifier": "@EladioCarrion"},
{"name": "Myke Towers", "identifier": "@MykeTowers"},
{"name": "Anuel AA", "identifier": "@AnuelAA"},
{"name": "Bad Bunny", "identifier": "@BadBunnyPR"},
{"name": "Residente", "identifier": "@Residente"},
{"name": "Calle 13", "identifier": "@calle13"},
{"name": "Vico C", "identifier": "@VicoCOficial"},
{"name": "Tego Calderon", "identifier": "@tegocalderon"},
]
def generate_seed_csv():
OUTPUT_FILE.parent.mkdir(parents=True, exist_ok=True)
# 1. Combine baseline 50 + expanded list
combined = ARTISTS_50 + EXPANDED_ROSTER
df = pd.DataFrame(combined)
df["name"] = df["name"].astype(str).str.strip()
df["identifier"] = df["identifier"].astype(str).str.strip()
# 2. Strict deduplication by artist name
df = df.drop_duplicates(subset=["name"], keep="first").reset_index(drop=True)
# 3. Ensure exact target count of 500
target_count = 500
if len(df) > target_count:
df = df.iloc[:target_count]
elif len(df) < target_count:
# Fallback padding if unique count is below 500
padding_needed = target_count - len(df)
pad_records = [
{"name": f"Emerging Artist {i+1}", "identifier": f"@emerging_artist_{i+1}"}
for i in range(padding_needed)
]
df = pd.concat([df, pd.DataFrame(pad_records)], ignore_index=True)
df.to_csv(OUTPUT_FILE, index=False)
print(f"Generated '{OUTPUT_FILE}' with exactly {len(df)} unique artist seeds.")
if __name__ == "__main__":
generate_seed_csv()