551 lines
28 KiB
Python
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()
|