feat: scale HIFFI pipeline to 500 artists with dual BVI ranking, dark dashboard, and Excel audit export
This commit is contained in:
1 parent
5d441ffe7c
commit
9710cf9948
14 files changed
+3016
-357
No files matched your search
@@ -0,0 +1,10 @@
|
|||||||
|
[theme]
|
||||||
|
base = "dark"
|
||||||
|
primaryColor = "#6366f1"
|
||||||
|
backgroundColor = "#090d16"
|
||||||
|
secondaryBackgroundColor = "#131b2e"
|
||||||
|
textColor = "#f1f5f9"
|
||||||
|
font = "sans serif"
|
||||||
|
|
||||||
|
[client]
|
||||||
|
toolbarMode = "minimal"
|
||||||
@@ -0,0 +1,489 @@
|
|||||||
|
"""
|
||||||
|
app.py
|
||||||
|
HIFFI Artist Intelligence - Executive Dashboard
|
||||||
|
Clean dark-themed design with aligned dataframes, responsive cards, and scouting dossier.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import pandas as pd
|
||||||
|
import plotly.express as px
|
||||||
|
import plotly.graph_objects as go
|
||||||
|
import streamlit as st
|
||||||
|
|
||||||
|
st.set_page_config(
|
||||||
|
page_title="HIFFI | Artist Intelligence",
|
||||||
|
page_icon="⚡",
|
||||||
|
layout="wide",
|
||||||
|
initial_sidebar_state="expanded",
|
||||||
|
)
|
||||||
|
|
||||||
|
DATA_PATH = "enriched_artists.csv"
|
||||||
|
|
||||||
|
# Global CSS Polish
|
||||||
|
st.markdown(
|
||||||
|
"""
|
||||||
|
<style>
|
||||||
|
/* Global Container Spacing */
|
||||||
|
.block-container {
|
||||||
|
padding-top: 1.8rem;
|
||||||
|
padding-bottom: 2.5rem;
|
||||||
|
padding-left: 2.5rem;
|
||||||
|
padding-right: 2.5rem;
|
||||||
|
max-width: 100% !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* KPI Cards */
|
||||||
|
.kpi-box {
|
||||||
|
background: #111827;
|
||||||
|
border: 1px solid #1f2937;
|
||||||
|
border-radius: 12px;
|
||||||
|
padding: 16px 20px;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
}
|
||||||
|
.kpi-title {
|
||||||
|
font-size: 0.75rem;
|
||||||
|
font-weight: 700;
|
||||||
|
color: #9ca3af;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.05em;
|
||||||
|
}
|
||||||
|
.kpi-value {
|
||||||
|
font-size: 1.9rem;
|
||||||
|
font-weight: 800;
|
||||||
|
color: #f9fafb;
|
||||||
|
margin: 4px 0;
|
||||||
|
}
|
||||||
|
.kpi-subtitle {
|
||||||
|
font-size: 0.75rem;
|
||||||
|
color: #6b7280;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Podium Cards */
|
||||||
|
.podium-tile {
|
||||||
|
background: #111827;
|
||||||
|
border-radius: 12px;
|
||||||
|
padding: 18px 20px;
|
||||||
|
border: 1px solid #1f2937;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
.podium-gold { border-top: 4px solid #f59e0b; }
|
||||||
|
.podium-silver { border-top: 4px solid #94a3b8; }
|
||||||
|
.podium-bronze { border-top: 4px solid #f97316; }
|
||||||
|
|
||||||
|
/* Health Badges */
|
||||||
|
.badge {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 3px 8px;
|
||||||
|
border-radius: 6px;
|
||||||
|
font-size: 0.70rem;
|
||||||
|
font-weight: 700;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
.badge-active { background: rgba(16, 185, 129, 0.15); color: #10b981; }
|
||||||
|
.badge-evergreen { background: rgba(56, 189, 248, 0.15); color: #38bdf8; }
|
||||||
|
.badge-dormant { background: rgba(239, 68, 68, 0.15); color: #ef4444; }
|
||||||
|
|
||||||
|
/* Clean Section Dividers */
|
||||||
|
.custom-divider {
|
||||||
|
height: 1px;
|
||||||
|
background: #1f2937;
|
||||||
|
margin: 24px 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
""",
|
||||||
|
unsafe_allow_html=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@st.cache_data(ttl=60)
|
||||||
|
def load_data():
|
||||||
|
if not os.path.exists(DATA_PATH):
|
||||||
|
return pd.DataFrame()
|
||||||
|
df = pd.read_csv(DATA_PATH)
|
||||||
|
numeric_cols = [
|
||||||
|
"hiffi_score",
|
||||||
|
"breakout_velocity_index",
|
||||||
|
"subscriber_count",
|
||||||
|
"daily_view_velocity",
|
||||||
|
"momentum_30d",
|
||||||
|
"confidence_score",
|
||||||
|
]
|
||||||
|
for col in numeric_cols:
|
||||||
|
if col in df.columns:
|
||||||
|
df[col] = pd.to_numeric(df[col], errors="coerce")
|
||||||
|
return df
|
||||||
|
|
||||||
|
|
||||||
|
df = load_data()
|
||||||
|
|
||||||
|
# ----------------- Sidebar Controls -----------------
|
||||||
|
with st.sidebar:
|
||||||
|
st.markdown("### ⚡ HIFFI Intelligence")
|
||||||
|
st.caption("Hip-Hop Market Scoring & Breakout Detection")
|
||||||
|
st.markdown("<div class='custom-divider'></div>", unsafe_allow_html=True)
|
||||||
|
|
||||||
|
if df.empty:
|
||||||
|
st.error(f"'{DATA_PATH}' not found. Please run 'python main.py' first!")
|
||||||
|
st.stop()
|
||||||
|
|
||||||
|
view_mode = st.radio(
|
||||||
|
"Leaderboard Perspective:",
|
||||||
|
["🏆 Overall HIFFI Rank", "🚀 Breakout Velocity (BVI)", "🔍 Master Audit Grid"],
|
||||||
|
index=0,
|
||||||
|
)
|
||||||
|
|
||||||
|
st.markdown("<div class='custom-divider'></div>", unsafe_allow_html=True)
|
||||||
|
st.markdown("##### 🛡️ Filters")
|
||||||
|
|
||||||
|
available_statuses = df["health_status"].dropna().unique().tolist()
|
||||||
|
selected_statuses = st.multiselect(
|
||||||
|
"Channel Status",
|
||||||
|
options=available_statuses,
|
||||||
|
default=available_statuses,
|
||||||
|
)
|
||||||
|
|
||||||
|
min_conf = st.slider(
|
||||||
|
"Min Confidence",
|
||||||
|
min_value=0.0,
|
||||||
|
max_value=1.0,
|
||||||
|
value=0.50,
|
||||||
|
step=0.05,
|
||||||
|
)
|
||||||
|
|
||||||
|
st.markdown("<div class='custom-divider'></div>", unsafe_allow_html=True)
|
||||||
|
st.caption("Momentum (35%) • Velocity (30%) • Reach (20%) • Cadence (15%)")
|
||||||
|
|
||||||
|
# Filter logic
|
||||||
|
filtered_df = df[
|
||||||
|
(df["health_status"].isin(selected_statuses))
|
||||||
|
& (df["confidence_score"] >= min_conf)
|
||||||
|
].copy()
|
||||||
|
|
||||||
|
# ----------------- Main Header -----------------
|
||||||
|
head_col1, head_col2 = st.columns([3, 1])
|
||||||
|
with head_col1:
|
||||||
|
st.markdown("<h2 style='margin-bottom: 2px;'>HIFFI Artist Intelligence Hub</h2>", unsafe_allow_html=True)
|
||||||
|
st.markdown("<p style='color: #9ca3af; font-size: 0.92rem; margin-top: 0;'>Cross-platform tracking of catalog sustainability and audience breakout velocity.</p>", unsafe_allow_html=True)
|
||||||
|
with head_col2:
|
||||||
|
st.markdown(
|
||||||
|
f"<div style='text-align: right; color: #6b7280; font-size: 0.8rem; padding-top: 10px;'>Active Cohort: <b>{len(filtered_df)} / {len(df)}</b> artists</div>",
|
||||||
|
unsafe_allow_html=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
# ----------------- KPI Cards Row -----------------
|
||||||
|
k1, k2, k3, k4 = st.columns(4)
|
||||||
|
|
||||||
|
with k1:
|
||||||
|
st.markdown(
|
||||||
|
f"""
|
||||||
|
<div class="kpi-box">
|
||||||
|
<div class="kpi-title">Tracked Artists</div>
|
||||||
|
<div class="kpi-value">{len(df)}</div>
|
||||||
|
<div class="kpi-subtitle">Monitored pipeline size</div>
|
||||||
|
</div>
|
||||||
|
""",
|
||||||
|
unsafe_allow_html=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
with k2:
|
||||||
|
active_count = len(df[df["health_status"] == "ACTIVE_HEALTHY"])
|
||||||
|
st.markdown(
|
||||||
|
f"""
|
||||||
|
<div class="kpi-box">
|
||||||
|
<div class="kpi-title" style="color: #10b981;">Active Healthy</div>
|
||||||
|
<div class="kpi-value" style="color: #10b981;">{active_count}</div>
|
||||||
|
<div class="kpi-subtitle">Recent uploads & steady traction</div>
|
||||||
|
</div>
|
||||||
|
""",
|
||||||
|
unsafe_allow_html=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
with k3:
|
||||||
|
evergreen_count = len(df[df["health_status"] == "CATALOG_EVERGREEN"])
|
||||||
|
st.markdown(
|
||||||
|
f"""
|
||||||
|
<div class="kpi-box">
|
||||||
|
<div class="kpi-title" style="color: #38bdf8;">Catalog Evergreen</div>
|
||||||
|
<div class="kpi-value" style="color: #38bdf8;">{evergreen_count}</div>
|
||||||
|
<div class="kpi-subtitle">Strong passive catalog streams</div>
|
||||||
|
</div>
|
||||||
|
""",
|
||||||
|
unsafe_allow_html=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
with k4:
|
||||||
|
zombies = len(df[df["health_status"] == "DORMANT_CATALOG"])
|
||||||
|
st.markdown(
|
||||||
|
f"""
|
||||||
|
<div class="kpi-box">
|
||||||
|
<div class="kpi-title" style="color: #ef4444;">Dormant / Excluded</div>
|
||||||
|
<div class="kpi-value" style="color: #ef4444;">{zombies}</div>
|
||||||
|
<div class="kpi-subtitle">Disqualified (<NA> Rank)</div>
|
||||||
|
</div>
|
||||||
|
""",
|
||||||
|
unsafe_allow_html=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
st.markdown("<div class='custom-divider'></div>", unsafe_allow_html=True)
|
||||||
|
|
||||||
|
# ----------------- Top 3 Leaders Podium -----------------
|
||||||
|
top3 = (
|
||||||
|
filtered_df[filtered_df["is_rank_eligible"] == True]
|
||||||
|
.sort_values(by="hiffi_rank", ascending=True)
|
||||||
|
.head(3)
|
||||||
|
)
|
||||||
|
|
||||||
|
if len(top3) >= 3:
|
||||||
|
st.markdown("#### 👑 Market Leaders")
|
||||||
|
p1, p2, p3 = st.columns(3)
|
||||||
|
|
||||||
|
podium_data = [
|
||||||
|
(p1, top3.iloc[0], "🥇 RANK #1", "podium-gold", "#f59e0b"),
|
||||||
|
(p2, top3.iloc[1], "🥈 RANK #2", "podium-silver", "#94a3b8"),
|
||||||
|
(p3, top3.iloc[2], "🥉 RANK #3", "podium-bronze", "#f97316"),
|
||||||
|
]
|
||||||
|
|
||||||
|
for col, row, rank_label, css_class, accent_color in podium_data:
|
||||||
|
badge_cls = (
|
||||||
|
"badge-active"
|
||||||
|
if row["health_status"] == "ACTIVE_HEALTHY"
|
||||||
|
else "badge-evergreen"
|
||||||
|
)
|
||||||
|
bvi_str = f"{row['breakout_velocity_index']:.1f}" if pd.notna(row.get("breakout_velocity_index")) else "N/A"
|
||||||
|
vel_str = f"{int(row['daily_view_velocity']):,}" if pd.notna(row.get("daily_view_velocity")) else "N/A"
|
||||||
|
|
||||||
|
with col:
|
||||||
|
st.markdown(
|
||||||
|
f"""
|
||||||
|
<div class="podium-tile {css_class}">
|
||||||
|
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 6px;">
|
||||||
|
<span style="font-weight: 800; color: {accent_color}; font-size: 0.85rem;">{rank_label}</span>
|
||||||
|
<span class="badge {badge_cls}">{row['health_status'].replace('_', ' ')}</span>
|
||||||
|
</div>
|
||||||
|
<div style="font-size: 1.35rem; font-weight: 800; color: #ffffff; margin-bottom: 2px;">{row['name']}</div>
|
||||||
|
<div style="font-size: 0.8rem; color: #6b7280; margin-bottom: 12px;">{row.get('channel_title', '')}</div>
|
||||||
|
<div style="display: flex; justify-content: space-between; background: #0b0f17; padding: 10px 14px; border-radius: 8px;">
|
||||||
|
<div>
|
||||||
|
<div style="font-size: 0.68rem; color: #9ca3af; text-transform: uppercase;">HIFFI Score</div>
|
||||||
|
<div style="font-size: 1.25rem; font-weight: 800; color: {accent_color};">{row['hiffi_score']:.1f}</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div style="font-size: 0.68rem; color: #9ca3af; text-transform: uppercase;">Breakout Index</div>
|
||||||
|
<div style="font-size: 1.25rem; font-weight: 800; color: #a855f7;">{bvi_str}</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div style="font-size: 0.68rem; color: #9ca3af; text-transform: uppercase;">Daily Views</div>
|
||||||
|
<div style="font-size: 1.05rem; font-weight: 700; color: #e5e7eb;">{vel_str}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
""",
|
||||||
|
unsafe_allow_html=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
st.markdown("<div class='custom-divider'></div>", unsafe_allow_html=True)
|
||||||
|
|
||||||
|
# ----------------- Leaderboard Grid -----------------
|
||||||
|
st.markdown(f"#### 📋 {view_mode}")
|
||||||
|
|
||||||
|
if view_mode == "🏆 Overall HIFFI Rank":
|
||||||
|
table_df = (
|
||||||
|
filtered_df[filtered_df["is_rank_eligible"] == True]
|
||||||
|
.sort_values(by="hiffi_rank", ascending=True)
|
||||||
|
.copy()
|
||||||
|
)
|
||||||
|
cols = [
|
||||||
|
"hiffi_rank",
|
||||||
|
"name",
|
||||||
|
"hiffi_score",
|
||||||
|
"breakout_rank",
|
||||||
|
"breakout_velocity_index",
|
||||||
|
"daily_view_velocity",
|
||||||
|
"momentum_30d",
|
||||||
|
"health_status",
|
||||||
|
]
|
||||||
|
elif view_mode == "🚀 Breakout Velocity (BVI)":
|
||||||
|
table_df = (
|
||||||
|
filtered_df[
|
||||||
|
(filtered_df["is_rank_eligible"] == True)
|
||||||
|
& (filtered_df["breakout_rank"].notna())
|
||||||
|
]
|
||||||
|
.sort_values(by="breakout_rank", ascending=True)
|
||||||
|
.copy()
|
||||||
|
)
|
||||||
|
cols = [
|
||||||
|
"breakout_rank",
|
||||||
|
"name",
|
||||||
|
"breakout_velocity_index",
|
||||||
|
"hiffi_rank",
|
||||||
|
"hiffi_score",
|
||||||
|
"daily_view_velocity",
|
||||||
|
"subscriber_count",
|
||||||
|
"health_status",
|
||||||
|
]
|
||||||
|
else:
|
||||||
|
table_df = filtered_df.sort_values(by=["is_rank_eligible", "hiffi_score"], ascending=[False, False]).copy()
|
||||||
|
cols = [
|
||||||
|
"name",
|
||||||
|
"hiffi_score",
|
||||||
|
"breakout_velocity_index",
|
||||||
|
"daily_view_velocity",
|
||||||
|
"subscriber_count",
|
||||||
|
"health_status",
|
||||||
|
"confidence_score",
|
||||||
|
"is_rank_eligible",
|
||||||
|
]
|
||||||
|
|
||||||
|
st.dataframe(
|
||||||
|
table_df[cols].reset_index(drop=True),
|
||||||
|
use_container_width=True,
|
||||||
|
height=290,
|
||||||
|
column_config={
|
||||||
|
"hiffi_rank": st.column_config.NumberColumn("Rank", format="%d", width="small"),
|
||||||
|
"breakout_rank": st.column_config.NumberColumn("BVI Rank", format="%d", width="small"),
|
||||||
|
"name": st.column_config.TextColumn("Artist", width="medium"),
|
||||||
|
"hiffi_score": st.column_config.ProgressColumn(
|
||||||
|
"HIFFI Score",
|
||||||
|
format="%.1f",
|
||||||
|
min_value=0,
|
||||||
|
max_value=100,
|
||||||
|
width="medium",
|
||||||
|
),
|
||||||
|
"breakout_velocity_index": st.column_config.ProgressColumn(
|
||||||
|
"Breakout (BVI)",
|
||||||
|
format="%.1f",
|
||||||
|
min_value=0,
|
||||||
|
max_value=100,
|
||||||
|
width="medium",
|
||||||
|
),
|
||||||
|
"daily_view_velocity": st.column_config.NumberColumn(
|
||||||
|
"Daily Views / Day",
|
||||||
|
format="%,d",
|
||||||
|
width="medium",
|
||||||
|
),
|
||||||
|
"momentum_30d": st.column_config.NumberColumn(
|
||||||
|
"30d Momentum",
|
||||||
|
format="%.1f%%",
|
||||||
|
width="small",
|
||||||
|
),
|
||||||
|
"subscriber_count": st.column_config.NumberColumn(
|
||||||
|
"Subscribers",
|
||||||
|
format="%,d",
|
||||||
|
width="medium",
|
||||||
|
),
|
||||||
|
"health_status": st.column_config.TextColumn("Status", width="medium"),
|
||||||
|
"confidence_score": st.column_config.NumberColumn("Confidence", format="%.2f", width="small"),
|
||||||
|
"is_rank_eligible": st.column_config.CheckboxColumn("Eligible", width="small"),
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
st.markdown("<div class='custom-divider'></div>", unsafe_allow_html=True)
|
||||||
|
|
||||||
|
# ----------------- Visual Insights Charts -----------------
|
||||||
|
st.markdown("#### 📊 Market Landscape Visualizer")
|
||||||
|
|
||||||
|
c_left, c_right = st.columns(2)
|
||||||
|
|
||||||
|
with c_left:
|
||||||
|
scatter_df = filtered_df[filtered_df["is_rank_eligible"] == True].copy()
|
||||||
|
fig_scatter = px.scatter(
|
||||||
|
scatter_df,
|
||||||
|
x="daily_view_velocity",
|
||||||
|
y="momentum_30d",
|
||||||
|
size="subscriber_count",
|
||||||
|
color="health_status",
|
||||||
|
color_discrete_map={
|
||||||
|
"ACTIVE_HEALTHY": "#10b981",
|
||||||
|
"CATALOG_EVERGREEN": "#38bdf8",
|
||||||
|
"DORMANT_CATALOG": "#ef4444",
|
||||||
|
},
|
||||||
|
hover_name="name",
|
||||||
|
hover_data={"daily_view_velocity": ":,d", "momentum_30d": ":.1f%"},
|
||||||
|
log_x=True,
|
||||||
|
title="View Velocity vs. 30-Day Momentum",
|
||||||
|
labels={
|
||||||
|
"daily_view_velocity": "Daily Views / Day (Log Scale)",
|
||||||
|
"momentum_30d": "30-Day Growth (%)",
|
||||||
|
"health_status": "Vitality",
|
||||||
|
},
|
||||||
|
template="plotly_dark",
|
||||||
|
)
|
||||||
|
fig_scatter.update_layout(
|
||||||
|
paper_bgcolor="#111827",
|
||||||
|
plot_bgcolor="#111827",
|
||||||
|
font=dict(color="#9ca3af"),
|
||||||
|
margin=dict(l=20, r=20, t=40, b=20),
|
||||||
|
height=320,
|
||||||
|
)
|
||||||
|
st.plotly_chart(fig_scatter, use_container_width=True)
|
||||||
|
|
||||||
|
with c_right:
|
||||||
|
bvi_df = (
|
||||||
|
filtered_df[filtered_df["breakout_velocity_index"].notna()]
|
||||||
|
.sort_values(by="breakout_velocity_index", ascending=True)
|
||||||
|
)
|
||||||
|
fig_bar = px.bar(
|
||||||
|
bvi_df,
|
||||||
|
x="breakout_velocity_index",
|
||||||
|
y="name",
|
||||||
|
orientation="h",
|
||||||
|
color="breakout_velocity_index",
|
||||||
|
color_continuous_scale="Purples",
|
||||||
|
title="Breakout Velocity Index (BVI)",
|
||||||
|
labels={"breakout_velocity_index": "BVI Score", "name": "Artist"},
|
||||||
|
template="plotly_dark",
|
||||||
|
)
|
||||||
|
fig_bar.update_layout(
|
||||||
|
paper_bgcolor="#111827",
|
||||||
|
plot_bgcolor="#111827",
|
||||||
|
font=dict(color="#9ca3af"),
|
||||||
|
coloraxis_showscale=False,
|
||||||
|
margin=dict(l=20, r=20, t=40, b=20),
|
||||||
|
height=320,
|
||||||
|
)
|
||||||
|
st.plotly_chart(fig_bar, use_container_width=True)
|
||||||
|
|
||||||
|
st.markdown("<div class='custom-divider'></div>", unsafe_allow_html=True)
|
||||||
|
|
||||||
|
# ----------------- Deep Dive Scouting Dossier -----------------
|
||||||
|
st.markdown("#### 🔎 Artist Dossier")
|
||||||
|
|
||||||
|
selected_name = st.selectbox("Inspect Artist Details:", df["name"].unique(), label_visibility="collapsed")
|
||||||
|
row = df[df["name"] == selected_name].iloc[0]
|
||||||
|
|
||||||
|
d1, d2, d3, d4 = st.columns(4)
|
||||||
|
|
||||||
|
with d1:
|
||||||
|
h_val = row.get("hiffi_score")
|
||||||
|
st.metric("HIFFI Score", f"{h_val:.1f}" if pd.notna(h_val) else "N/A")
|
||||||
|
with d2:
|
||||||
|
b_val = row.get("breakout_velocity_index")
|
||||||
|
st.metric("Breakout Index (BVI)", f"{b_val:.1f}" if pd.notna(b_val) else "N/A")
|
||||||
|
with d3:
|
||||||
|
s_val = row.get("subscriber_count")
|
||||||
|
st.metric("Subscribers", f"{int(s_val):,}" if pd.notna(s_val) else "N/A")
|
||||||
|
with d4:
|
||||||
|
conf = row.get("confidence_score", 0.0)
|
||||||
|
tier = row.get("confidence_tier", "Standard")
|
||||||
|
st.metric("Entity Confidence", f"{conf * 100:.0f}%", delta=tier, delta_color="normal")
|
||||||
|
|
||||||
|
badge_cls = (
|
||||||
|
"badge-active"
|
||||||
|
if row.get("health_status") == "ACTIVE_HEALTHY"
|
||||||
|
else "badge-evergreen"
|
||||||
|
if row.get("health_status") == "CATALOG_EVERGREEN"
|
||||||
|
else "badge-dormant"
|
||||||
|
)
|
||||||
|
|
||||||
|
st.markdown(
|
||||||
|
f"""
|
||||||
|
<div style="background: #111827; padding: 12px 16px; border-radius: 8px; border: 1px solid #1f2937; margin-top: 10px; display: flex; gap: 24px; align-items: center; font-size: 0.85rem;">
|
||||||
|
<div><b>Artist:</b> {row['name']}</div>
|
||||||
|
<div><b>Channel:</b> {row.get('channel_title', 'Unknown')}</div>
|
||||||
|
<div><b>Status:</b> <span class="badge {badge_cls}">{row.get('health_status', 'UNKNOWN')}</span></div>
|
||||||
|
<div><b>Zombie Flag:</b> {'⚠️ Yes' if row.get('is_zombie') else '✅ Clean'}</div>
|
||||||
|
<div><b>Eligible for Rank:</b> {'✅ Yes' if row.get('is_rank_eligible') else '❌ Disqualified'}</div>
|
||||||
|
</div>
|
||||||
|
""",
|
||||||
|
unsafe_allow_html=True,
|
||||||
|
)
|
||||||
+326
-162
@@ -1,192 +1,356 @@
|
|||||||
|
"""
|
||||||
|
collectors/youtube_collector.py
|
||||||
|
Collects YouTube statistics, uploads, view velocity, and true momentum.
|
||||||
|
Includes URL/handle parsing, historical snapshotting, status_flag, and data_complete.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from datetime import datetime, timedelta, timezone
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import json
|
|
||||||
import sqlite3
|
import sqlite3
|
||||||
from pathlib import Path
|
from typing import Any, Dict, List, Optional, Tuple
|
||||||
from datetime import datetime, timezone, timedelta
|
|
||||||
from urllib.parse import urlparse
|
from urllib.parse import urlparse
|
||||||
from typing import Dict, Any, Optional
|
|
||||||
|
|
||||||
try:
|
|
||||||
from googleapiclient.discovery import build
|
from googleapiclient.discovery import build
|
||||||
except ImportError:
|
|
||||||
build = None
|
|
||||||
|
def parse_youtube_identifier(raw_input: str) -> Tuple[str, str]:
|
||||||
|
"""Parses raw input (URL, handle, or ID) into a query type and clean value."""
|
||||||
|
val = raw_input.strip()
|
||||||
|
|
||||||
|
if "youtube.com" in val or "youtu.be" in val:
|
||||||
|
parsed = urlparse(val if val.startswith("http") else f"https://{val}")
|
||||||
|
path_parts = [p for p in parsed.path.split("/") if p]
|
||||||
|
if not path_parts:
|
||||||
|
raise ValueError(f"Invalid YouTube URL: {val}")
|
||||||
|
|
||||||
|
if path_parts[0].startswith("@"):
|
||||||
|
return ("forHandle", path_parts[0])
|
||||||
|
elif path_parts[0] == "channel" and len(path_parts) > 1:
|
||||||
|
return ("id", path_parts[1])
|
||||||
|
elif path_parts[0] == "user" and len(path_parts) > 1:
|
||||||
|
return ("forUsername", path_parts[1])
|
||||||
|
elif path_parts[0] == "c" and len(path_parts) > 1:
|
||||||
|
return ("forHandle", f"@{path_parts[1]}")
|
||||||
|
else:
|
||||||
|
return (
|
||||||
|
"forHandle",
|
||||||
|
path_parts[0]
|
||||||
|
if path_parts[0].startswith("@")
|
||||||
|
else f"@{path_parts[0]}",
|
||||||
|
)
|
||||||
|
|
||||||
|
if val.startswith("UC") and len(val) == 24:
|
||||||
|
return ("id", val)
|
||||||
|
|
||||||
|
if val.startswith("@"):
|
||||||
|
return ("forHandle", val)
|
||||||
|
|
||||||
|
return ("forHandle", f"@{val}")
|
||||||
|
|
||||||
|
|
||||||
class YouTubeCollector:
|
class YouTubeCollector:
|
||||||
def __init__(self, api_keys: list[str] = None, cache_db: str = ".cache/youtube_metrics.sqlite"):
|
|
||||||
self.api_keys = [k.strip() for k in (api_keys or []) if k.strip()]
|
def __init__(
|
||||||
self.cache_db = Path(cache_db)
|
self,
|
||||||
self.cache_db.parent.mkdir(parents=True, exist_ok=True)
|
api_key: Optional[str] = None,
|
||||||
|
cache_db_path: str = ".cache/youtube_metrics.sqlite",
|
||||||
|
):
|
||||||
|
self.api_key = api_key or os.getenv("YOUTUBE_API_KEY")
|
||||||
|
if not self.api_key:
|
||||||
|
raise ValueError("YOUTUBE_API_KEY not found in environment.")
|
||||||
|
self.youtube = build("youtube", "v3", developerKey=self.api_key)
|
||||||
|
self.cache_db_path = cache_db_path
|
||||||
self._init_db()
|
self._init_db()
|
||||||
self.client = None
|
|
||||||
if self.api_keys and build:
|
|
||||||
try:
|
|
||||||
self.client = build("youtube", "v3", developerKey=self.api_keys[0], cache_discovery=False)
|
|
||||||
except Exception as e:
|
|
||||||
print(f"[Warning] Failed to initialize YouTube API client: {e}")
|
|
||||||
|
|
||||||
def _init_db(self):
|
def _init_db(self):
|
||||||
with sqlite3.connect(self.cache_db) as conn:
|
os.makedirs(os.path.dirname(self.cache_db_path), exist_ok=True)
|
||||||
|
with sqlite3.connect(self.cache_db_path) as conn:
|
||||||
|
conn.execute("""
|
||||||
|
CREATE TABLE IF NOT EXISTS channel_snapshots (
|
||||||
|
channel_id TEXT,
|
||||||
|
snapshot_date TEXT,
|
||||||
|
lifetime_views INTEGER,
|
||||||
|
subscriber_count INTEGER,
|
||||||
|
video_count INTEGER,
|
||||||
|
PRIMARY KEY (channel_id, snapshot_date)
|
||||||
|
)
|
||||||
|
""")
|
||||||
conn.execute("""
|
conn.execute("""
|
||||||
CREATE TABLE IF NOT EXISTS channel_metrics (
|
CREATE TABLE IF NOT EXISTS channel_metrics (
|
||||||
channel_id TEXT PRIMARY KEY,
|
identifier TEXT PRIMARY KEY,
|
||||||
title TEXT,
|
channel_id TEXT,
|
||||||
subscribers INTEGER,
|
channel_title TEXT,
|
||||||
|
subscriber_count INTEGER,
|
||||||
lifetime_views INTEGER,
|
lifetime_views INTEGER,
|
||||||
video_count INTEGER,
|
video_count INTEGER,
|
||||||
recent_avg_views INTEGER,
|
recent_avg_views REAL,
|
||||||
|
daily_view_velocity REAL,
|
||||||
momentum_30d REAL,
|
momentum_30d REAL,
|
||||||
raw_json TEXT,
|
status_flag TEXT,
|
||||||
updated_at TEXT
|
data_complete INTEGER,
|
||||||
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||||
)
|
)
|
||||||
""")
|
""")
|
||||||
|
|
||||||
def _get_cached(self, channel_id: str) -> Optional[Dict[str, Any]]:
|
def _resolve_channel(self, identifier: str) -> Optional[Dict[str, Any]]:
|
||||||
with sqlite3.connect(self.cache_db) as conn:
|
param_type, param_value = parse_youtube_identifier(identifier)
|
||||||
conn.row_factory = sqlite3.Row
|
req_params = {
|
||||||
row = conn.execute("SELECT * FROM channel_metrics WHERE channel_id = ?", (channel_id,)).fetchone()
|
"part": "snippet,statistics,contentDetails",
|
||||||
if row:
|
param_type: param_value,
|
||||||
return dict(row)
|
}
|
||||||
|
|
||||||
|
try:
|
||||||
|
resp = self.youtube.channels().list(**req_params).execute()
|
||||||
|
items = resp.get("items", [])
|
||||||
|
return items[0] if items else None
|
||||||
|
except Exception as e:
|
||||||
|
print(f"API Resolution error for '{identifier}': {e}")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def _save_cache(self, metrics: Dict[str, Any]):
|
def _record_snapshot(
|
||||||
with sqlite3.connect(self.cache_db) as conn:
|
self, channel_id: str, views: int, subs: int, videos: int
|
||||||
conn.execute("""
|
):
|
||||||
INSERT OR REPLACE INTO channel_metrics (
|
today = datetime.now(timezone.utc).strftime("%Y-%m-%d")
|
||||||
channel_id, title, subscribers, lifetime_views, video_count,
|
with sqlite3.connect(self.cache_db_path) as conn:
|
||||||
recent_avg_views, momentum_30d, raw_json, updated_at
|
conn.execute(
|
||||||
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
"""
|
||||||
""", (
|
INSERT OR REPLACE INTO channel_snapshots
|
||||||
metrics["channel_id"],
|
(channel_id, snapshot_date, lifetime_views, subscriber_count, video_count)
|
||||||
metrics["title"],
|
VALUES (?, ?, ?, ?, ?)
|
||||||
metrics["subscribers"],
|
""",
|
||||||
metrics["lifetime_views"],
|
(channel_id, today, views, subs, videos),
|
||||||
metrics["video_count"],
|
)
|
||||||
metrics["recent_avg_views"],
|
|
||||||
metrics["momentum_30d"],
|
|
||||||
json.dumps(metrics),
|
|
||||||
datetime.now(timezone.utc).isoformat()
|
|
||||||
))
|
|
||||||
|
|
||||||
def extract_channel_id(self, url: str) -> str:
|
def _calculate_historical_channel_momentum(
|
||||||
"""Extract UC... channel ID from standard YouTube URL."""
|
self, channel_id: str
|
||||||
if not url:
|
) -> Optional[float]:
|
||||||
return ""
|
with sqlite3.connect(self.cache_db_path) as conn:
|
||||||
match = re.search(r"channel/(UC[a-zA-Z0-9_-]{22})", url)
|
conn.row_factory = sqlite3.Row
|
||||||
if match:
|
cursor = conn.cursor()
|
||||||
return match.group(1)
|
cursor.execute(
|
||||||
return url.strip().rstrip("/").split("/")[-1]
|
"""
|
||||||
|
SELECT snapshot_date, lifetime_views
|
||||||
|
FROM channel_snapshots
|
||||||
|
WHERE channel_id = ?
|
||||||
|
ORDER BY snapshot_date DESC
|
||||||
|
""",
|
||||||
|
(channel_id,),
|
||||||
|
)
|
||||||
|
rows = cursor.fetchall()
|
||||||
|
|
||||||
def get_channel_metrics(self, youtube_url: str, fetch_recent_videos: bool = False) -> Dict[str, Any]:
|
if len(rows) < 2:
|
||||||
channel_id = self.extract_channel_id(youtube_url)
|
return None
|
||||||
empty = {
|
|
||||||
"channel_id": channel_id,
|
|
||||||
"title": "",
|
|
||||||
"subscribers": 0,
|
|
||||||
"lifetime_views": 0,
|
|
||||||
"video_count": 0,
|
|
||||||
"recent_avg_views": 0,
|
|
||||||
"momentum_30d": 0.0,
|
|
||||||
"status": "unresolved"
|
|
||||||
}
|
|
||||||
if not channel_id:
|
|
||||||
empty["status"] = "empty_url"
|
|
||||||
return empty
|
|
||||||
|
|
||||||
# 1. Check local cache first (saves API quota)
|
latest_date = datetime.strptime(rows[0]["snapshot_date"], "%Y-%m-%d")
|
||||||
cached = self._get_cached(channel_id)
|
latest_views = rows[0]["lifetime_views"]
|
||||||
if cached:
|
|
||||||
cached["status"] = "cached"
|
|
||||||
return cached
|
|
||||||
|
|
||||||
# 2. If client is not available (zero API keys), return baseline
|
for r in rows[1:]:
|
||||||
if not self.client:
|
past_date = datetime.strptime(r["snapshot_date"], "%Y-%m-%d")
|
||||||
empty["status"] = "no_api_key"
|
diff_days = (latest_date - past_date).days
|
||||||
return empty
|
if 7 <= diff_days <= 45:
|
||||||
|
past_views = r["lifetime_views"]
|
||||||
|
delta_views = latest_views - past_views
|
||||||
|
return float(delta_views / max(diff_days, 1))
|
||||||
|
|
||||||
try:
|
return None
|
||||||
# 3. Call channels.list for statistics and contentDetails
|
|
||||||
resp = self.client.channels().list(
|
|
||||||
part="snippet,statistics,contentDetails",
|
|
||||||
id=channel_id
|
|
||||||
).execute()
|
|
||||||
|
|
||||||
items = resp.get("items") or []
|
|
||||||
if not items:
|
|
||||||
empty["status"] = "not_found"
|
|
||||||
return empty
|
|
||||||
|
|
||||||
item = items[0]
|
|
||||||
snippet = item.get("snippet", {})
|
|
||||||
stats = item.get("statistics", {})
|
|
||||||
content = item.get("contentDetails", {})
|
|
||||||
|
|
||||||
metrics = {
|
|
||||||
"channel_id": channel_id,
|
|
||||||
"title": snippet.get("title", ""),
|
|
||||||
"subscribers": int(stats.get("subscriberCount") or 0),
|
|
||||||
"lifetime_views": int(stats.get("viewCount") or 0),
|
|
||||||
"video_count": int(stats.get("videoCount") or 0),
|
|
||||||
"recent_avg_views": 0,
|
|
||||||
"momentum_30d": 0.0,
|
|
||||||
"status": "live_api"
|
|
||||||
}
|
|
||||||
|
|
||||||
# 4. Optional: fetch recent video metrics for average views & momentum
|
|
||||||
uploads_id = content.get("relatedPlaylists", {}).get("uploads")
|
|
||||||
if fetch_recent_videos and uploads_id:
|
|
||||||
recent_views, momentum = self._calc_recent_metrics(uploads_id, metrics["lifetime_views"])
|
|
||||||
metrics["recent_avg_views"] = recent_views
|
|
||||||
metrics["momentum_30d"] = momentum
|
|
||||||
|
|
||||||
self._save_cache(metrics)
|
|
||||||
return metrics
|
|
||||||
|
|
||||||
except Exception as e:
|
|
||||||
empty["status"] = f"error: {str(e)[:100]}"
|
|
||||||
return empty
|
|
||||||
|
|
||||||
def _calc_recent_metrics(self, uploads_playlist_id: str, lifetime_views: int) -> tuple[int, float]:
|
|
||||||
"""Fetch up to 10 latest uploads to compute average views and 30d momentum."""
|
|
||||||
try:
|
|
||||||
playlist_resp = self.client.playlistItems().list(
|
|
||||||
part="contentDetails",
|
|
||||||
playlistId=uploads_playlist_id,
|
|
||||||
maxResults=10
|
|
||||||
).execute()
|
|
||||||
|
|
||||||
video_ids = [i["contentDetails"]["videoId"] for i in playlist_resp.get("items", [])]
|
|
||||||
if not video_ids:
|
|
||||||
return 0, 0.0
|
|
||||||
|
|
||||||
video_resp = self.client.videos().list(
|
|
||||||
part="statistics,snippet",
|
|
||||||
id=",".join(video_ids)
|
|
||||||
).execute()
|
|
||||||
|
|
||||||
|
def _get_recent_video_metrics(
|
||||||
|
self, uploads_playlist_id: str, max_results: int = 25
|
||||||
|
) -> Dict[str, Optional[float]]:
|
||||||
now = datetime.now(timezone.utc)
|
now = datetime.now(timezone.utc)
|
||||||
thirty_days_ago = now - timedelta(days=30)
|
t_30d = now - timedelta(days=30)
|
||||||
|
t_60d = now - timedelta(days=60)
|
||||||
|
|
||||||
views = []
|
try:
|
||||||
views_30d = 0
|
pl_resp = (
|
||||||
|
self.youtube.playlistItems()
|
||||||
for v in video_resp.get("items", []):
|
.list(
|
||||||
v_views = int(v.get("statistics", {}).get("viewCount") or 0)
|
part="contentDetails,snippet",
|
||||||
views.append(v_views)
|
playlistId=uploads_playlist_id,
|
||||||
pub_date_str = v.get("snippet", {}).get("publishedAt", "")
|
maxResults=max_results,
|
||||||
if pub_date_str:
|
)
|
||||||
pub_date = datetime.fromisoformat(pub_date_str.replace("Z", "+00:00"))
|
.execute()
|
||||||
if pub_date >= thirty_days_ago:
|
)
|
||||||
views_30d += v_views
|
|
||||||
|
|
||||||
avg_views = int(sum(views) / len(views)) if views else 0
|
|
||||||
momentum = round((views_30d / lifetime_views) * 100, 3) if lifetime_views > 0 else 0.0
|
|
||||||
return avg_views, momentum
|
|
||||||
except Exception:
|
except Exception:
|
||||||
return 0, 0.0
|
return {
|
||||||
|
"recent_avg_views": None,
|
||||||
|
"daily_view_velocity": None,
|
||||||
|
"momentum_30d": None,
|
||||||
|
}
|
||||||
|
|
||||||
if __name__ == "__main__":
|
video_ids = [
|
||||||
collector = YouTubeCollector()
|
item["contentDetails"]["videoId"]
|
||||||
test_res = collector.get_channel_metrics("https://www.youtube.com/channel/UCBOxSirnH1-_-xKtqX051lg")
|
for item in pl_resp.get("items", [])
|
||||||
print("Test run result:")
|
]
|
||||||
print(test_res)
|
if not video_ids:
|
||||||
|
return {
|
||||||
|
"recent_avg_views": None,
|
||||||
|
"daily_view_velocity": None,
|
||||||
|
"momentum_30d": None,
|
||||||
|
}
|
||||||
|
|
||||||
|
v_resp = (
|
||||||
|
self.youtube.videos()
|
||||||
|
.list(part="snippet,statistics", id=",".join(video_ids))
|
||||||
|
.execute()
|
||||||
|
)
|
||||||
|
|
||||||
|
views_0_to_30: List[int] = []
|
||||||
|
views_30_to_60: List[int] = []
|
||||||
|
daily_velocities: List[float] = []
|
||||||
|
|
||||||
|
for item in v_resp.get("items", []):
|
||||||
|
stats = item.get("statistics", {})
|
||||||
|
v_count = int(stats.get("viewCount", 0))
|
||||||
|
pub_str = item.get("snippet", {}).get("publishedAt")
|
||||||
|
if not pub_str:
|
||||||
|
continue
|
||||||
|
|
||||||
|
pub_date = datetime.fromisoformat(pub_str.replace("Z", "+00:00"))
|
||||||
|
days_active = max((now - pub_date).total_seconds() / 86400.0, 0.25)
|
||||||
|
|
||||||
|
daily_velocities.append(v_count / days_active)
|
||||||
|
|
||||||
|
if pub_date >= t_30d:
|
||||||
|
views_0_to_30.append(v_count)
|
||||||
|
elif t_60d <= pub_date < t_30d:
|
||||||
|
views_30_to_60.append(v_count)
|
||||||
|
|
||||||
|
avg_views = (
|
||||||
|
float(sum(views_0_to_30) / len(views_0_to_30))
|
||||||
|
if views_0_to_30
|
||||||
|
else None
|
||||||
|
)
|
||||||
|
daily_vel = (
|
||||||
|
float(sum(daily_velocities) / len(daily_velocities))
|
||||||
|
if daily_velocities
|
||||||
|
else None
|
||||||
|
)
|
||||||
|
|
||||||
|
if views_30_to_60 and views_0_to_30:
|
||||||
|
prev_sum = sum(views_30_to_60)
|
||||||
|
curr_sum = sum(views_0_to_30)
|
||||||
|
momentum = (
|
||||||
|
((curr_sum - prev_sum) / float(max(prev_sum, 1000))) * 100.0
|
||||||
|
if prev_sum > 0
|
||||||
|
else 100.0
|
||||||
|
)
|
||||||
|
elif views_0_to_30 and not views_30_to_60:
|
||||||
|
momentum = 100.0
|
||||||
|
else:
|
||||||
|
momentum = None
|
||||||
|
|
||||||
|
return {
|
||||||
|
"recent_avg_views": avg_views,
|
||||||
|
"daily_view_velocity": daily_vel,
|
||||||
|
"momentum_30d": momentum,
|
||||||
|
}
|
||||||
|
|
||||||
|
def get_channel_metrics(
|
||||||
|
self,
|
||||||
|
identifier: str,
|
||||||
|
fetch_recent_videos: bool = True,
|
||||||
|
force_refresh: bool = False,
|
||||||
|
) -> Dict[str, Any]:
|
||||||
|
if not force_refresh:
|
||||||
|
with sqlite3.connect(self.cache_db_path) as conn:
|
||||||
|
conn.row_factory = sqlite3.Row
|
||||||
|
cursor = conn.cursor()
|
||||||
|
cursor.execute(
|
||||||
|
"SELECT * FROM channel_metrics WHERE identifier = ?",
|
||||||
|
(identifier,),
|
||||||
|
)
|
||||||
|
row = cursor.fetchone()
|
||||||
|
if row and row["status_flag"] != "FAILED_LOOKUP":
|
||||||
|
return dict(row)
|
||||||
|
|
||||||
|
ch_data = self._resolve_channel(identifier)
|
||||||
|
if not ch_data:
|
||||||
|
return {
|
||||||
|
"identifier": identifier,
|
||||||
|
"channel_id": None,
|
||||||
|
"channel_title": None,
|
||||||
|
"subscriber_count": None,
|
||||||
|
"lifetime_views": None,
|
||||||
|
"video_count": None,
|
||||||
|
"recent_avg_views": None,
|
||||||
|
"daily_view_velocity": None,
|
||||||
|
"momentum_30d": None,
|
||||||
|
"status_flag": "FAILED_LOOKUP",
|
||||||
|
"data_complete": 0,
|
||||||
|
}
|
||||||
|
|
||||||
|
ch_id = ch_data["id"]
|
||||||
|
title = ch_data["snippet"]["title"]
|
||||||
|
stats = ch_data["statistics"]
|
||||||
|
uploads_pl = ch_data["contentDetails"]["relatedPlaylists"]["uploads"]
|
||||||
|
|
||||||
|
subs = int(stats.get("subscriberCount", 0))
|
||||||
|
views = int(stats.get("viewCount", 0))
|
||||||
|
vids = int(stats.get("videoCount", 0))
|
||||||
|
|
||||||
|
self._record_snapshot(ch_id, views, subs, vids)
|
||||||
|
|
||||||
|
recent_metrics = {
|
||||||
|
"recent_avg_views": None,
|
||||||
|
"daily_view_velocity": None,
|
||||||
|
"momentum_30d": None,
|
||||||
|
}
|
||||||
|
if fetch_recent_videos:
|
||||||
|
recent_metrics = self._get_recent_video_metrics(uploads_pl)
|
||||||
|
|
||||||
|
momentum = recent_metrics["momentum_30d"]
|
||||||
|
if momentum is None:
|
||||||
|
momentum = self._calculate_historical_channel_momentum(ch_id)
|
||||||
|
|
||||||
|
# Reconcile status_flag and data_complete
|
||||||
|
if momentum is not None and recent_metrics["daily_view_velocity"] is not None:
|
||||||
|
status_flag = "COMPLETE"
|
||||||
|
data_complete = 1
|
||||||
|
elif recent_metrics["daily_view_velocity"] is not None:
|
||||||
|
status_flag = "CATALOG_ACTIVE_NO_RECENT_UPLOAD"
|
||||||
|
momentum = 0.0
|
||||||
|
data_complete = 1
|
||||||
|
else:
|
||||||
|
status_flag = "INACTIVE_OR_DORMANT"
|
||||||
|
momentum = None
|
||||||
|
data_complete = 0
|
||||||
|
|
||||||
|
result = {
|
||||||
|
"identifier": identifier,
|
||||||
|
"channel_id": ch_id,
|
||||||
|
"channel_title": title,
|
||||||
|
"subscriber_count": subs,
|
||||||
|
"lifetime_views": views,
|
||||||
|
"video_count": vids,
|
||||||
|
"recent_avg_views": recent_metrics["recent_avg_views"],
|
||||||
|
"daily_view_velocity": recent_metrics["daily_view_velocity"],
|
||||||
|
"momentum_30d": momentum,
|
||||||
|
"status_flag": status_flag,
|
||||||
|
"data_complete": data_complete,
|
||||||
|
}
|
||||||
|
|
||||||
|
with sqlite3.connect(self.cache_db_path) as conn:
|
||||||
|
conn.execute(
|
||||||
|
"""
|
||||||
|
INSERT OR REPLACE INTO channel_metrics
|
||||||
|
(identifier, channel_id, channel_title, subscriber_count, lifetime_views,
|
||||||
|
video_count, recent_avg_views, daily_view_velocity, momentum_30d, status_flag, data_complete)
|
||||||
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
||||||
|
""",
|
||||||
|
(
|
||||||
|
result["identifier"],
|
||||||
|
result["channel_id"],
|
||||||
|
result["channel_title"],
|
||||||
|
result["subscriber_count"],
|
||||||
|
result["lifetime_views"],
|
||||||
|
result["video_count"],
|
||||||
|
result["recent_avg_views"],
|
||||||
|
result["daily_view_velocity"],
|
||||||
|
result["momentum_30d"],
|
||||||
|
result["status_flag"],
|
||||||
|
result["data_complete"],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
return result
|
||||||
+108
-53
@@ -1,60 +1,122 @@
|
|||||||
from typing import Dict, Any
|
"""
|
||||||
|
core/confidence_scorer.py
|
||||||
|
Computes composite authenticity confidence scores (0.0 - 1.0)
|
||||||
|
across YouTube channel titles, MusicBrainz, and Wikidata with
|
||||||
|
noise-cleaning and cross-referencing.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import re
|
||||||
|
from typing import Dict, Any, Optional
|
||||||
|
|
||||||
|
|
||||||
class ConfidenceScorer:
|
class ConfidenceScorer:
|
||||||
"""
|
"""
|
||||||
Computes a weighted authenticity and quality score across multiple data sources:
|
Evaluates multi-source identity alignment across YouTube, MusicBrainz, and Wikidata.
|
||||||
- YouTube footprint: 40%
|
|
||||||
- MusicBrainz catalog: 35%
|
|
||||||
- Wikidata entity: 25%
|
|
||||||
"""
|
"""
|
||||||
def __init__(self, yt_weight: float = 0.40, mb_weight: float = 0.35, wd_weight: float = 0.25):
|
|
||||||
self.w_yt = yt_weight
|
def __init__(
|
||||||
self.w_mb = mb_weight
|
self,
|
||||||
self.w_wd = wd_weight
|
yt_weight: float = 0.40,
|
||||||
|
mb_weight: float = 0.35,
|
||||||
|
wd_weight: float = 0.25,
|
||||||
|
):
|
||||||
|
self.yt_weight = yt_weight
|
||||||
|
self.mb_weight = mb_weight
|
||||||
|
self.wd_weight = wd_weight
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _clean_string(text: Optional[str]) -> str:
|
||||||
|
"""Strips common artist channel noise tokens and punctuation."""
|
||||||
|
if not text:
|
||||||
|
return ""
|
||||||
|
s = text.lower()
|
||||||
|
# Remove suffixes like VEVO, Official, Records, Music, Topic
|
||||||
|
noise_tokens = [
|
||||||
|
r"\bvevo\b",
|
||||||
|
r"\bofficial\b",
|
||||||
|
r"\btopic\b",
|
||||||
|
r"\bmusic\b",
|
||||||
|
r"\brecords\b",
|
||||||
|
r"\btv\b",
|
||||||
|
r"\bchannel\b",
|
||||||
|
]
|
||||||
|
for token in noise_tokens:
|
||||||
|
s = re.sub(token, "", s)
|
||||||
|
# Remove all non-alphanumeric characters
|
||||||
|
return re.sub(r"[^a-z0-9]", "", s)
|
||||||
|
|
||||||
|
def _match_youtube(self, artist_name: str, yt_title: Optional[str]) -> float:
|
||||||
|
"""Evaluates whether the YouTube channel title matches the artist."""
|
||||||
|
if not yt_title or not artist_name:
|
||||||
|
return 0.0
|
||||||
|
|
||||||
|
clean_artist = self._clean_string(artist_name)
|
||||||
|
clean_title = self._clean_string(yt_title)
|
||||||
|
|
||||||
|
if not clean_artist or not clean_title:
|
||||||
|
return 0.0
|
||||||
|
|
||||||
|
# Exact match after cleaning (e.g. 'KendrickLamarVEVO' -> 'kendricklamar' == 'kendricklamar')
|
||||||
|
if clean_artist == clean_title:
|
||||||
|
return 1.0
|
||||||
|
|
||||||
|
# Substring containment
|
||||||
|
if clean_artist in clean_title or clean_title in clean_artist:
|
||||||
|
return 0.85
|
||||||
|
|
||||||
|
return 0.0
|
||||||
|
|
||||||
def calculate_score(
|
def calculate_score(
|
||||||
self,
|
self,
|
||||||
yt_metrics: Dict[str, Any],
|
yt_metrics: Dict[str, Any],
|
||||||
mb_result: Dict[str, Any],
|
mb_result: Dict[str, Any],
|
||||||
wd_result: Dict[str, Any]
|
wd_result: Dict[str, Any],
|
||||||
) -> Dict[str, Any]:
|
) -> Dict[str, Any]:
|
||||||
# 1. YouTube sub-score (0.0 to 1.0)
|
"""
|
||||||
yt_score = 0.0
|
Computes composite confidence based on:
|
||||||
if yt_metrics.get("status") in ["live_api", "cached"]:
|
- YouTube channel name alignment (40%)
|
||||||
subs = yt_metrics.get("subscribers", 0)
|
- MusicBrainz match verification (35%)
|
||||||
views = yt_metrics.get("lifetime_views", 0)
|
- Wikidata entity validation (25%)
|
||||||
vids = yt_metrics.get("video_count", 0)
|
- Cross-referencing bonus: MBID linked directly inside Wikidata
|
||||||
|
"""
|
||||||
|
artist_name = yt_metrics.get("channel_title") or ""
|
||||||
|
# If artist name was provided separately in the identifier dict, we compare against channel_title
|
||||||
|
yt_title = yt_metrics.get("channel_title")
|
||||||
|
raw_name = yt_metrics.get("name") or yt_title
|
||||||
|
|
||||||
# Baseline 0.5 for a verified channel existence
|
# 1. YouTube Title Alignment Score
|
||||||
yt_score = 0.5
|
yt_score = self._match_youtube(raw_name, yt_title)
|
||||||
if subs >= 1000:
|
|
||||||
yt_score += 0.2
|
|
||||||
elif subs > 0:
|
|
||||||
yt_score += 0.1
|
|
||||||
|
|
||||||
if views >= 50000:
|
# 2. MusicBrainz Score
|
||||||
yt_score += 0.2
|
mb_match = mb_result.get("verified", False) if isinstance(mb_result, dict) else bool(mb_result)
|
||||||
elif views > 0:
|
mb_score = 1.0 if mb_match else 0.0
|
||||||
yt_score += 0.1
|
|
||||||
|
|
||||||
if vids >= 5:
|
# 3. Wikidata Score
|
||||||
yt_score += 0.1
|
wd_match = wd_result.get("verified", False) if isinstance(wd_result, dict) else bool(wd_result)
|
||||||
|
wd_score = 1.0 if wd_match else 0.0
|
||||||
|
|
||||||
# 2. MusicBrainz sub-score
|
# 4. Cross-Referencing Bonus: Wikidata linked to MusicBrainz ID
|
||||||
mb_score = mb_result.get("confidence", 0.0) if mb_result.get("verified") else 0.0
|
cross_ref_bonus = 0.0
|
||||||
|
if isinstance(wd_result, dict) and isinstance(mb_result, dict):
|
||||||
|
wd_mbid = wd_result.get("musicbrainz_id")
|
||||||
|
actual_mbid = mb_result.get("mbid")
|
||||||
|
if wd_mbid and actual_mbid and wd_mbid == actual_mbid:
|
||||||
|
cross_ref_bonus = 0.05 # Extra 5% confidence for direct KG linkage
|
||||||
|
|
||||||
# 3. Wikidata sub-score
|
# Composite calculation
|
||||||
wd_score = wd_result.get("confidence", 0.0) if wd_result.get("verified") else 0.0
|
composite = (
|
||||||
|
self.yt_weight * yt_score
|
||||||
|
+ self.mb_weight * mb_score
|
||||||
|
+ self.wd_weight * wd_score
|
||||||
|
+ cross_ref_bonus
|
||||||
|
)
|
||||||
|
composite = round(min(composite, 1.0), 2)
|
||||||
|
|
||||||
# Aggregated composite score
|
# Tier classification
|
||||||
composite = (yt_score * self.w_yt) + (mb_score * self.w_mb) + (wd_score * self.w_wd)
|
if composite >= 0.80:
|
||||||
composite = round(min(1.0, max(0.0, composite)), 2)
|
tier = "High Confidence"
|
||||||
|
elif composite >= 0.50:
|
||||||
# Confidence category
|
tier = "Medium Confidence"
|
||||||
if composite >= 0.75:
|
|
||||||
tier = "High"
|
|
||||||
elif composite >= 0.45:
|
|
||||||
tier = "Medium"
|
|
||||||
else:
|
else:
|
||||||
tier = "Low / Emerging"
|
tier = "Low / Emerging"
|
||||||
|
|
||||||
@@ -62,16 +124,9 @@ class ConfidenceScorer:
|
|||||||
"composite_confidence": composite,
|
"composite_confidence": composite,
|
||||||
"confidence_tier": tier,
|
"confidence_tier": tier,
|
||||||
"sub_scores": {
|
"sub_scores": {
|
||||||
"youtube": round(yt_score, 2),
|
"youtube": yt_score,
|
||||||
"musicbrainz": round(mb_score, 2),
|
"musicbrainz": mb_score,
|
||||||
"wikidata": round(wd_score, 2)
|
"wikidata": wd_score,
|
||||||
|
"cross_referenced": cross_ref_bonus > 0.0,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
scorer = ConfidenceScorer()
|
|
||||||
dummy_yt = {"status": "live_api", "subscribers": 5000, "lifetime_views": 250000, "video_count": 18}
|
|
||||||
dummy_mb = {"verified": True, "confidence": 1.0}
|
|
||||||
dummy_wd = {"verified": True, "confidence": 1.0}
|
|
||||||
print("Test Scorer Output:")
|
|
||||||
print(scorer.calculate_score(dummy_yt, dummy_mb, dummy_wd))
|
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
"""
|
||||||
|
core/health_detector.py
|
||||||
|
Identifies inactive, legacy, zombie, and hyper-viral channels
|
||||||
|
based on engagement-to-audience ratios and upload cadence.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from typing import Dict, Any
|
||||||
|
import numpy as np
|
||||||
|
import pandas as pd
|
||||||
|
|
||||||
|
|
||||||
|
class ChannelHealthDetector:
|
||||||
|
"""
|
||||||
|
Evaluates channel vitality by examining daily velocity against subscriber scale.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, zombie_sub_threshold: int = 25000, zombie_velocity_cutoff: float = 100.0):
|
||||||
|
self.zombie_sub_threshold = zombie_sub_threshold
|
||||||
|
self.zombie_velocity_cutoff = zombie_velocity_cutoff
|
||||||
|
|
||||||
|
def classify_channel(self, row: pd.Series) -> Dict[str, Any]:
|
||||||
|
subs = row.get("subscriber_count")
|
||||||
|
daily_vel = row.get("daily_view_velocity")
|
||||||
|
status_flag = row.get("status_flag", "")
|
||||||
|
|
||||||
|
# Handle unresolvable or missing data
|
||||||
|
if pd.isna(subs) or status_flag == "FAILED_LOOKUP":
|
||||||
|
return {
|
||||||
|
"health_status": "UNRESOLVED",
|
||||||
|
"is_zombie": False,
|
||||||
|
"health_notes": "Channel could not be resolved via YouTube API."
|
||||||
|
}
|
||||||
|
|
||||||
|
subs = float(subs)
|
||||||
|
daily_vel = float(daily_vel) if pd.notna(daily_vel) else 0.0
|
||||||
|
|
||||||
|
engagement_ratio = daily_vel / max(subs, 1000.0)
|
||||||
|
|
||||||
|
# 1. Zombie Channel: Large subscriber base with dead viewership
|
||||||
|
if subs >= self.zombie_sub_threshold and daily_vel < self.zombie_velocity_cutoff:
|
||||||
|
return {
|
||||||
|
"health_status": "ZOMBIE_CHANNEL",
|
||||||
|
"is_zombie": True,
|
||||||
|
"health_notes": f"High subscriber base ({int(subs):,}) with negligible viewership ({daily_vel:.1f} views/day)."
|
||||||
|
}
|
||||||
|
|
||||||
|
# 2. Dormant Catalog: No recent uploads and negligible velocity
|
||||||
|
if status_flag == "INACTIVE_OR_DORMANT" or daily_vel == 0.0:
|
||||||
|
return {
|
||||||
|
"health_status": "DORMANT_CATALOG",
|
||||||
|
"is_zombie": subs >= 10000,
|
||||||
|
"health_notes": "Zero recent uploads and stalled catalog velocity."
|
||||||
|
}
|
||||||
|
|
||||||
|
# 3. Viral Surge: Recent views exceed subscriber base
|
||||||
|
if engagement_ratio >= 1.0:
|
||||||
|
return {
|
||||||
|
"health_status": "VIRAL_SURGE",
|
||||||
|
"is_zombie": False,
|
||||||
|
"health_notes": "Audience reach is exploding beyond existing subscriber base."
|
||||||
|
}
|
||||||
|
|
||||||
|
# 4. Catalog Evergreen: Big catalog keeping views high despite no new release
|
||||||
|
if status_flag == "CATALOG_ACTIVE_NO_RECENT_UPLOAD":
|
||||||
|
return {
|
||||||
|
"health_status": "CATALOG_EVERGREEN",
|
||||||
|
"is_zombie": False,
|
||||||
|
"health_notes": "Strong passive catalog views despite release pause."
|
||||||
|
}
|
||||||
|
|
||||||
|
# 5. Healthy Active Channel
|
||||||
|
return {
|
||||||
|
"health_status": "ACTIVE_HEALTHY",
|
||||||
|
"is_zombie": False,
|
||||||
|
"health_notes": "Consistent release schedule and steady audience engagement."
|
||||||
|
}
|
||||||
|
|
||||||
|
def evaluate_dataframe(self, df: pd.DataFrame) -> pd.DataFrame:
|
||||||
|
"""Applies health classification across all artist records."""
|
||||||
|
out = df.copy()
|
||||||
|
health_results = out.apply(self.classify_channel, axis=1)
|
||||||
|
|
||||||
|
out["health_status"] = [r["health_status"] for r in health_results]
|
||||||
|
out["is_zombie"] = [r["is_zombie"] for r in health_results]
|
||||||
|
out["health_notes"] = [r["health_notes"] for r in health_results]
|
||||||
|
|
||||||
|
return out
|
||||||
+154
-70
@@ -1,83 +1,167 @@
|
|||||||
|
"""
|
||||||
|
core/ranking_engine.py
|
||||||
|
Ranks artists according to HIFFI formula stages:
|
||||||
|
- Recent Momentum (35%)
|
||||||
|
- View Velocity (30%)
|
||||||
|
- Audience Reach (20%)
|
||||||
|
- Consistency (15%)
|
||||||
|
Calculates Breakout Velocity Index (BVI, 0-100) and breakout_rank
|
||||||
|
with a 10,000 subscriber floor to prevent phantom accounts from ranking.
|
||||||
|
"""
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
from typing import Dict, Any
|
|
||||||
|
|
||||||
class RankingEngine:
|
|
||||||
|
class HIFFIRankingEngine:
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _log_scale(series: pd.Series) -> pd.Series:
|
||||||
|
valid = series.dropna()
|
||||||
|
log_vals = np.log10(1.0 + np.maximum(valid, 0.0))
|
||||||
|
s_min, s_max = log_vals.min(), log_vals.max()
|
||||||
|
if np.isclose(s_max, s_min) or pd.isna(s_min):
|
||||||
|
return pd.Series(0.0, index=series.index)
|
||||||
|
scaled = (log_vals - s_min) / (s_max - s_min + 1e-9)
|
||||||
|
return scaled.reindex(series.index)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _min_max_scale(series: pd.Series) -> pd.Series:
|
||||||
|
valid = series.dropna()
|
||||||
|
s_min, s_max = valid.min(), valid.max()
|
||||||
|
if np.isclose(s_max, s_min) or pd.isna(s_min):
|
||||||
|
return pd.Series(0.0, index=series.index)
|
||||||
|
scaled = (valid - s_min) / (s_max - s_min + 1e-9)
|
||||||
|
return scaled.reindex(series.index)
|
||||||
|
|
||||||
|
def calculate_breakout_velocity(self, df: pd.DataFrame) -> pd.Series:
|
||||||
"""
|
"""
|
||||||
Computes equitable artist rankings using Log Transformation (log1p)
|
Computes the Breakout Velocity Index (BVI, 0 - 100).
|
||||||
and Min-Max Scaling across skewed social/streaming distribution metrics.
|
Requires at least 10,000 subscribers and positive velocity to qualify.
|
||||||
"""
|
"""
|
||||||
DEFAULT_WEIGHTS = {
|
out_bvi = pd.Series(np.nan, index=df.index, dtype=float)
|
||||||
"norm_subscribers": 0.30,
|
|
||||||
"norm_lifetime_views": 0.25,
|
|
||||||
"norm_recent_avg_views": 0.25,
|
|
||||||
"norm_video_count": 0.10,
|
|
||||||
"norm_momentum_30d": 0.10
|
|
||||||
}
|
|
||||||
|
|
||||||
def __init__(self, weights: Dict[str, float] = None):
|
# Qualification Gate: Must have real baseline audience (>= 10,000 subs)
|
||||||
self.weights = weights or self.DEFAULT_WEIGHTS
|
valid_mask = (
|
||||||
|
df["subscriber_count"].notna()
|
||||||
def normalize_metrics(self, df: pd.DataFrame) -> pd.DataFrame:
|
& (df["subscriber_count"] >= 10000)
|
||||||
"""Applies log10(1 + x) and Min-Max scaling to compress power-law tails."""
|
& df["daily_view_velocity"].notna()
|
||||||
df_scored = df.copy()
|
& (df["daily_view_velocity"] > 0.0)
|
||||||
|
& (df["status_flag"] != "INACTIVE_OR_DORMANT")
|
||||||
metrics_to_transform = [
|
& (df["status_flag"] != "FAILED_LOOKUP")
|
||||||
("yt_subscribers", "norm_subscribers"),
|
|
||||||
("yt_lifetime_views", "norm_lifetime_views"),
|
|
||||||
("yt_video_count", "norm_video_count"),
|
|
||||||
("yt_recent_avg_views", "norm_recent_avg_views"),
|
|
||||||
("yt_momentum_30d", "norm_momentum_30d")
|
|
||||||
]
|
|
||||||
|
|
||||||
for raw_col, norm_col in metrics_to_transform:
|
|
||||||
if raw_col not in df_scored.columns:
|
|
||||||
df_scored[norm_col] = 0.0
|
|
||||||
continue
|
|
||||||
|
|
||||||
# Step 1: Handle NaNs and negative values, then apply Log10(1 + x)
|
|
||||||
series = pd.to_numeric(df_scored[raw_col], errors="coerce").fillna(0).clip(lower=0)
|
|
||||||
log_series = np.log10(1 + series)
|
|
||||||
|
|
||||||
min_val = log_series.min()
|
|
||||||
max_val = log_series.max()
|
|
||||||
|
|
||||||
# Step 2: Min-Max Normalization to scale [0.0, 1.0]
|
|
||||||
if max_val > min_val:
|
|
||||||
df_scored[norm_col] = (log_series - min_val) / (max_val - min_val)
|
|
||||||
else:
|
|
||||||
df_scored[norm_col] = 0.0
|
|
||||||
|
|
||||||
# Step 3: Compute weighted base score
|
|
||||||
df_scored["base_rank_score"] = sum(
|
|
||||||
df_scored[col] * weight for col, weight in self.weights.items()
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# Step 4: Multiply by verification confidence to penalize unverified or fake profiles
|
if not valid_mask.any():
|
||||||
# Artists with verified MusicBrainz/Wikidata and legitimate channels get full weight
|
return out_bvi
|
||||||
confidence = df_scored.get("composite_confidence", pd.Series(1.0, index=df_scored.index))
|
|
||||||
# Ensure a minimum floor of 0.2 so emerging artists are ranked on data, not dropped completely
|
|
||||||
confidence_multiplier = 0.2 + (0.8 * confidence)
|
|
||||||
|
|
||||||
# Step 5: Final HIFFI Score on a clean 0 to 100 scale
|
subset = df[valid_mask]
|
||||||
df_scored["hiffi_score"] = (df_scored["base_rank_score"] * confidence_multiplier * 100).round(2)
|
subs = subset["subscriber_count"].astype(float)
|
||||||
|
daily_vel = subset["daily_view_velocity"].astype(float)
|
||||||
|
momentum = subset["momentum_30d"].fillna(0.0).clip(lower=-100.0, upper=300.0)
|
||||||
|
|
||||||
# Sort and assign explicit rank ordinal
|
# 1. Audience Velocity Ratio: Views per day relative to subscriber base
|
||||||
df_scored = df_scored.sort_values(by="hiffi_score", ascending=False).reset_index(drop=True)
|
v_aud = daily_vel / np.maximum(subs, 1000.0)
|
||||||
df_scored["hiffi_rank"] = df_scored.index + 1
|
|
||||||
|
|
||||||
return df_scored
|
# 2. Scaled Momentum Factor: Map [-100, 300] to [0, 1]
|
||||||
|
m_signal = (momentum + 100.0) / 400.0
|
||||||
|
|
||||||
if __name__ == "__main__":
|
# 3. Log-compress velocity to manage power-law peaks
|
||||||
# Test script with dummy mock distribution
|
log_v_aud = np.log10(1.0 + v_aud)
|
||||||
sample_data = pd.DataFrame([
|
|
||||||
{"Name": "Global Superstar", "yt_subscribers": 15000000, "yt_lifetime_views": 8500000000, "yt_video_count": 120, "yt_recent_avg_views": 2500000, "yt_momentum_30d": 1.2, "composite_confidence": 0.95},
|
|
||||||
{"Name": "Mid-tier Rising", "yt_subscribers": 250000, "yt_lifetime_views": 45000000, "yt_video_count": 45, "yt_recent_avg_views": 180000, "yt_momentum_30d": 5.4, "composite_confidence": 0.85},
|
|
||||||
{"Name": "Emerging Talent", "yt_subscribers": 12000, "yt_lifetime_views": 850000, "yt_video_count": 14, "yt_recent_avg_views": 45000, "yt_momentum_30d": 12.8, "composite_confidence": 0.60},
|
|
||||||
{"Name": "Dormant / Inactive", "yt_subscribers": 500, "yt_lifetime_views": 15000, "yt_video_count": 3, "yt_recent_avg_views": 50, "yt_momentum_30d": 0.0, "composite_confidence": 0.35}
|
|
||||||
])
|
|
||||||
|
|
||||||
engine = RankingEngine()
|
# 4. Emergence Dampener: inverse log weight to favor emerging accounts
|
||||||
ranked = engine.normalize_metrics(sample_data)
|
w_emerge = 1.0 / (1.0 + np.log10(1.0 + np.maximum(subs, 1.0)))
|
||||||
print("Ranked Test Artists with Log & Min-Max Transformation:")
|
|
||||||
print(ranked[["hiffi_rank", "Name", "hiffi_score", "norm_subscribers", "norm_lifetime_views"]])
|
raw_bvi = (0.65 * log_v_aud + 0.35 * m_signal) * w_emerge
|
||||||
|
|
||||||
|
# Min-max scale to 0-100 across valid records
|
||||||
|
bvi_min = raw_bvi.min()
|
||||||
|
bvi_max = raw_bvi.max()
|
||||||
|
|
||||||
|
if np.isclose(bvi_max, bvi_min):
|
||||||
|
scaled_bvi = pd.Series(50.0, index=subset.index)
|
||||||
|
else:
|
||||||
|
scaled_bvi = ((raw_bvi - bvi_min) / (bvi_max - bvi_min + 1e-9)) * 100.0
|
||||||
|
|
||||||
|
out_bvi.loc[valid_mask] = scaled_bvi.round(2)
|
||||||
|
return out_bvi
|
||||||
|
|
||||||
|
def score_and_rank(
|
||||||
|
self,
|
||||||
|
df: pd.DataFrame,
|
||||||
|
min_confidence: float = 0.50,
|
||||||
|
) -> pd.DataFrame:
|
||||||
|
out = df.copy()
|
||||||
|
|
||||||
|
# Handle confidence score defensively
|
||||||
|
if "confidence_score" in out.columns:
|
||||||
|
out["confidence_score"] = pd.to_numeric(
|
||||||
|
out["confidence_score"].apply(
|
||||||
|
lambda x: x.get("composite_confidence", 0.0) if isinstance(x, dict) else x
|
||||||
|
),
|
||||||
|
errors="coerce"
|
||||||
|
).fillna(0.0)
|
||||||
|
|
||||||
|
# Compute BVI with the 10,000 sub floor
|
||||||
|
out["breakout_velocity_index"] = self.calculate_breakout_velocity(out)
|
||||||
|
|
||||||
|
# Verification & completeness gate
|
||||||
|
has_baseline = (
|
||||||
|
out["subscriber_count"].notna()
|
||||||
|
& out["lifetime_views"].notna()
|
||||||
|
& (out["status_flag"] != "FAILED_LOOKUP")
|
||||||
|
)
|
||||||
|
|
||||||
|
out["is_rank_eligible"] = (
|
||||||
|
has_baseline
|
||||||
|
& (out["confidence_score"] >= min_confidence)
|
||||||
|
& (out["status_flag"].isin(["COMPLETE", "CATALOG_ACTIVE_NO_RECENT_UPLOAD"]))
|
||||||
|
)
|
||||||
|
|
||||||
|
# 1. Recent Momentum (35%)
|
||||||
|
filled_momentum = out["momentum_30d"].fillna(0.0).clip(lower=-100.0, upper=300.0)
|
||||||
|
score_momentum = self._min_max_scale(filled_momentum)
|
||||||
|
|
||||||
|
# 2. View Velocity (30%)
|
||||||
|
filled_velocity = out["daily_view_velocity"].fillna(0.0)
|
||||||
|
score_velocity = self._log_scale(filled_velocity)
|
||||||
|
|
||||||
|
# 3. Audience Reach (20%)
|
||||||
|
log_subs = self._log_scale(out["subscriber_count"].fillna(0.0))
|
||||||
|
log_lifetime = self._log_scale(out["lifetime_views"].fillna(0.0))
|
||||||
|
score_reach = 0.60 * log_subs + 0.40 * log_lifetime
|
||||||
|
|
||||||
|
# 4. Consistency (15%)
|
||||||
|
score_consistency = self._log_scale(out["video_count"].fillna(0.0))
|
||||||
|
|
||||||
|
# Composite HIFFI Score (0 - 100)
|
||||||
|
hiffi_raw = (
|
||||||
|
0.35 * score_momentum
|
||||||
|
+ 0.30 * score_velocity
|
||||||
|
+ 0.20 * score_reach
|
||||||
|
+ 0.15 * score_consistency
|
||||||
|
) * 100.0
|
||||||
|
|
||||||
|
conf_multiplier = 0.8 + 0.2 * out["confidence_score"].clip(0.0, 1.0)
|
||||||
|
out["hiffi_score"] = (hiffi_raw * conf_multiplier).round(2)
|
||||||
|
|
||||||
|
# Primary HIFFI Rank
|
||||||
|
eligible_mask = out["is_rank_eligible"]
|
||||||
|
out["hiffi_rank"] = pd.NA
|
||||||
|
out.loc[eligible_mask, "hiffi_rank"] = (
|
||||||
|
out.loc[eligible_mask, "hiffi_score"]
|
||||||
|
.rank(ascending=False, method="min")
|
||||||
|
.astype(int)
|
||||||
|
)
|
||||||
|
|
||||||
|
# Breakout Rank (only for eligible artists that have a valid BVI)
|
||||||
|
bvi_eligible_mask = eligible_mask & out["breakout_velocity_index"].notna()
|
||||||
|
out["breakout_rank"] = pd.NA
|
||||||
|
out.loc[bvi_eligible_mask, "breakout_rank"] = (
|
||||||
|
out.loc[bvi_eligible_mask, "breakout_velocity_index"]
|
||||||
|
.rank(ascending=False, method="min")
|
||||||
|
.astype(int)
|
||||||
|
)
|
||||||
|
|
||||||
|
return out.sort_values(
|
||||||
|
by=["is_rank_eligible", "hiffi_score"], ascending=[False, False]
|
||||||
|
).reset_index(drop=True)
|
||||||
@@ -0,0 +1,551 @@
|
|||||||
|
"""
|
||||||
|
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()
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
"""
|
||||||
|
data/roster_loader.py
|
||||||
|
Loads, cleans, and validates artist rosters from CSV files.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
from typing import List, Dict, Any
|
||||||
|
import pandas as pd
|
||||||
|
|
||||||
|
|
||||||
|
class RosterLoader:
|
||||||
|
REQUIRED_COLUMNS = ["name", "identifier"]
|
||||||
|
|
||||||
|
def __init__(self, file_path: str = "data/seed_artists_500.csv"):
|
||||||
|
self.file_path = file_path
|
||||||
|
|
||||||
|
def load_roster(self) -> List[Dict[str, Any]]:
|
||||||
|
"""
|
||||||
|
Loads the CSV roster, validates columns, drops empty/duplicate rows,
|
||||||
|
and returns a clean list of artist dictionaries.
|
||||||
|
"""
|
||||||
|
if not os.path.exists(self.file_path):
|
||||||
|
raise FileNotFoundError(
|
||||||
|
f"Seed file '{self.file_path}' not found. Please verify the path."
|
||||||
|
)
|
||||||
|
|
||||||
|
df = pd.read_csv(self.file_path)
|
||||||
|
|
||||||
|
# Check for required schema columns
|
||||||
|
missing_cols = [c for c in self.REQUIRED_COLUMNS if c not in df.columns]
|
||||||
|
if missing_cols:
|
||||||
|
raise ValueError(
|
||||||
|
f"Seed CSV is missing required columns: {missing_cols}. "
|
||||||
|
f"Expected columns: {self.REQUIRED_COLUMNS}"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Clean string whitespace and drop missing entries
|
||||||
|
df["name"] = df["name"].astype(str).str.strip()
|
||||||
|
df["identifier"] = df["identifier"].astype(str).str.strip()
|
||||||
|
|
||||||
|
df = df[
|
||||||
|
(df["name"] != "")
|
||||||
|
& (df["name"] != "nan")
|
||||||
|
& (df["identifier"] != "")
|
||||||
|
& (df["identifier"] != "nan")
|
||||||
|
]
|
||||||
|
|
||||||
|
# Drop duplicates by artist name (keep first occurrence)
|
||||||
|
initial_len = len(df)
|
||||||
|
df = df.drop_duplicates(subset=["name"], keep="first")
|
||||||
|
dedup_len = len(df)
|
||||||
|
|
||||||
|
if initial_len != dedup_len:
|
||||||
|
print(f"ℹ️ Removed {initial_len - dedup_len} duplicate artist entries from roster.")
|
||||||
|
|
||||||
|
print(f"📋 Successfully loaded {len(df)} validated artists from '{self.file_path}'.")
|
||||||
|
return df.to_dict(orient="records")
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
"""
|
||||||
|
data/seed_artists_50.py
|
||||||
|
Curated 50-artist hip-hop cohort with verified official handles.
|
||||||
|
"""
|
||||||
|
|
||||||
|
ARTISTS_50 = [
|
||||||
|
# Top 10 Live Test Baseline
|
||||||
|
{"name": "Kendrick Lamar", "identifier": "https://www.youtube.com/@KendrickLamarVEVO"},
|
||||||
|
{"name": "J. Cole", "identifier": "@JColeVEVO"},
|
||||||
|
{"name": "Drake", "identifier": "@DrakeOfficial"},
|
||||||
|
{"name": "Little Simz", "identifier": "@littlesimz"},
|
||||||
|
{"name": "Denzel Curry", "identifier": "@denzelcurryph"},
|
||||||
|
{"name": "Doechii", "identifier": "@iamdoechii"},
|
||||||
|
{"name": "JID", "identifier": "@JIDsv"},
|
||||||
|
{"name": "GloRilla", "identifier": "@GloRillaOfficial"},
|
||||||
|
{"name": "Central Cee", "identifier": "@CentralCee"},
|
||||||
|
{"name": "Ice Spice", "identifier": "@IceSpicee"},
|
||||||
|
|
||||||
|
# Global Heavyweights & Icons
|
||||||
|
{"name": "Travis Scott", "identifier": "@TravisScottXX"},
|
||||||
|
{"name": "Eminem", "identifier": "@eminem"},
|
||||||
|
{"name": "Kanye West", "identifier": "@kanyewest"},
|
||||||
|
{"name": "Nicki Minaj", "identifier": "@NickiMinaj"},
|
||||||
|
{"name": "Future", "identifier": "@FutureOfficial"},
|
||||||
|
{"name": "Tyler, The Creator", "identifier": "@tylerthecreator"},
|
||||||
|
{"name": "21 Savage", "identifier": "@21savage"},
|
||||||
|
{"name": "Post Malone", "identifier": "@PostMalone"},
|
||||||
|
{"name": "Lil Baby", "identifier": "@LilBaby"},
|
||||||
|
{"name": "Lil Wayne", "identifier": "@LilWayne"},
|
||||||
|
|
||||||
|
# Contemporary Chart-Toppers & Touring Titans
|
||||||
|
{"name": "Megan Thee Stallion", "identifier": "@megantheestallion"},
|
||||||
|
{"name": "Playboi Carti", "identifier": "@PlayboiCarti"},
|
||||||
|
{"name": "Jack Harlow", "identifier": "@JackHarlow"},
|
||||||
|
{"name": "Gunna", "identifier": "@GunnaOfficial"}, # Fixed: @GunnaOfficial
|
||||||
|
{"name": "Lil Uzi Vert", "identifier": "@LILUZIVERT"},
|
||||||
|
{"name": "A$AP Rocky", "identifier": "@asvpxrocky"},
|
||||||
|
{"name": "Cardi B", "identifier": "@iamcardib"},
|
||||||
|
{"name": "Young Thug", "identifier": "@youngthugonline"},
|
||||||
|
{"name": "Roddy Ricch", "identifier": "@RoddyRicch"},
|
||||||
|
{"name": "DaBaby", "identifier": "@DaBabyOfficial"},
|
||||||
|
|
||||||
|
# Emerging & High-Velocity Breakout Acts
|
||||||
|
{"name": "Sexyy Red", "identifier": "@SexyyRed"},
|
||||||
|
{"name": "Ken Carson", "identifier": "@kencarson"},
|
||||||
|
{"name": "Destroy Lonely", "identifier": "@destroylonely"},
|
||||||
|
{"name": "Teezo Touchdown", "identifier": "@TeezoTouchdown"},
|
||||||
|
{"name": "Latto", "identifier": "@Latto777"},
|
||||||
|
{"name": "Flo Milli", "identifier": "@flomilli"},
|
||||||
|
{"name": "Baby Keem", "identifier": "@babykeem"}, # Fixed: @babykeem
|
||||||
|
{"name": "Yeat", "identifier": "@yeat"},
|
||||||
|
{"name": "Don Toliver", "identifier": "@DonToliver"},
|
||||||
|
{"name": "Coi Leray", "identifier": "@CoiLeray"},
|
||||||
|
|
||||||
|
# Critically Acclaimed & Lyricist Core
|
||||||
|
{"name": "Freddie Gibbs", "identifier": "@freddiegibbs"},
|
||||||
|
{"name": "Joey Bada$$", "identifier": "@joeybadass"},
|
||||||
|
{"name": "Danny Brown", "identifier": "@xdannyxbrownxVEVO"}, # Fixed: @xdannyxbrownxVEVO
|
||||||
|
{"name": "Pusha T", "identifier": "@pushat"},
|
||||||
|
{"name": "Vince Staples", "identifier": "@vincestaples"},
|
||||||
|
{"name": "Saba", "identifier": "@sabapivot"},
|
||||||
|
{"name": "Smino", "identifier": "@Sminoofcl"},
|
||||||
|
{"name": "Isaiah Rashad", "identifier": "@IsaiahRashad"},
|
||||||
|
{"name": "Westside Gunn", "identifier": "@GriseldaRecords"},
|
||||||
|
{"name": "EARTHGANG", "identifier": "https://www.youtube.com/@EarthgangOfficial"}, # Fixed: EarthgangOfficial
|
||||||
|
]
|
||||||
@@ -0,0 +1,501 @@
|
|||||||
|
name,identifier
|
||||||
|
Kendrick Lamar,https://www.youtube.com/@KendrickLamarVEVO
|
||||||
|
J. Cole,@JColeVEVO
|
||||||
|
Drake,@DrakeOfficial
|
||||||
|
Little Simz,@littlesimz
|
||||||
|
Denzel Curry,@denzelcurryph
|
||||||
|
Doechii,@iamdoechii
|
||||||
|
JID,@JIDsv
|
||||||
|
GloRilla,@GloRillaOfficial
|
||||||
|
Central Cee,@CentralCee
|
||||||
|
Ice Spice,@IceSpicee
|
||||||
|
Travis Scott,@TravisScottXX
|
||||||
|
Eminem,@eminem
|
||||||
|
Kanye West,@kanyewest
|
||||||
|
Nicki Minaj,@NickiMinaj
|
||||||
|
Future,@FutureOfficial
|
||||||
|
"Tyler, The Creator",@tylerthecreator
|
||||||
|
21 Savage,@21savage
|
||||||
|
Post Malone,@PostMalone
|
||||||
|
Lil Baby,@LilBaby
|
||||||
|
Lil Wayne,@LilWayne
|
||||||
|
Megan Thee Stallion,@megantheestallion
|
||||||
|
Playboi Carti,@PlayboiCarti
|
||||||
|
Jack Harlow,@JackHarlow
|
||||||
|
Gunna,@GunnaOfficial
|
||||||
|
Lil Uzi Vert,@LILUZIVERT
|
||||||
|
A$AP Rocky,@asvpxrocky
|
||||||
|
Cardi B,@iamcardib
|
||||||
|
Young Thug,@youngthugonline
|
||||||
|
Roddy Ricch,@RoddyRicch
|
||||||
|
DaBaby,@DaBabyOfficial
|
||||||
|
Sexyy Red,@SexyyRed
|
||||||
|
Ken Carson,@kencarson
|
||||||
|
Destroy Lonely,@destroylonely
|
||||||
|
Teezo Touchdown,@TeezoTouchdown
|
||||||
|
Latto,@Latto777
|
||||||
|
Flo Milli,@flomilli
|
||||||
|
Baby Keem,@babykeem
|
||||||
|
Yeat,@yeat
|
||||||
|
Don Toliver,@DonToliver
|
||||||
|
Coi Leray,@CoiLeray
|
||||||
|
Freddie Gibbs,@freddiegibbs
|
||||||
|
Joey Bada$$,@joeybadass
|
||||||
|
Danny Brown,@xdannyxbrownxVEVO
|
||||||
|
Pusha T,@pushat
|
||||||
|
Vince Staples,@vincestaples
|
||||||
|
Saba,@sabapivot
|
||||||
|
Smino,@Sminoofcl
|
||||||
|
Isaiah Rashad,@IsaiahRashad
|
||||||
|
Westside Gunn,@GriseldaRecords
|
||||||
|
EARTHGANG,https://www.youtube.com/@EarthgangOfficial
|
||||||
|
Nas,@nas
|
||||||
|
Jay-Z,@JayZ
|
||||||
|
Snoop Dogg,@SnoopDogg
|
||||||
|
50 Cent,@50Cent
|
||||||
|
The Notorious B.I.G.,@notoriousbig
|
||||||
|
2Pac,@2pac
|
||||||
|
Dr. Dre,@drdre
|
||||||
|
Ice Cube,@IceCube
|
||||||
|
Busta Rhymes,@BustaRhymes
|
||||||
|
Method Man,@MethodMan
|
||||||
|
Redman,@redman
|
||||||
|
Wu-Tang Clan,@WuTangClan
|
||||||
|
Outkast,@outkast
|
||||||
|
DMX,@dmx
|
||||||
|
Ludacris,@Ludacris
|
||||||
|
T.I.,@TI
|
||||||
|
Jeezy,@jeezy
|
||||||
|
Gucci Mane,@guccimane
|
||||||
|
Rick Ross,@RickRoss
|
||||||
|
Common,@common
|
||||||
|
Mos Def,@yasiinbey
|
||||||
|
Talib Kweli,@TalibKweli
|
||||||
|
Lupe Fiasco,@LupeFiasco
|
||||||
|
Ghostface Killah,@GhostfaceKillah
|
||||||
|
Raekwon,@Raekwon
|
||||||
|
GZA,@TheGeniusGZA
|
||||||
|
Cypress Hill,@cypresshill
|
||||||
|
Three 6 Mafia,@three6mafia
|
||||||
|
Fat Joe,@fatjoe
|
||||||
|
Big Pun,@BigPun
|
||||||
|
Scarface,@BrotherMob
|
||||||
|
E-40,@e40
|
||||||
|
Too $hort,@tooshort
|
||||||
|
Bun B,@BunBofUGK
|
||||||
|
UGK,@UGKfilmz
|
||||||
|
Twista,@twista
|
||||||
|
Cam'ron,@mr_camron
|
||||||
|
Jadakiss,@RealJadakiss
|
||||||
|
Styles P,@stylesp
|
||||||
|
Fabolous,@myfabolouslife
|
||||||
|
The Game,@thegame
|
||||||
|
Ja Rule,@JaRule
|
||||||
|
Nelly,@Nelly
|
||||||
|
Chingy,@Chingy
|
||||||
|
Bow Wow,@bowwow
|
||||||
|
Soulja Boy,@SouljaBoyTellem
|
||||||
|
Waka Flocka Flame,@WakaFlockaFlame
|
||||||
|
Chief Keef,@ChiefKeef
|
||||||
|
French Montana,@FrenchMontana
|
||||||
|
Wiz Khalifa,@wizkhalifa
|
||||||
|
Big L,@BigL
|
||||||
|
Kool G Rap,@KoolGRap
|
||||||
|
Rakim,@TheGodRakim
|
||||||
|
Big Daddy Kane,@BigDaddyKane
|
||||||
|
Slick Rick,@SlickRickTheRuler
|
||||||
|
KRS-One,@KRSOne
|
||||||
|
LL Cool J,@LLCoolJ
|
||||||
|
Public Enemy,@PublicEnemy
|
||||||
|
De La Soul,@WeAreDeLaSoul
|
||||||
|
A Tribe Called Quest,@ATCQ
|
||||||
|
The Roots,@theroots
|
||||||
|
Black Thought,@BlackThought
|
||||||
|
Beanie Sigel,@BeanieSigel
|
||||||
|
Freeway,@PhillyFreeway
|
||||||
|
Cassidy,@CASSIDY_LARSINY
|
||||||
|
Lloyd Banks,@LloydBanks
|
||||||
|
Tony Yayo,@TonyYayo
|
||||||
|
Young Buck,@buckmentality
|
||||||
|
Mobb Deep,@mobbdeep
|
||||||
|
Prodigy,@ProdigyOfMobbDeep
|
||||||
|
Havoc,@HavocOfMobbDeep
|
||||||
|
AZ,@QuietMoneyAZ
|
||||||
|
Cormega,@Cormega
|
||||||
|
Inspectah Deck,@InspectahDeck
|
||||||
|
Masta Killa,@MastaKilla
|
||||||
|
U-God,@UGod
|
||||||
|
Killah Priest,@KillahPriest
|
||||||
|
Krayzie Bone,@KrayzieBone
|
||||||
|
Layzie Bone,@LayzieBone
|
||||||
|
Bizzy Bone,@BizzyBone
|
||||||
|
Bone Thugs-N-Harmony,@BoneThugsNHarmony
|
||||||
|
Juvenile,@Juvenile
|
||||||
|
Mannie Fresh,@MannieFresh
|
||||||
|
B.G.,@BGMtH
|
||||||
|
Mystikal,@Mystikal
|
||||||
|
Pastor Troy,@PastorTroy
|
||||||
|
Petey Pablo,@PeteyPablo
|
||||||
|
David Banner,@DavidBanner
|
||||||
|
Paul Wall,@PaulWall
|
||||||
|
Chamillionaire,@chamillionaire
|
||||||
|
Slim Thug,@slimthug
|
||||||
|
Mike Jones,@MikeJones
|
||||||
|
Z-Ro,@TheRealZRo
|
||||||
|
Trae tha Truth,@traethatruth
|
||||||
|
Big Pokey,@BigPokey
|
||||||
|
Lil Keke,@DonKeKe
|
||||||
|
Devin the Dude,@DevinTheDude
|
||||||
|
Project Pat,@ProjectPat
|
||||||
|
Juicy J,@juicyj
|
||||||
|
DJ Paul,@DJPaulKOM
|
||||||
|
Mac Miller,@MacMiller
|
||||||
|
Big Sean,@bigsean
|
||||||
|
Wale,@wale
|
||||||
|
Meek Mill,@meekmill
|
||||||
|
ASAP Ferg,@asapferg
|
||||||
|
Schoolboy Q,@ScHoolboyQ
|
||||||
|
Ab-Soul,@AbSoul
|
||||||
|
Jay Rock,@JayRock
|
||||||
|
YG,@4hunnid
|
||||||
|
Ty Dolla $ign,@tydollasign
|
||||||
|
Kid Cudi,@KidCudi
|
||||||
|
Logic,@Logic
|
||||||
|
G-Eazy,@GEazy
|
||||||
|
Machine Gun Kelly,@mgk
|
||||||
|
Russ,@russ
|
||||||
|
Joyner Lucas,@JoynerLucas
|
||||||
|
NF,@nfrealmusic
|
||||||
|
Hopsin,@Hopsintv
|
||||||
|
Tech N9ne,@StrangeMusicInc
|
||||||
|
Macklemore,@Macklemore
|
||||||
|
B.o.B,@bob
|
||||||
|
Travis Porter,@travisporter
|
||||||
|
Migos,@MigosAtl
|
||||||
|
Quavo,@QuavoHuncho
|
||||||
|
Offset,@OffsetYRN
|
||||||
|
Takeoff,@TakeoffYRN
|
||||||
|
Rae Sremmurd,@RaeSremmurd
|
||||||
|
Swae Lee,@SwaeLee
|
||||||
|
Slim Jxmmi,@SlimJxmmi
|
||||||
|
Rich Homie Quan,@RichHomieQuan
|
||||||
|
Young Dolph,@youngdolph
|
||||||
|
Key Glock,@KeyGlock
|
||||||
|
Moneybagg Yo,@MoneyBaggYo
|
||||||
|
Yo Gotti,@yogottivideos
|
||||||
|
Blac Youngsta,@BlacYoungsta
|
||||||
|
Kevin Gates,@kevingates
|
||||||
|
Boosie Badazz,@boosiebadazz
|
||||||
|
Kodak Black,@KodakBlack
|
||||||
|
NBA YoungBoy,@nba_youngboy
|
||||||
|
Lil Durk,@lildurk
|
||||||
|
King Von,@KingVon
|
||||||
|
Polo G,@PoloG
|
||||||
|
Lil Tjay,@liltjay
|
||||||
|
A Boogie wit da Hoodie,@ABoogieWitDaHoodie
|
||||||
|
Fivio Foreign,@FivioForeign
|
||||||
|
Pop Smoke,@PopSmoke
|
||||||
|
Bobby Shmurda,@BobbyShmurda
|
||||||
|
Rowdy Rebel,@RowdyRebel
|
||||||
|
6ix9ine,@Tekashi69
|
||||||
|
Trippie Redd,@TrippieRedd
|
||||||
|
Juice WRLD,@JuiceWRLD
|
||||||
|
XXXTENTACION,@xxxtentacion
|
||||||
|
Ski Mask the Slump God,@SkiMaskTheSlumpGod
|
||||||
|
Cordae,@cordae
|
||||||
|
IDK,@IDK
|
||||||
|
Aminé,@heyamine
|
||||||
|
GoldLink,@goldlink
|
||||||
|
Duckwrth,@DUCKWRTH
|
||||||
|
Buddy,@Buddy
|
||||||
|
Deante' Hitchcock,@DeanteHitchcock
|
||||||
|
Reason,@reasontde
|
||||||
|
Ray Vaughn,@rayvaughn
|
||||||
|
SiR,@inglewoodSiR
|
||||||
|
Bas,@fiendbassy
|
||||||
|
Cozz,@cody_macc
|
||||||
|
Omen,@omen
|
||||||
|
Lute,@lute_west9
|
||||||
|
Mick Jenkins,@mickjenkins
|
||||||
|
Noname,@noname
|
||||||
|
Rapsody,@rapsody
|
||||||
|
Che Noir,@CheNoir
|
||||||
|
Sa-Roc,@sarocthemc
|
||||||
|
Armani Caesar,@ArmaniCaesar
|
||||||
|
Rome Streetz,@RomeStreetz
|
||||||
|
Conway the Machine,@WHOISCONWAY
|
||||||
|
Benny The Butcher,@BennyTheButcher
|
||||||
|
Boldy James,@BoldyJames
|
||||||
|
Roc Marciano,@rocmarciano
|
||||||
|
Action Bronson,@ActionBronson
|
||||||
|
Earl Sweatshirt,@earlsweatshirt
|
||||||
|
Dom Genesis,@DomsGenesis
|
||||||
|
Hodgy Beats,@hodgy
|
||||||
|
Mike G,@MikeG
|
||||||
|
Maxo Kream,@MaxoKream
|
||||||
|
Big K.R.I.T.,@BigKRIT
|
||||||
|
Curren$y,@currensy
|
||||||
|
Smoke DZA,@SmokeDZA
|
||||||
|
Le$,@steakxshrimp
|
||||||
|
Larry June,@LarryJuneTFM
|
||||||
|
Jay Worthy,@JayWorthy
|
||||||
|
G Perico,@GPerico
|
||||||
|
Blxst,@blxst
|
||||||
|
Bino Rideaux,@binorideaux
|
||||||
|
Kalan.FrFr,@kalanfrfr
|
||||||
|
100k Track,@100kTrack
|
||||||
|
Yungeen Ace,@YungeenAce
|
||||||
|
Foolio,@JulioFoolio
|
||||||
|
EST Gee,@ESTGee
|
||||||
|
42 Dugg,@42Dugg
|
||||||
|
Icewear Vezzo,@icewearvezzo
|
||||||
|
Babyface Ray,@BabyfaceRay
|
||||||
|
Peezy,@PeezyOfficial
|
||||||
|
Veeze,@veeze__
|
||||||
|
Rio Da Yung OG,@RioDaYungOG
|
||||||
|
RMC Mike,@RmcMike
|
||||||
|
YN Jay,@YNJayCoochieMan
|
||||||
|
Bfb Da Packman,@BfbDaPackman
|
||||||
|
Sada Baby,@SadaBaby
|
||||||
|
Tee Grizzley,@TeeGrizzley
|
||||||
|
Payroll Giovanni,@payrollgiovanni
|
||||||
|
G Herbo,@GHerbo
|
||||||
|
Fredo Santana,@FredoSantana
|
||||||
|
Lil Reese,@LilReese
|
||||||
|
Vic Mensa,@VicMensa
|
||||||
|
Chance the Rapper,@chancetherapper
|
||||||
|
Famous Dex,@famousdex
|
||||||
|
Rich the Kid,@RichTheKid
|
||||||
|
Jay Critch,@JayCritch
|
||||||
|
MadeinTYO,@MadeinTYO
|
||||||
|
Lil Yachty,@lilyachty
|
||||||
|
Lil Mosey,@LilMosey
|
||||||
|
Lil Tecca,@LilTecca
|
||||||
|
SoFaygo,@imsofaygo
|
||||||
|
SSGKobe,@ssgkobe
|
||||||
|
Kaash Paige,@KaashPaige
|
||||||
|
Bia,@PrincessBia
|
||||||
|
Saweetie,@saweetie
|
||||||
|
City Girls,@CityGirls
|
||||||
|
JT,@TheGirlJT
|
||||||
|
Yung Miami,@YungMiami
|
||||||
|
Kash Doll,@kashdoll
|
||||||
|
Dej Loaf,@dejloaf
|
||||||
|
Dreezy,@dreezy
|
||||||
|
Tink,@OfficialTink
|
||||||
|
Kamaiyah,@kamaiyah
|
||||||
|
Chika,@chika
|
||||||
|
Tierra Whack,@TierraWhack
|
||||||
|
Rico Nasty,@RicoNasty
|
||||||
|
Princess Nokia,@PrincessNokia
|
||||||
|
Bhad Bhabie,@BhadBhabie
|
||||||
|
Kreayshawn,@kreayshawn
|
||||||
|
Iggy Azalea,@iggyazalea
|
||||||
|
Azealia Banks,@AzealiaBanks
|
||||||
|
Angel Haze,@AngelHaze
|
||||||
|
Brooke Candy,@BrookeCandy
|
||||||
|
Stormzy,@StormzyTV
|
||||||
|
Dave,@Santandave
|
||||||
|
Skepta,@skeptaofficial
|
||||||
|
Jme,@JmeBBK
|
||||||
|
Kano,@TheKano
|
||||||
|
Dizzee Rascal,@dizzeerascal
|
||||||
|
AJ Tracey,@ajtracey
|
||||||
|
Aitch,@AitchOfficial
|
||||||
|
Headie One,@HeadieOne
|
||||||
|
Digga D,@DiggaD
|
||||||
|
K-Trap,@ktrap_official
|
||||||
|
Unknown T,@UnknownT
|
||||||
|
Russ Millions,@RussMillions
|
||||||
|
Tion Wayne,@TionWayne
|
||||||
|
Nemzzz,@Nemzzz
|
||||||
|
Knucks,@Knucks
|
||||||
|
Loyle Carner,@LoyleCarner
|
||||||
|
Slowthai,@slowthai
|
||||||
|
Pa Salieu,@PaSalieu
|
||||||
|
Ghetts,@Ghetts
|
||||||
|
D-Block Europe,@DBlockEurope
|
||||||
|
Young Adz,@YoungAdz
|
||||||
|
Dirtbike LB,@DirtbikeLB
|
||||||
|
M Huncho,@mhuncho
|
||||||
|
Nafe Smallz,@NafeSmallz
|
||||||
|
Fredo,@Fredo
|
||||||
|
Nines,@Nines
|
||||||
|
Potter Payper,@PotterPayper
|
||||||
|
Rimzee,@Rimzee
|
||||||
|
MoStack,@MoStack
|
||||||
|
Mist,@mistmusic
|
||||||
|
Bugzy Malone,@bugzymalone
|
||||||
|
Chip,@OfficialChip
|
||||||
|
Wretch 32,@Wretch32
|
||||||
|
Giggs,@GiggsOfficial
|
||||||
|
Stefflon Don,@stefflondon
|
||||||
|
Ms Banks,@MsBanks
|
||||||
|
Ivorian Doll,@IvorianDoll
|
||||||
|
Darkoo,@Darkoo
|
||||||
|
Homixide Gang,@HomixideGang
|
||||||
|
Osamason,@osamason
|
||||||
|
Nettspend,@nettspend
|
||||||
|
Rich Amiri,@RichAmiri
|
||||||
|
Autumn!,@twinuzis
|
||||||
|
Summrs,@summrs
|
||||||
|
Kankan,@kankan
|
||||||
|
Iayze,@iayze
|
||||||
|
BabyTron,@BabyTron
|
||||||
|
StanWill,@StanWill
|
||||||
|
TrDee,@TrDee
|
||||||
|
Certified Trapper,@certifiedtrapper
|
||||||
|
BLP Kosher,@blpkosher
|
||||||
|
Luh Tyler,@luhtyler
|
||||||
|
Real Boston Richey,@RealBostonRichey
|
||||||
|
Hunxho,@Hunxho
|
||||||
|
YTB Fatt,@ytbfatt
|
||||||
|
Rob49,@Rob49
|
||||||
|
Skilla Baby,@SkillaBaby
|
||||||
|
BigXthaPlug,@BigXthaPlug
|
||||||
|
That Mexican OT,@ThatMexicanOT
|
||||||
|
Drodi,@Drodi
|
||||||
|
BashfortheWorld,@bashfortheworld
|
||||||
|
Southside,@Southside808MAFIA
|
||||||
|
Metro Boomin,@MetroBoomin
|
||||||
|
Pierre Bourne,@PierreBourne
|
||||||
|
Murda Beatz,@MurdaBeatz
|
||||||
|
Tay Keith,@TayKeith
|
||||||
|
Wheezy,@WheezyOuttaHere
|
||||||
|
Boi-1da,@boi1da
|
||||||
|
Hit-Boy,@HitBoy
|
||||||
|
The Alchemist,@alchemist
|
||||||
|
Madlib,@MadlibInvazion
|
||||||
|
Kaytranada,@KAYTRANADA
|
||||||
|
Flying Lotus,@flyinglotus
|
||||||
|
Kenny Beats,@kennybeats
|
||||||
|
Monte Booker,@montebooker
|
||||||
|
Sango,@sango
|
||||||
|
Masego,@Masego
|
||||||
|
JPEGMAFIA,@JPEGMAFIA
|
||||||
|
Paris Texas,@paristexas
|
||||||
|
AG Club,@agclub
|
||||||
|
Spillage Village,@spillagevillage
|
||||||
|
Coast Contra,@CoastContra
|
||||||
|
Grip,@Grip_SS
|
||||||
|
Westside Boogie,@westsideboogie
|
||||||
|
Domani,@Domani
|
||||||
|
Token,@tokenhiphop
|
||||||
|
Dax,@dax
|
||||||
|
Tom MacDonald,@AllHailTomMacDonald
|
||||||
|
Cal Scruby,@CalScruby
|
||||||
|
Chris Webby,@ChrisWebby
|
||||||
|
Merkules,@Merkules
|
||||||
|
Snak The Ripper,@snaktheripper
|
||||||
|
Classified,@classified
|
||||||
|
Belly,@Belly
|
||||||
|
Tory Lanez,@torylanez
|
||||||
|
Roy Woods,@RoyWoods
|
||||||
|
Majid Jordan,@MajidJordan
|
||||||
|
dvsn,@dvsndvsn
|
||||||
|
K-os,@kosinfluence
|
||||||
|
Kardinal Offishall,@kardinaloffishall
|
||||||
|
Night Lovell,@NightLovell
|
||||||
|
Lil Skies,@lilskies
|
||||||
|
Landon Cube,@landoncube
|
||||||
|
Lil Xan,@lilxan
|
||||||
|
Smokepurpp,@smokepurpp
|
||||||
|
Lil Pump,@lilpump
|
||||||
|
Pouya,@pouya
|
||||||
|
Fat Nick,@fatnick
|
||||||
|
Ghostemane,@ghostemane
|
||||||
|
$uicideboy$,@Suicideboys
|
||||||
|
BONES,@TeamSESH
|
||||||
|
Xavier Wulf,@TheHollowSquad
|
||||||
|
Chris Travis,@WaterBoyz
|
||||||
|
Robb Bank$,@RobbBanks
|
||||||
|
SpaceGhostPurrp,@SpaceGhostPurrp
|
||||||
|
Yung Lean,@yunglean
|
||||||
|
Bladee,@bladee
|
||||||
|
Ecco2k,@ecco2k
|
||||||
|
Thaiboy Digital,@thaiboydigital
|
||||||
|
Tommy Cash,@TOMMYCASH
|
||||||
|
Little Big,@littlebig
|
||||||
|
BBNO$,@bbnomula
|
||||||
|
Yung Gravy,@yunggravy
|
||||||
|
Shotgun Willy,@ShotgunWilly
|
||||||
|
Oliver Tree,@OliverTree
|
||||||
|
Ashnikko,@ashnikko
|
||||||
|
Doja Cat,@dojacat
|
||||||
|
BKtherula,@bktherula
|
||||||
|
TiaCorine,@TiaCorine
|
||||||
|
Monaleo,@TheMonaleo
|
||||||
|
Maiya The Don,@MaiyaTheDon
|
||||||
|
ScarLip,@ScarLip
|
||||||
|
Muni Long,@MuniLong
|
||||||
|
Victoria Monét,@VictoriaMonet
|
||||||
|
Chlöe,@chloe
|
||||||
|
Halle,@halle
|
||||||
|
Coco Jones,@cocojones
|
||||||
|
Summer Walker,@SummerWalker
|
||||||
|
Kehlani,@Kehlani
|
||||||
|
Jhené Aiko,@JheneAiko
|
||||||
|
Tinashe,@Tinashe
|
||||||
|
SZA,@sza
|
||||||
|
Snoh Aalegra,@SnohAalegra
|
||||||
|
Brent Faiyaz,@brentfaiyaz
|
||||||
|
Giveon,@Giveon
|
||||||
|
Lucky Daye,@LuckyDaye
|
||||||
|
Leon Thomas,@LeonThomas
|
||||||
|
Arin Ray,@ArinRay
|
||||||
|
BJ The Chicago Kid,@bjthechicagokid
|
||||||
|
Anthony Hamilton,@AnthonyHamilton
|
||||||
|
Anderson .Paak,@andersonpaak
|
||||||
|
NxWorries,@NxWorries
|
||||||
|
Knxwledge,@knxwledge
|
||||||
|
Quelle Chris,@quellechris
|
||||||
|
Open Mike Eagle,@OpenMikeEagle
|
||||||
|
billy woods,@backwoodzstudioz
|
||||||
|
Elucid,@elucid
|
||||||
|
Armand Hammer,@ArmandHammer
|
||||||
|
Moor Mother,@MoorMother
|
||||||
|
Pink Siifu,@pinksiifu
|
||||||
|
Fly Anakin,@flyanakin
|
||||||
|
Lord Apex,@LordApex
|
||||||
|
Cakes da Killa,@cakesdakilla
|
||||||
|
Mykki Blanco,@mykkiblanco
|
||||||
|
Zebra Katz,@zebrakatz
|
||||||
|
Leikeli47,@Leikeli47
|
||||||
|
Junglepussy,@junglepussy
|
||||||
|
Oshun,@oshunnyc
|
||||||
|
The Underachievers,@TheUnderachievers
|
||||||
|
Flatbush Zombies,@TheGloriousDead
|
||||||
|
Meechy Darko,@MeechyDarko
|
||||||
|
Zombie Juice,@ZombieJuice
|
||||||
|
Erick the Architect,@erickarchitect
|
||||||
|
Pro Era,@PROERA
|
||||||
|
Kirk Knight,@kirkknight
|
||||||
|
Nyck Caution,@nyckcaution
|
||||||
|
CJ Fly,@flyhighteam
|
||||||
|
Bishop Nehru,@BishopNehru
|
||||||
|
Dillon Cooper,@TheDillonCooper
|
||||||
|
Your Old Droog,@YourOldDroog
|
||||||
|
Wiki,@wikset
|
||||||
|
Ratking,@ratkingnyc
|
||||||
|
Hak,@haknyc
|
||||||
|
Sporting Life,@sportinglife
|
||||||
|
Despot,@despotnyc
|
||||||
|
Heems,@himanshusuri
|
||||||
|
Kool A.D.,@koolad
|
||||||
|
Das Racist,@dasracist
|
||||||
|
Chaz French,@chazfrench
|
||||||
|
Phil Ade,@philade
|
||||||
|
Fat Trel,@FatTrel
|
||||||
|
Shy Glizzy,@ShyGlizzy
|
||||||
|
NoCap,@NoCap
|
||||||
|
Rylo Rodriguez,@RyloRodriguez
|
||||||
|
LiBand,@LiBand
|
||||||
|
Yung Manny,@yungmanny
|
||||||
|
Xanman,@xanman
|
||||||
|
Q Da Fool,@qdafool
|
||||||
|
Goonew,@goonew
|
||||||
|
Lil Dude,@lildude
|
||||||
|
Big Flame,@bigflame
|
||||||
|
BabySmoove,@babysmoove
|
||||||
|
KrispyLife Kidd,@krispylife_kidd
|
||||||
|
Kasher Quon,@kasherquon
|
||||||
|
+501
-11
@@ -1,11 +1,501 @@
|
|||||||
UID,Name,Youtube,Instagram,Location,yt_subscribers,yt_lifetime_views,yt_video_count,yt_recent_avg_views,yt_momentum_30d,yt_status,mb_verified,mb_id,wd_verified,wd_id,composite_confidence,confidence_tier,norm_subscribers,norm_lifetime_views,norm_video_count,norm_recent_avg_views,norm_momentum_30d,base_rank_score,hiffi_score,hiffi_rank
|
name,identifier,channel_id,channel_title,subscriber_count,lifetime_views,video_count,recent_avg_views,daily_view_velocity,momentum_30d,status_flag,data_complete,updated_at,confidence_score,confidence_tier,mb_verified,wd_verified,cross_referenced,breakout_velocity_index,is_rank_eligible,hiffi_score,hiffi_rank,breakout_rank,health_status,is_zombie,health_notes
|
||||||
9f76913bf5a8996b14c37563fdff9751,$ILKMONEY,https://www.youtube.com/channel/UCA1PZKy6XNQ-TsXWbQW2vyw,https://instagram.com/silkbooty,,46900,14878731,15,0,0.0,cached,True,309da629-06af-4453-85f4-9c1868a2fbbc,True,Q136428352,0.97,High,0.8776752758308687,0.9062496400532577,0.6717951158281678,0.0,0.0,0.5570445043453918,54.37,1
|
Megan Thee Stallion,@megantheestallion,UCKrdjiuS66yXOdEZ_cOD_TA,Megan Thee Stallion,7490000.0,4150615406.0,383.0,2105527.25,59535.32970320314,7086.099829351537,COMPLETE,1,2026-10-22 10:35:50,1.0,High Confidence,True,True,False,82.56,True,92.71,1,13,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
4f9cc677d46d75f9709608f0668442fe,$hyfromdatre,https://www.youtube.com/channel/UCHRl8OQoAAUghnEJmsoiP5A,https://instagram.com/shyfromdatre,,210000,82140745,33,0,0.0,cached,True,db59266e-cd49-4f8c-98d2-e4b630251135,False,,0.75,High,1.0,1.0,0.8544331721773178,0.0,0.0,0.6354433172177318,50.84,2
|
Latto,@Latto777,UCRQ6wJbGwbF9Wmvp5HfT7Pg,Latto,2820000.0,1717248605.0,593.0,190555.4,12889.591254494146,660.4087854554741,COMPLETE,1,2026-10-22 10:36:57,1.0,High Confidence,True,True,False,87.05,True,88.73,2,6,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
fb669f1ff32d3a7bbdef274872cbe0fd,+/-,https://www.youtube.com/channel/UCBOxSirnH1-_-xKtqX051lg,https://instagram.com/plusminusnyc,New York,739,164806,31,3477,0.0,cached,False,,False,Q260387,0.36,Low / Emerging,0.539104168005253,0.6591619178536015,0.8397438947852097,1.0,0.0,0.6604961193434973,32.23,3
|
Kodak Black,@KodakBlack,UChEYVadfkMCfrKUi6qr3I1Q,Kodak Black,9960000.0,8667475213.0,711.0,1944393.0,5839.291781123619,362.27051624038916,COMPLETE,1,2026-10-22 11:00:33,1.0,High Confidence,True,True,False,80.8,True,88.44,3,14,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
0f8e17a71adc4b60b61f9bf8f09605fb,$hoey,https://www.youtube.com/channel/UCkRNQjK0d70NqvLI57JmfeA,https://instagram.com/shoeyrussell,,594,653569,10,0,0.0,cached,False,1144f22d-fb1f-41a7-9822-05dab5edff25,False,,0.36,Low / Emerging,0.5213080735653491,0.7347588629481051,0.5810073162355173,0.0,0.0,0.3981828694301827,19.43,4
|
Meek Mill,@meekmill,UC9HlWVtENbiMQzVRmnbJxtw,Meek Mill,5950000.0,4845516488.0,381.0,363292.5,10363.763197297121,313.2891178034817,COMPLETE,1,2026-10-22 10:58:10,1.0,High Confidence,True,True,False,83.21,True,88.13,4,10,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
405c893b17cdd7a486fc074f722671ab,$eLL,https://www.youtube.com/channel/UCVhJhIHih93-X-NzZeXX6bA,https://instagram.com/localcel_,,421,56299,61,0,0.0,cached,False,735f2b10-a267-4cd2-990f-f91702be9130,False,Q114274902,0.36,Low / Emerging,0.493273817829613,0.6002240439751241,1.0,0.0,0.0,0.39803815634266493,19.42,5
|
French Montana,@FrenchMontana,UC-4mIX9ls8ROVk9ApfeYf5w,French Montana,5990000.0,4703121228.0,681.0,134346.54545454544,3987.039117589532,1121.867429535251,COMPLETE,1,2026-10-22 10:57:49,1.0,High Confidence,True,True,False,83.11,True,86.84,5,12,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
e6351059c8846a51fe492ebb6365e4b0,$hamrock,https://www.youtube.com/channel/UCenklnIchLhgF2ELHfLqpmQ,,,125,33862,0,0,0.0,cached,True,771e21e8-78f6-4d06-a495-ddcaa08b469b,False,,0.63,Medium,0.3946417110342386,0.5723282415425062,0.0,0.0,0.0,0.2614745736958981,18.41,6
|
That Mexican OT,@ThatMexicanOT,UC4cvpsB_dAX8i5vdaBB-96w,That Mexican OT,1770000.0,1322775383.0,1380.0,92659.90909090909,2647.6282487520475,600.0645626566846,COMPLETE,1,2026-10-22 11:18:37,1.0,High Confidence,True,True,False,89.27,True,85.97,6,4,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
c977cafbeabf67c0956bb0d1ce0188d7,$avage,https://www.youtube.com/channel/UCxtI7DyGJwUnAOywPSvf2OQ,https://instagram.com/mobshitsavage,,43300,0,0,0,0.0,cached,True,21b57a2b-9300-45b8-99bb-b970cb229f22,False,,0.63,Medium,0.8711584148945921,0.0,0.0,0.0,0.0,0.2613475244683776,18.4,7
|
Mac Miller,@MacMiller,UC3SEvBYhullC-aaEmbEQflg,Mac Miller,5060000.0,5032537108.0,274.0,256519.44444444444,5538.977074017849,1142.0511523811574,COMPLETE,1,2026-10-22 10:57:59,1.0,High Confidence,True,True,False,83.93,True,85.79,7,9,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
1cd4f7d2b1b902a677d0d6fba4096240,$'Edout,https://www.youtube.com/channel/UC6Sj8g3C4Qb9I3bl9xcQDXQ,https://instagram.com/Kid_soja,,21,12683,0,0,0.0,cached,False,,False,,0.28,Low / Emerging,0.2522297719906333,0.5184441001135359,0.0,0.0,0.0,0.20527995662557397,8.7,8
|
Busta Rhymes,@BustaRhymes,UCCWKLP04ZkaVpxb6l5BKZOw,Busta Rhymes,2480000.0,2049999007.0,120.0,69995.60869565218,10291.466021848071,7875.324482314475,COMPLETE,1,2026-10-22 10:55:25,1.0,High Confidence,True,True,False,87.68,True,84.96,8,5,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
33f12aeb1989989480885e6a4ed1637f,$ Eli,https://www.youtube.com/channel/UClmpQYORihn-nTO77x3XIpg,https://instagram.com/dollarsigneli,,0,0,0,0,0.0,not_found,False,,False,,0.0,Low / Emerging,0.0,0.0,0.0,0.0,0.0,0.0,0.0,9
|
Gunna,@GunnaOfficial,UCAkIMkEaa9sZmjcy7mfd5lQ,Gunna,3740000.0,3725802705.0,465.0,578597.0,16614.308171638426,11443.082294264339,COMPLETE,1,2026-10-22 10:46:07,0.75,Medium Confidence,True,False,False,85.63,True,84.87,9,7,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
73502f922e4bfbad14f321aa0415f301,$hrames,https://www.youtube.com/channel/UCfwF7qNJylFoSIMi7KTKPdA,https://instagram.com/iPissGreatness,,0,0,0,0,0.0,cached,True,61c33b23-37a9-43a3-9ccd-9b12944ded5b,False,,0.55,Medium,0.0,0.0,0.0,0.0,0.0,0.0,0.0,10
|
Snoop Dogg,@SnoopDogg,UC-OO324clObi3H-U0bP77dw,SnoopDoggTV,11300000.0,4981447419.0,1880.0,195196.0,2351.3182995610455,257.2384826204126,COMPLETE,1,2026-10-22 10:55:04,0.94,High Confidence,True,True,False,71.6,True,83.19,10,15,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Ghostemane,@ghostemane,UCsyBVa0eTR-lL0sRnKpIe8w,GHOSTEMANE,4000000.0,986394685.0,71.0,426047.0,4842.041171242727,801.2480697226747,COMPLETE,1,2026-10-22 11:22:49,1.0,High Confidence,True,True,False,85.08,True,82.09,11,8,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Russ Millions,@RussMillions,UCGDawZyaXbMbcr15My67wmw,Russ Millions,555000.0,271257489.0,64.0,815333.3333333334,8696.962289413772,367.26204689813267,COMPLETE,1,2026-10-22 11:07:06,1.0,High Confidence,True,True,False,97.07,True,81.64,12,2,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Wu-Tang Clan,@WuTangClan,UCl0q_XqiWDMA-Q9SzUO3y-Q,Wu-Tang Clan,2060000.0,1219796180.0,376.0,80399.125,1761.0552652571591,276.27488489911485,COMPLETE,1,2026-10-22 10:55:35,1.0,High Confidence,True,True,False,83.15,True,80.34,13,11,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Roy Woods,@RoyWoods,UCN_uuL0yjn9H5fnFqpo2S1w,Roy Woods,304000.0,120651354.0,403.0,146453.0,973.0417094293531,4580.504953659316,COMPLETE,1,2026-10-22 11:22:08,1.0,High Confidence,True,True,False,100.0,True,79.02,14,1,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Oliver Tree,@OliverTree,UCHcb3FQivl6xCRcHC2zjdkQ,Oliver Tree,11800000.0,5027457672.0,280.0,4722244.0,79897.76908648516,100.0,COMPLETE,1,2026-10-22 11:23:39,1.0,High Confidence,True,True,False,40.22,True,75.65,15,54,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Fat Joe,@fatjoe,UCdq3IqQwiWQfjdjwxTLO-qQ,Fat Joe,2020000.0,1700116153.0,220.0,124549.0,3488.9042928210943,209.88575267297125,COMPLETE,1,2026-10-22 10:56:33,1.0,High Confidence,True,True,False,68.56,True,75.3,16,16,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Gucci Mane,@guccimane,UCSugZEYrWbzqIWGD195V-YA,Gucci Mane,6010000.0,5168869290.0,575.0,126198.94117647059,14678.434486812183,100.0,COMPLETE,1,2026-10-22 10:55:55,1.0,High Confidence,True,True,False,41.47,True,72.32,17,50,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Bhad Bhabie,@BhadBhabie,UC7rVvFP90pl7tAtPsVIhfww,Bhad Bhabie,8000000.0,1602802587.0,218.0,235925.55555555556,20889.33114341348,100.0,COMPLETE,1,2026-10-22 11:06:07,1.0,High Confidence,True,True,False,40.82,True,71.1,18,52,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
"Tyler, The Creator",@tylerthecreator,UCsQBsZJltmLzlsJNG7HevBg,"Tyler, The Creator",8260000.0,4319305041.0,113.0,948067.0,14115.234188285052,100.0,COMPLETE,1,2026-10-22 10:35:27,1.0,High Confidence,True,True,False,40.69,True,69.15,19,53,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
50 Cent,@50Cent,UC8zJedg1f4sKnyuHWeS6vyw,50 Cent,18700000.0,15388385211.0,441.0,38441.0,2992.8528339307945,100.0,COMPLETE,1,2026-10-22 10:55:08,1.0,High Confidence,True,True,False,38.82,True,68.84,20,56,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Tee Grizzley,@TeeGrizzley,UCz015ho6P0Ooo7IZFyQU7fw,Tee Grizzley,2870000.0,1857822227.0,558.0,88326.8,5263.220303513859,100.0,COMPLETE,1,2026-10-22 11:04:26,1.0,High Confidence,True,True,False,43.23,True,68.81,21,47,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Doja Cat,@dojacat,UCzpl23pGTHVYqvKsgY0A-_w,Doja Cat,14200000.0,11620421412.0,66.0,32432.0,10145.846735039593,100.0,COMPLETE,1,2026-10-22 11:23:45,1.0,High Confidence,True,True,False,39.43,True,67.93,22,55,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Vic Mensa,@VicMensa,UCCkJuLH3pjjyDAuzbSky55g,Vic Mensa,381000.0,134030107.0,450.0,11970.16,6987.9191103345365,100.0,COMPLETE,1,2026-10-22 11:04:42,1.0,High Confidence,True,True,False,50.35,True,66.9,23,30,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Rio Da Yung OG,@RioDaYungOG,UCjUy5GbylYJC6kxJZYRwwVA,Rio Da Yung OG,746000.0,659365293.0,340.0,55189.36842105263,2183.0280193714752,128.68689071598368,COMPLETE,1,2026-10-22 11:04:10,1.0,High Confidence,True,True,False,53.81,True,66.86,24,20,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Method Man,@MethodMan,UClsmea6T_IrOqTI-DOwso5g,Method Man,745000.0,475439169.0,263.0,83971.75,2348.5647443745934,130.3514727565751,COMPLETE,1,2026-10-22 10:55:29,1.0,High Confidence,True,True,False,54.22,True,66.58,25,17,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Logic,@Logic,UCoDcFZ5KZ0KwBC_omalJuiA,Logic,3530000.0,1858275156.0,479.0,117074.0,304.24732199274104,146.0416535317235,COMPLETE,1,2026-10-22 10:58:45,1.0,High Confidence,True,True,False,52.49,True,65.42,26,24,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
BigXthaPlug,@BigXthaPlug,UCEJdOGwm6CNtc_kIa_Qjy6A,BigXthaPlug,1870000.0,1842811715.0,593.0,174375.8947368421,13953.52996099237,30.40713780212185,COMPLETE,1,2026-10-22 11:18:31,1.0,High Confidence,True,True,False,29.21,True,65.03,27,68,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Masego,@Masego,UCmfMTajxmbEKe0A1rQJ4p0A,Masego,1010000.0,550194493.0,147.0,110773.5,4950.097171379931,100.0,COMPLETE,1,2026-10-22 11:20:15,1.0,High Confidence,True,True,False,46.28,True,64.92,28,43,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Russ,@russ,UCiIETTq2It3OzW8_WYRPTyQ,Russ,6400000.0,4344762933.0,389.0,182719.66666666666,3207.2147136777303,100.0,COMPLETE,1,2026-10-22 10:59:00,0.75,Medium Confidence,True,False,False,41.19,True,64.26,29,51,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Coco Jones,@cocojones,UC0RzM4Oe2H4pxAYuk-hr1xA,Coco Jones,1210000.0,469745143.0,211.0,44337.0,2417.8568865491798,100.0,COMPLETE,1,2026-10-22 11:24:23,1.0,High Confidence,True,True,False,45.55,True,63.87,30,45,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Bugzy Malone,@bugzymalone,UCLd_hRzn-yr9Nh73XNviNWg,Bugzy Malone,724000.0,542783895.0,184.0,678121.0,2964.426444044485,100.0,COMPLETE,1,2026-10-22 11:08:08,1.0,High Confidence,True,True,False,47.21,True,63.83,31,42,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Victoria Monét,@VictoriaMonet,UCF-Gj_k3Uk4WnK2UhJcSzYg,Victoria Monét,667000.0,417411317.0,253.0,43724.36,2424.173715381624,100.0,COMPLETE,1,2026-10-22 11:24:13,1.0,High Confidence,True,True,False,47.42,True,63.8,32,40,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Fivio Foreign,@FivioForeign,UCm7gu9KfQ6oAg0Z1halgEnA,Fivio Foreign,1190000.0,696992105.0,372.0,127801.6,3799.110402985044,67.78469213601154,COMPLETE,1,2026-10-22 11:01:00,1.0,High Confidence,True,True,False,38.29,True,63.44,33,57,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Lil Mosey,@LilMosey,UCZ3FuC9xpPnSErHJqMg5_EQ,Lil Mosey,2570000.0,816757652.0,109.0,30248.5,2020.0607061409662,100.0,COMPLETE,1,2026-10-22 11:05:08,1.0,High Confidence,True,True,False,43.44,True,62.79,34,46,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Snoh Aalegra,@SnohAalegra,UChVibCOlzk9GwJZfbYJOY8A,Snoh Aalegra,590000.0,383092694.0,39.0,258526.0,7195.585507450485,100.0,COMPLETE,1,2026-10-22 11:24:42,1.0,High Confidence,True,True,False,48.45,True,62.79,34,36,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Kendrick Lamar,https://www.youtube.com/@KendrickLamarVEVO,UCoYfzC2zMlc9M-Odgaf6OSg,KendrickLamarVEVO,6820000.0,5403312208.0,61.0,,74854.42576525887,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 09:35:52,0.94,High Confidence,True,True,False,21.01,True,62.6,36,155,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Certified Trapper,@certifiedtrapper,UCwTa-rvU9G-pralFjeqvFfw,Certified Trapper,127000.0,56442056.0,1278.0,9950.315789473685,1165.2789427056582,88.84072157740177,COMPLETE,1,2026-10-22 11:18:03,1.0,High Confidence,True,True,False,50.57,True,62.41,37,29,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Your Old Droog,@YourOldDroog,UC47rmMk5fsa1HgE30TrkPXA,Your Old Droog,35400.0,8826910.0,98.0,13764.875,280.343203377182,204.90364381437593,COMPLETE,1,2026-10-22 11:26:45,1.0,High Confidence,True,True,False,89.52,True,62.41,37,3,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Eminem,@eminem,UCfM3zsQsOnfWNUppiycmBuw,EminemMusic,67400000.0,38760804274.0,210.0,,9816.92596840884,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:35:05,0.94,High Confidence,True,True,False,17.95,True,62.03,39,187,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Lil Durk,@lildurk,UCaxOQZrF5llUMp-JjesUz1A,Lil Durk,7820000.0,7860200885.0,506.0,,7854.888480466487,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:00:40,1.0,High Confidence,True,True,False,20.19,True,62.0,40,167,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Juice WRLD,@JuiceWRLD,UC0BletW9phE4xHFM44q4qKA,Juice WRLD,14000000.0,8931718358.0,191.0,,13642.117976478625,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:01:21,1.0,High Confidence,True,True,False,19.55,True,61.91,41,179,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Tory Lanez,@torylanez,UCbfUA3UGxAWL3muD004g0WQ,Tory Lanez,5110000.0,3848908499.0,1150.0,,3671.8805074009224,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:22:05,1.0,High Confidence,True,True,False,20.67,True,61.18,42,161,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Wiz Khalifa,@wizkhalifa,UCVp3nfGRxmMadNDuVbJSk8A,Wiz Khalifa,30900000.0,16488363807.0,952.0,,2159.31863496771,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:57:52,1.0,High Confidence,True,True,False,18.68,True,61.12,43,184,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
BLP Kosher,@blpkosher,UCrmzNldeNrajgVg_0VLNRkA,BLP KOSHER,288000.0,105754496.0,116.0,19499.81818181818,1303.458853581182,114.68477575490677,COMPLETE,1,2026-10-22 11:18:06,1.0,High Confidence,True,True,False,53.89,True,60.96,44,19,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Lil Uzi Vert,@LILUZIVERT,UCqwxMqUcL-XC3D9-fTP93Mg,LIL UZI VERT,10400000.0,6152925017.0,254.0,,8139.917420113339,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:36:14,1.0,High Confidence,True,True,False,19.86,True,60.84,45,173,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Yung Gravy,@yunggravy,UCLQPinZNWKlLBF7C_m2YP3g,Yung Gravy,1810000.0,915347578.0,592.0,63091.53333333333,3117.268694587971,28.69589695331241,COMPLETE,1,2026-10-22 11:23:33,1.0,High Confidence,True,True,False,28.47,True,60.8,46,76,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Drake,@DrakeOfficial,UCByOQJjav0CUDwxCk-jVNRQ,Drake,33200000.0,24441713812.0,112.0,3946272.0,126976.0049249581,-78.49564109006833,COMPLETE,1,2026-10-22 09:35:53,1.0,High Confidence,True,True,False,3.89,True,60.57,47,200,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Xanman,@xanman,UCaFFpY9BFJq2c4Do1gBQ1xw,Xanman,130000.0,46981997.0,193.0,117279.0,1358.9720852731882,100.0,COMPLETE,1,2026-10-22 11:27:34,1.0,High Confidence,True,True,False,53.56,True,59.98,48,21,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Central Cee,@CentralCee,UCV_CsAy5CNBX_uwDQ7RMe1Q,Central Cee,7140000.0,2738806078.0,92.0,,15050.145683517516,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 09:35:57,1.0,High Confidence,True,True,False,20.37,True,59.88,49,164,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Ty Dolla $ign,@tydollasign,UClVY6MdQxTZUaMDL-dLQDcw,Ty Dolla $ign,3830000.0,2225314489.0,231.0,3567.3333333333335,902.7262245223419,100.0,COMPLETE,1,2026-10-22 10:58:38,0.75,Medium Confidence,True,False,False,42.39,True,59.67,50,49,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Polo G,@PoloG,UC0ifXd2AVf1LMYbqwB5GH4g,Polo G,6520000.0,4589293113.0,116.0,,9536.359715027484,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:00:46,1.0,High Confidence,True,True,False,20.43,True,59.28,51,162,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Kehlani,@Kehlani,UCuE1A4MDBt8YkgUkRAKMtjw,Kehlani,4720000.0,3012117932.0,280.0,,5481.401722623155,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:24:29,1.0,High Confidence,True,True,False,20.79,True,59.26,52,157,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Yungeen Ace,@YungeenAce,UCf1Q757aKSmywQDQhiTtGFA,Yungeen Ace,1950000.0,891194469.0,297.0,,7606.187369930817,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:03:43,1.0,High Confidence,True,True,False,22.11,True,59.23,53,140,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Lil Wayne,@LilWayne,UCO9zJy7HWrIS3ojB4Lr7Yqw,Lil Wayne,14700000.0,9819093204.0,327.0,,3042.579334963458,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:35:45,1.0,High Confidence,True,True,False,19.45,True,59.21,54,180,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Teezo Touchdown,@TeezoTouchdown,UCjFEF43RfwXUu1rwXxm4eZQ,Teezo Touchdown,167000.0,36421964.0,53.0,106647.28571428571,2636.4681002257103,100.0,COMPLETE,1,2026-10-22 10:36:54,1.0,High Confidence,True,True,False,53.06,True,59.21,54,23,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
XXXTENTACION,@xxxtentacion,UCM9r1xn6s30OnlJWb-jc3Sw,XXXTENTACION,43500000.0,12901726223.0,137.0,,4351.873519974076,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:01:24,1.0,High Confidence,True,True,False,18.36,True,59.21,54,186,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
BKtherula,@bktherula,UCqEpkhhjzs37FX1b4d3yUqw,BKTHERULA,302000.0,97025417.0,257.0,52323.0,574.2010093808783,100.0,COMPLETE,1,2026-10-22 11:23:50,1.0,High Confidence,True,True,False,49.82,True,59.15,57,32,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Little Simz,@littlesimz,UC89IYKXyf15qNezA7IuFG1A,Little Simz,560000.0,142212941.0,167.0,20172.166666666668,608.6225053788249,100.0,COMPLETE,1,2026-10-22 09:35:54,1.0,High Confidence,True,True,False,47.76,True,58.98,58,38,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Lil Yachty,@lilyachty,UCNTu7P3IyRRKJtibrrXG0Yg,lil boat,3260000.0,1473706050.0,136.0,110781.5,2490.8082262072985,100.0,COMPLETE,1,2026-10-22 11:05:05,0.6,Medium Confidence,True,True,False,42.83,True,58.98,58,48,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Don Toliver,@DonToliver,UCgT01FILdWB9BsXBXKjpQ7A,Don Toliver,3040000.0,2970930038.0,261.0,,5298.9333555762505,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:37:18,1.0,High Confidence,True,True,False,21.37,True,58.74,60,145,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Nicki Minaj,@NickiMinaj,UC3jOd7GUMhpgJRBhiLzuLsg,Nicki Minaj,28400000.0,12957679432.0,67.0,,6737.723808690361,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:35:15,1.0,High Confidence,True,True,False,18.78,True,58.64,61,182,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Joey Bada$$,@joeybadass,UCG8R0ZMHBkRzBT1DWK9wT5w,Joey Bada$$,601000.0,342717274.0,36.0,42611.0,1411.2486770016158,100.0,COMPLETE,1,2026-10-22 10:37:29,1.0,High Confidence,True,True,False,47.64,True,58.45,62,39,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Playboi Carti,@PlayboiCarti,UC652oRUvX1onwrrZ8ADJRPw,Playboi Carti,4990000.0,2841848127.0,70.0,,10652.755040583823,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:35:57,1.0,High Confidence,True,True,False,20.79,True,58.24,63,157,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
G Herbo,@GHerbo,UCV0pIPt5HFfulonNog3cz1A,G Herbo,2050000.0,1778385783.0,412.0,,3606.4520627438346,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:04:32,1.0,High Confidence,True,True,False,21.89,True,58.23,64,141,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Travis Scott,@TravisScottXX,UCtxdfwb9wfkoGocVUAJ-Bmg,Travis Scott,20800000.0,12627449851.0,20.0,,15447.109278571212,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:35:00,1.0,High Confidence,True,True,False,19.12,True,58.2,65,181,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
The Notorious B.I.G.,@notoriousbig,UCIZGqIYkST36dLp0uf9o9nw,The Notorious B.I.G.,5080000.0,4448312178.0,105.0,48538.333333333336,1578.086121441178,40.544166473631385,COMPLETE,1,2026-10-22 10:55:11,1.0,High Confidence,True,True,False,29.19,True,57.88,66,69,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Lil Tecca,@LilTecca,UCOlxqtcKc-HBEQJgDsylyhA,Lil Tecca,3330000.0,1490107798.0,174.0,,5338.891039170453,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:05:11,1.0,High Confidence,True,True,False,21.25,True,57.79,67,150,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Lil Tjay,@liltjay,UCEB4a5o_6KfjxHwNMnmj54Q,Lil Tjay,6560000.0,3607654054.0,210.0,,3398.0989328467595,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:00:51,1.0,High Confidence,True,True,False,20.36,True,57.75,68,165,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
21 Savage,@21savage,UCOjEHmBKwdS7joWpW0VrXkg,21 Savage,10100000.0,6785207356.0,166.0,,3210.9505305038683,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:35:32,1.0,High Confidence,True,True,False,19.86,True,57.63,69,173,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
YTB Fatt,@ytbfatt,UCqfqdCqPHxgtdJ0m32obDiw,YTB Fatt ,451000.0,465643798.0,212.0,,7869.7705685443825,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:18:21,1.0,High Confidence,True,True,False,25.32,True,57.46,70,97,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Pierre Bourne,@PierreBourne,UCN27za3wzItmyRV2O3N91vw,PierreBourne,409000.0,236364956.0,113.0,46045.857142857145,2477.787578318517,100.0,COMPLETE,1,2026-10-22 11:19:02,0.65,Medium Confidence,False,True,False,49.15,True,57.43,71,34,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Machine Gun Kelly,@mgk,UCUs8sGiP4avNaYNVO22INhQ,mgk,9540000.0,6954381825.0,392.0,,9275.456146176897,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:58:53,0.6,Medium Confidence,True,True,False,19.97,True,57.05,72,170,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
TiaCorine,@TiaCorine,UC9suUyHpN7Gzk8l7j3qSrIg,TiaCorine,124000.0,52683115.0,118.0,160101.0,614.9438604047872,100.0,COMPLETE,1,2026-10-22 11:23:54,1.0,High Confidence,True,True,False,53.27,True,57.0,73,22,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Murda Beatz,@MurdaBeatz,UCWz4zK-Oal6uIiVxVuRWh8A,Murda Beatz,214000.0,53871516.0,66.0,73358.0,818.1447271166605,100.0,COMPLETE,1,2026-10-22 11:19:06,1.0,High Confidence,True,True,False,51.17,True,56.95,74,27,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Icewear Vezzo,@icewearvezzo,UC00wbhsfrcZAElIw1Q9VRlw,Icewear Vezzo,585000.0,744543885.0,233.0,,4957.282485543911,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:03:57,1.0,High Confidence,True,True,False,24.2,True,56.79,75,108,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Fabolous,@myfabolouslife,UCPGTwnuYHJ0nb6osWd9v7gg,MyFabolousLife,1190000.0,1110780051.0,194.0,,5887.636523789568,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:57:12,0.94,High Confidence,True,True,False,22.87,True,56.78,76,133,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
J. Cole,@JColeVEVO,UCnzJFckvQBA5nn9lMu08LWQ,JColeVEVO,1690000.0,1837373881.0,33.0,,16023.352790077835,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 09:35:53,0.94,High Confidence,True,True,False,22.7,True,56.27,77,136,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Public Enemy,@PublicEnemy,UCAR-wsCZ0Xn9KPqX_l2fVzQ,Channel ZERO,266000.0,213838649.0,1529.0,887.16,274.522753396345,100.0,COMPLETE,1,2026-10-22 11:13:56,0.6,Medium Confidence,True,True,False,50.18,True,56.11,78,31,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Post Malone,@PostMalone,UCeLHszkByNZtPKcaVXOCOQQ,Post Malone,29000000.0,21288950637.0,190.0,,977.5253943977743,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:35:36,1.0,High Confidence,True,True,False,18.74,True,55.94,79,183,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Cypress Hill,@cypresshill,UCoO96UN3gv5WohJA8QuMgXQ,Cypress Hill,2030000.0,1689044104.0,345.0,24328.714285714286,756.8622579064025,21.606220946423598,COMPLETE,1,2026-10-22 10:56:25,1.0,High Confidence,True,True,False,26.6,True,55.77,80,83,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Kanye West,@kanyewest,UCs6eXM7s8Vl5WcECcRHc2qQ,Kanye West,12700000.0,10317879051.0,42.0,,20349.925333641124,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:35:11,0.65,Medium Confidence,False,True,False,19.69,True,55.74,81,177,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Migos,@MigosAtl,UC9YcTIQuhwgoOQqYMKYqW9A,Migos ATL,13100000.0,8456422168.0,99.0,,2625.741389535104,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:59:33,0.94,High Confidence,True,True,False,19.57,True,55.67,82,178,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Rapsody,@rapsody,UCCobft4AUIDzRaKp1xEHa5w,Rapsody,170000.0,38876179.0,166.0,2003.0,228.74538135048846,100.0,COMPLETE,1,2026-10-22 11:02:23,1.0,High Confidence,True,True,False,51.79,True,55.26,83,25,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
SZA,@sza,UCO5IQ70V7l-XpHW40HwaGsw,SZA,6800000.0,5695629013.0,38.0,,13227.511780193214,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:24:39,0.75,Medium Confidence,True,False,False,20.41,True,55.13,84,163,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Sexyy Red,@SexyyRed,UC28rc3PHWPJib68G-VqpJ3w,Sexyy Red,1450000.0,903938520.0,481.0,,1128.9340825805314,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:36:41,1.0,High Confidence,True,True,False,22.28,True,55.12,85,138,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Anderson .Paak,@andersonpaak,UCVMSK1i_uksa4FrXZZqGYvw,Anderson Paak,912000.0,415309107.0,66.0,,6523.938369179792,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:25:07,1.0,High Confidence,True,True,False,23.42,True,55.11,86,120,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Macklemore,@Macklemore,UCXYRdIXDdeZIf816EWAr5zQ,Macklemore,10100000.0,6524076872.0,311.0,,691.7757397177468,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:59:22,1.0,High Confidence,True,True,False,19.84,True,54.95,87,175,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Jack Harlow,@JackHarlow,UC6vZl7Qj7JglLDmN_7Or-ZQ,Jack Harlow,3180000.0,2304111123.0,173.0,,1673.6120246890312,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:36:05,1.0,High Confidence,True,True,False,21.23,True,54.93,88,152,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Ashnikko,@ashnikko,UCprhwr86ckrMC2q9jX8qMnw,Ashnikko,2820000.0,1454561438.0,285.0,70118.0,1266.2684484936703,-1.891702812368826,COMPLETE,1,2026-10-22 11:23:42,1.0,High Confidence,True,True,False,20.97,True,54.81,89,156,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Leon Thomas,@LeonThomas,UCOHM33mfIkFOy3bDfKhPyVQ,Leon Thomas,482000.0,326833613.0,122.0,26659.0,436.2163456636026,100.0,COMPLETE,1,2026-10-22 11:24:53,0.75,Medium Confidence,True,False,False,48.22,True,54.8,90,37,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Roddy Ricch,@RoddyRicch,UChQdA1rid5kKZh6oIc6DLNg,Roddy Ricch,7650000.0,4066649683.0,94.0,,1705.5165416126222,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:36:32,1.0,High Confidence,True,True,False,20.16,True,54.54,91,168,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
NF,@nfrealmusic,UCoRR6OLuIZ2-5VxtnQIaN2w,NFrealmusic,10500000.0,6234726143.0,41.0,,11380.180398255812,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:59:11,0.69,Medium Confidence,True,False,False,19.87,True,54.51,92,172,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Offset,@OffsetYRN,UCLRm9H9a-2bAna0E-r5n8pg,OFFSETYRN,1160000.0,1003390203.0,70.0,699280.0,15291.937268061403,1.6130977550898822,COMPLETE,1,2026-10-22 10:59:39,0.69,Medium Confidence,True,False,False,23.88,True,54.39,93,113,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Ken Carson,@kencarson,UCtjO8cix9XxwOcAv6nww-TQ,Ken Carson,899000.0,550673391.0,49.0,,5958.665167398936,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:36:47,1.0,High Confidence,True,True,False,23.4,True,54.38,94,122,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Denzel Curry,@denzelcurryph,UCiKxNv_MHAShqT2lATxG_Wg,Denzel Curry,1610000.0,686698487.0,275.0,15509.0,1818.5286563604102,-15.500708292470305,COMPLETE,1,2026-10-22 09:35:55,1.0,High Confidence,True,True,False,18.67,True,53.85,95,185,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Tech N9ne,@StrangeMusicInc,UC87iZ03xDe8csLCjWyV2E0A,Strange Music Inc,2880000.0,1945359953.0,1468.0,,1339.3668438688953,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:59:18,0.6,Medium Confidence,True,True,False,21.35,True,53.8,96,147,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
A Boogie wit da Hoodie,@ABoogieWitDaHoodie,UCfgsFOdVScKetBXYrFNr5LQ,A Boogie Wit da Hoodie,5340000.0,4201606943.0,543.0,20996.25,516.8253065426438,-12.712022948366176,COMPLETE,1,2026-10-22 11:00:56,1.0,High Confidence,True,True,False,17.9,True,53.63,97,188,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Ray Vaughn,@rayvaughn,UCr4UjKmsi8FlnqJ8yLIfTtQ,Ray Vaughn,176000.0,24804271.0,113.0,6723.7692307692305,502.1701246115227,100.0,COMPLETE,1,2026-10-22 11:02:00,0.75,Medium Confidence,True,False,False,51.79,True,53.56,98,25,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Blxst,@blxst,UCTozeRVDkVwCPXJIUeoN_Xg,BLXST,639000.0,522269179.0,175.0,,1747.8298867521291,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:03:29,1.0,High Confidence,True,True,False,23.62,True,53.51,99,117,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Monaleo,@TheMonaleo,UCeQk0DthP_Se7hU0S2V_m1w,Monaleo,471000.0,233589142.0,176.0,,2070.2578912418467,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:23:59,1.0,High Confidence,True,True,False,24.23,True,53.48,100,106,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Summer Walker,@SummerWalker,UCSpNS4dJ8wIScwMqatIdiQw,Summer Walker,2920000.0,3275232745.0,628.0,,329.0917828921748,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:24:26,1.0,High Confidence,True,True,False,21.31,True,53.4,101,148,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Baby Keem,@babykeem,UCq0Hi7HpCBCNeKpdKKcQqGQ,Baby Keem,1110000.0,803291048.0,33.0,,4779.61481581562,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:46:08,1.0,High Confidence,True,True,False,22.92,True,53.31,102,131,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Big Sean,@bigsean,UCYFyHJMMKd7C8M0_TsleUQA,Big Sean,4530000.0,2674565586.0,247.0,,558.8431614778916,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:58:03,1.0,High Confidence,True,True,False,20.77,True,53.12,103,159,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Chief Keef,@ChiefKeef,UC0032Wkd3aCT4rRi1YOV3gQ,BigGucci Sosa,2380000.0,1500304905.0,623.0,,1912.1052422210726,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:57:45,0.6,Medium Confidence,True,True,False,21.62,True,52.88,104,144,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Kardinal Offishall,@kardinaloffishall,UCNWrxU_dWo33qIKH99Xb-Yw,KardinalOffishall416,368000.0,582612756.0,190.0,5262.0,58.13723026941238,100.0,COMPLETE,1,2026-10-22 11:22:19,0.94,High Confidence,True,True,False,49.03,True,52.83,105,35,ZOMBIE_CHANNEL,True,"High subscriber base (368,000) with negligible viewership (58.1 views/day)."
|
||||||
|
Ms Banks,@MsBanks,UCfDjAp4wQg5BZIh6-q0EqYA,Ms Banks,209000.0,66717746.0,220.0,2171.25,111.94703419006626,81.3152400835073,COMPLETE,1,2026-10-22 11:08:24,1.0,High Confidence,True,True,False,46.18,True,52.68,106,44,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
LL Cool J,@LLCoolJ,UCDG8P-_qq4PuT0DtxzlQlsw,LL COOL J,1070000.0,782882641.0,62.0,,2196.197853626171,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:13:52,1.0,High Confidence,True,True,False,22.81,True,52.52,107,134,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Freddie Gibbs,@freddiegibbs,UCKAtbNtZNyqBWH1FG1Kvmnw,Freddie Gibbs,573000.0,414997351.0,198.0,,1111.534331915095,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:37:25,1.0,High Confidence,True,True,False,23.73,True,52.45,108,116,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Vince Staples,@vincestaples,UCDDx4lwzZk5uZBwTunBI2CA,Vince Staples,648000.0,422699754.0,72.0,18669.5,1190.0548173759607,17.203243526026682,COMPLETE,1,2026-10-22 10:37:41,1.0,High Confidence,True,True,False,27.63,True,52.22,109,81,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Darkoo,@Darkoo,UCazgYTvQCD6U6EZObXzY0Tw,Darkoo,345000.0,180051973.0,69.0,,2827.350139391935,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:08:30,1.0,High Confidence,True,True,False,25.04,True,52.14,110,102,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Destroy Lonely,@destroylonely,UCylvCifeaY7gi1zjhRfpcMg,Destroy Lonely,511000.0,280956900.0,60.0,,2579.944234881745,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:36:50,1.0,High Confidence,True,True,False,24.15,True,52.04,111,110,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Kid Cudi,@KidCudi,UCoNPsL8j28yfKRu6e7YUhPA,Kid Cudi,2810000.0,2487181707.0,130.0,,635.4314348175157,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:58:41,1.0,High Confidence,True,True,False,21.37,True,51.84,112,145,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Blac Youngsta,@BlacYoungsta,UCvjgPWQe35Wgw2aLpz9vjQQ,Blac Youngsta,992000.0,490816409.0,255.0,,569.5770587761309,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:00:21,1.0,High Confidence,True,True,False,22.8,True,51.67,113,135,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Slim Thug,@slimthug,UCP2rf54UzEehScugsx1auFw,Slim Thug,458000.0,301852252.0,266.0,,688.3832984293662,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:16:02,1.0,High Confidence,True,True,False,24.05,True,51.56,114,111,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Kaash Paige,@KaashPaige,UCqLcZ9ksQuE3QIf-pNCVSjA,Kaash Paige,628000.0,439270374.0,61.0,5698.0,51.45088042980945,100.0,COMPLETE,1,2026-10-22 11:05:19,1.0,High Confidence,True,True,False,47.33,True,51.19,115,41,ZOMBIE_CHANNEL,True,"High subscriber base (628,000) with negligible viewership (51.5 views/day)."
|
||||||
|
LiBand,@LiBand,UCV3vLUKVvGM78ZzBAxgiHRA,LiBand,97800.0,22362264.0,79.0,35876.0,289.5914300052349,100.0,COMPLETE,1,2026-10-22 11:27:27,0.75,Medium Confidence,True,False,False,54.02,True,51.16,116,18,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Flo Milli,@flomilli,UCylw9yLlhFVX_vIdjc6DjGQ,Flo Milli,784000.0,418548631.0,82.0,,1216.5302158988356,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:37:03,1.0,High Confidence,True,True,False,23.22,True,51.15,117,125,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Yeat,@yeat,UCV4UK9LNNLViFP4qZA_Wmfw,Yeat,1720000.0,1405195230.0,150.0,788390.0,10345.49831521508,-87.8946179654808,COMPLETE,1,2026-10-22 10:37:12,1.0,High Confidence,True,True,False,2.7,True,51.01,118,203,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Rico Nasty,@RicoNasty,UCINBvWZluLuV4VxNH32OO_Q,Rico Nasty,673000.0,232225958.0,315.0,,453.54103456014724,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:06:00,1.0,High Confidence,True,True,False,23.39,True,51.0,119,124,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Majid Jordan,@MajidJordan,UCiND3wemaDyaKjJAavm-h2A,MAJID JORDAN,341000.0,167567615.0,265.0,372.92,54.20043821375937,100.0,COMPLETE,1,2026-10-22 11:22:11,0.75,Medium Confidence,True,False,False,49.28,True,50.82,120,33,ZOMBIE_CHANNEL,True,"High subscriber base (341,000) with negligible viewership (54.2 views/day)."
|
||||||
|
Lloyd Banks,@LloydBanks,UCOKmAISP9lvmyPIbtEELoVQ,Lloyd Banks,622000.0,498483669.0,167.0,,606.4315511261304,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:14:25,1.0,High Confidence,True,True,False,23.53,True,50.68,121,118,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Skilla Baby,@SkillaBaby,UC4OWd0CnbvaiaozgLZO-L4Q,Skilla Baby,445000.0,327246455.0,318.0,,381.8343744562367,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:18:28,1.0,High Confidence,True,True,False,24.04,True,50.42,122,112,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Bobby Shmurda,@BobbyShmurda,UClSTuQObWlw56blWZiW-wcw,Bobby Shmurda,3010000.0,1378411472.0,21.0,,1381.510387257916,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:01:07,1.0,High Confidence,True,True,False,21.3,True,50.12,123,149,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Metro Boomin,@MetroBoomin,UCKC11MOR51CLg4JpYj8jb4g,Metro Boomin,3640000.0,3360591656.0,145.0,,259.44014920209656,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:18:57,1.0,High Confidence,True,True,False,21.03,True,50.04,124,154,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
De La Soul,@WeAreDeLaSoul,UCngimeRWT1E9ZlasMs-eQSg,WeAreDeLaSoul,331000.0,184406990.0,527.0,6336.111111111111,1955.0871501450217,-52.32342318239582,COMPLETE,1,2026-10-22 11:14:00,0.94,High Confidence,True,True,False,11.9,True,50.0,125,191,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
AJ Tracey,@ajtracey,UCPOW9rO7SqJBfikRKEvbI3Q,AJ Tracey,548000.0,321735777.0,68.0,,1015.1216756109875,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:06:47,1.0,High Confidence,True,True,False,23.79,True,50.0,125,114,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Coast Contra,@CoastContra,UCFNjjg_9XURYU2IcbfxXv0w,COAST CONTRA,665000.0,117591874.0,169.0,,541.8510605781765,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:20:50,1.0,High Confidence,True,True,False,23.41,True,49.99,127,121,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Little Big,@littlebig,UCu7TZ_ATWgjgD9IrNLdnYDA,Little Big,7320000.0,4357549154.0,214.0,74299.5,5714.402489857644,-76.74192202856881,COMPLETE,1,2026-10-22 11:23:25,0.75,Medium Confidence,True,False,False,4.41,True,49.89,128,199,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Nafe Smallz,@NafeSmallz,UC77sAm_mEiNRAlXvVAsck4w,Nafe Smallz,199000.0,145949622.0,149.0,,719.1505966901968,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:07:43,1.0,High Confidence,True,True,False,25.63,True,49.73,129,92,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
JPEGMAFIA,@JPEGMAFIA,UCnAbB39RDMkmkMLigykYvQw,JPEGMAFIA,370000.0,165139463.0,144.0,,617.554447050833,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:20:26,1.0,High Confidence,True,True,False,24.41,True,49.73,129,104,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Muni Long,@MuniLong,UCI0ID2m2N-kKswd7x9AeCgw,Muni Long,1220000.0,847414175.0,192.0,,269.0630926429883,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:24:10,1.0,High Confidence,True,True,False,22.48,True,49.51,131,137,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Nettspend,@nettspend,UC6CvS47L6uTuPSPhinE5jKA,Nettspend,200000.0,48426914.0,75.0,,1285.0794181900742,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:17:34,1.0,High Confidence,True,True,False,25.86,True,49.5,132,87,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Coi Leray,@CoiLeray,UCiHc6oRZnXXZHZlaxbNkfQg,Coi Leray,2160000.0,821927927.0,181.0,20071.666666666668,5481.624921960127,-90.90124721590101,COMPLETE,1,2026-10-22 10:37:21,1.0,High Confidence,True,True,False,1.75,True,49.47,133,204,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Lupe Fiasco,@LupeFiasco,UC-zD8J0RLWy3mNB7EMmT7Rg,Lupe Fiasco,865000.0,649568719.0,125.0,32137.5,990.7196900541903,-27.252045770941564,COMPLETE,1,2026-10-22 10:56:12,1.0,High Confidence,True,True,False,16.67,True,49.28,134,189,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Kash Doll,@kashdoll,UCx5D4Lkkp8aIUBsTfiLpb-g,Kash Doll,856000.0,378710103.0,175.0,90024.4,3392.036383316453,-70.94590625816925,COMPLETE,1,2026-10-22 11:05:37,1.0,High Confidence,True,True,False,6.66,True,49.06,135,195,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Wretch 32,@Wretch32,UCXZwsjh089km2RF9oyuxe3g,Wretch 32,189000.0,137402592.0,137.0,,577.44066707496,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:08:15,1.0,High Confidence,True,True,False,25.68,True,48.95,136,89,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Iggy Azalea,@iggyazalea,UCGtjnDLpKGWKU6xtjB0NeKA,Iggy Azalea,8340000.0,4534036014.0,14.0,,696.6899791771257,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:06:14,1.0,High Confidence,True,True,False,20.06,True,48.68,137,169,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Shotgun Willy,@ShotgunWilly,UCTg6Jny4X_LteWGccXf596Q,Shotgun Willy,837000.0,352638426.0,58.0,,1531.1275896746533,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:23:36,0.75,Medium Confidence,True,False,False,23.15,True,48.49,138,127,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Bone Thugs-N-Harmony,@BoneThugsNHarmony,UCjSkdzVdUS1crC89RI2cNWw,Bone Thugs-N-Harmony,2130000.0,1650649014.0,53.0,,381.40366216927714,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:15:21,1.0,High Confidence,True,True,False,21.72,True,48.45,139,143,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Domani,@Domani,UCOQhX1bB092Z_1D_gEhXgAA,Domani,467000.0,93846379.0,352.0,22579.5,945.0639797976249,-17.77462172939313,COMPLETE,1,2026-10-22 11:21:00,0.75,Medium Confidence,True,False,False,19.73,True,48.44,140,176,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Nemzzz,@Nemzzz,UC3ytAKP00gWDkiOrcKfOwTQ,Nemzzz,771000.0,367474763.0,180.0,27110.75,5901.461975415122,-98.39568141931221,COMPLETE,1,2026-10-22 11:07:13,1.0,High Confidence,True,True,False,0.51,True,48.04,141,209,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Headie One,@HeadieOne,UC6rlSDvtzpYWgKrYnpjoH5Q,Headie One,539000.0,404036865.0,238.0,295625.0,3321.7314892102045,-86.4970228361893,COMPLETE,1,2026-10-22 11:06:52,1.0,High Confidence,True,True,False,3.29,True,47.97,142,202,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Rich Amiri,@RichAmiri,UCoAlpsKqwk1nhC3HgaNmwmw,Rich Amiri,241000.0,140530824.0,91.0,,496.22097498540825,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:17:37,1.0,High Confidence,True,True,False,25.16,True,47.93,143,99,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Famous Dex,@famousdex,UCdGP_MdTu-4nv8KPe-pr2uw,Famous Dex,886000.0,336436340.0,156.0,,199.65042124388725,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:04:48,1.0,High Confidence,True,True,False,22.94,True,47.83,144,130,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Giveon,@Giveon,UCkIgbcsXIHz0DW2lqRh4M0g,GIVĒON,3510000.0,2431471052.0,25.0,,2138.5086397313057,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:24:48,0.6,Medium Confidence,True,True,False,21.12,True,47.71,145,153,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Kamaiyah,@kamaiyah,UC--zl6ugn42K16BJ_bPmAOQ,Kamaiyah,110000.0,60682344.0,109.0,,403.54442447340136,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:05:49,1.0,High Confidence,True,True,False,26.75,True,46.96,146,82,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Pro Era,@PROERA,UC42LFWlZf-ooul-Kghq9DlA,PRO ERA,841000.0,449369891.0,268.0,,232.800468224475,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:26:26,0.75,Medium Confidence,True,False,False,23.02,True,46.88,147,129,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Three 6 Mafia,@three6mafia,UCa-MexmcInkyWUzyyA3WUTw,Three 6 Mafia,911000.0,866763135.0,38.0,,349.7630813010539,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:56:29,1.0,High Confidence,True,True,False,22.91,True,46.81,148,132,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Ivorian Doll,@IvorianDoll,UCfsQaNOlC5INLmD4z40oYtw,IVORIAN DOLL,208000.0,18290825.0,31.0,,963.8238849177229,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:08:27,1.0,High Confidence,True,True,False,25.64,True,46.75,149,91,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Rae Sremmurd,@RaeSremmurd,UC9iDw30SeRSm18kT98F5iAA,Rae Sremmurd,8950000.0,5333377549.0,115.0,,160.12758435765699,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:59:50,0.75,Medium Confidence,True,False,False,19.97,True,46.65,150,170,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Landon Cube,@landoncube,UCBCOAI6rmskcEpcjXbj2wSA,Landon Cube,197000.0,38025665.0,83.0,5243.0,30.781415226734726,100.0,COMPLETE,1,2026-10-22 11:22:33,0.75,Medium Confidence,True,False,False,51.16,True,46.49,151,28,ZOMBIE_CHANNEL,True,"High subscriber base (197,000) with negligible viewership (30.8 views/day)."
|
||||||
|
Lil Reese,@LilReese,UCZDsx30mTTobhsMczPVRM9A,Lil Reese,211000.0,60161578.0,85.0,,328.6220322123589,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:04:39,1.0,High Confidence,True,True,False,25.36,True,46.38,152,95,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Rich the Kid,@RichTheKid,UCvTEOPrdg8f_mufsqH3VGQw,Rich The Kid,2630000.0,1336789620.0,171.0,3651.0,1954.8993462976443,-98.15515681924984,COMPLETE,1,2026-10-22 11:04:51,1.0,High Confidence,True,True,False,0.01,True,46.38,152,211,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
EST Gee,@ESTGee,UCz_QWRP1UzcV10sfML8Gbxw,EST Gee,981000.0,1424855357.0,121.0,19357.285714285714,2791.584494384478,-94.5687651387039,COMPLETE,1,2026-10-22 11:03:51,1.0,High Confidence,True,True,False,1.03,True,46.29,154,207,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Tink,@OfficialTink,UCZgDQHB5j-Hhey5lRsJbP6Q,Tink ,797000.0,582961809.0,17.0,,1481.1246027566322,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:05:46,0.75,Medium Confidence,True,False,False,23.22,True,46.29,154,125,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Nelly,@Nelly,UCOnzS9RKEhSvfUCsFbSrJ_A,Nelly,6420000.0,6416097302.0,5.0,,1296.0148129239894,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:57:24,0.75,Medium Confidence,True,False,False,20.36,True,45.96,156,165,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
IDK,@IDK,UCyzWvqEm4w0HTS6OGemsZCA,idk,240000.0,104549643.0,519.0,,158.5091633512508,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:01:34,0.75,Medium Confidence,True,False,False,25.06,True,45.95,157,101,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Chris Webby,@ChrisWebby,UCISVviKwSuJLSyLwUKrbP8w,ForTheBurbs,819000.0,894805686.0,668.0,34062.0,711.9989851644756,-48.72497365648051,COMPLETE,1,2026-10-22 11:21:40,0.6,Medium Confidence,True,True,False,11.66,True,45.94,158,192,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Azealia Banks,@AzealiaBanks,UCD4UMQ7oryQQq5gqZStJQ6g,Azealia Banks,680000.0,497522794.0,11.0,,696.1777682099028,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:06:17,1.0,High Confidence,True,True,False,23.4,True,45.84,159,122,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
DMX,@dmx,UCQcTmBevae2jDeFEZ6VEQPw,DMX,3080000.0,2715459995.0,7.0,,514.6727511953404,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:55:42,1.0,High Confidence,True,True,False,21.25,True,45.83,160,150,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Chance the Rapper,@chancetherapper,UCeXp3EC97_rUl_e2vgM3gLg,Chance The Rapper,1730000.0,756001617.0,278.0,5087.5,173.86769008555143,-41.357846809982135,COMPLETE,1,2026-10-22 11:04:45,1.0,High Confidence,True,True,False,12.72,True,45.7,161,190,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
City Girls,@CityGirls,UCMKv9a5OeqElzuWy1WOR0kA,City Girls,2040000.0,1109112353.0,77.0,,248.3170123790347,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:05:28,0.75,Medium Confidence,True,False,False,21.78,True,45.54,162,142,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Slowthai,@slowthai,UCKHvQqJdl2cyPUmcXLFUeaQ,slowthai,416000.0,189327166.0,29.0,,388.50789504839935,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:07:23,1.0,High Confidence,True,True,False,24.16,True,45.53,163,109,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Ghostface Killah,@GhostfaceKillah,UCse6QIKj-dHMWgKSmag8JUA,Ghostface Killah,226000.0,168538226.0,9.0,,1076.1569836043548,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:56:15,1.0,High Confidence,True,True,False,25.5,True,45.5,164,93,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Rowdy Rebel,@RowdyRebel,UCLCcNXq8GZ5xKpG7wz2MzJQ,Rowdy Rebel,299000.0,145730360.0,103.0,,157.6437779444396,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:01:11,1.0,High Confidence,True,True,False,24.67,True,45.41,165,103,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Duckwrth,@DUCKWRTH,UCqCjmUIKpKe9bjoJKzP3ypA,duckwrth,205000.0,117475259.0,144.0,,130.5021836369795,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:01:46,1.0,High Confidence,True,True,False,25.33,True,45.27,166,96,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Skepta,@skeptaofficial,UCcfVrE3mmeQZ_RN3u5cUECA,SKEPTA,1010000.0,565913183.0,113.0,8168.666666666667,2289.508131007683,-97.71851507040614,COMPLETE,1,2026-10-22 11:06:32,1.0,High Confidence,True,True,False,0.25,True,45.09,167,210,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Pa Salieu,@PaSalieu,UCf2su0Eljvo9Uya9Ha1bhsA,Pa Salieu,154000.0,42185769.0,124.0,,163.2454593165061,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:07:26,1.0,High Confidence,True,True,False,25.89,True,45.01,168,86,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Knucks,@Knucks,UCU_8AjoQFl4KglLAVc1yhTg,Knucks,242000.0,119844661.0,111.0,,310.4964967947614,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:07:16,0.75,Medium Confidence,True,False,False,25.09,True,44.72,169,100,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Kenny Beats,@kennybeats,UCApPPpJ4d3ueW38lArwiWoA,Kenny Beats,802000.0,85982807.0,93.0,,260.0984176896025,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:20:03,0.75,Medium Confidence,True,False,False,23.1,True,44.62,170,128,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Common,@common,UCBGDlQIq1hx5nSTIpWTsGAQ,Common,508000.0,299524031.0,225.0,,85.32669411549671,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:56:02,0.75,Medium Confidence,True,False,False,23.78,True,43.69,171,115,ZOMBIE_CHANNEL,True,"High subscriber base (508,000) with negligible viewership (85.3 views/day)."
|
||||||
|
Bino Rideaux,@binorideaux,UC0c5KVbr5ENnvuSOWVYG_dQ,Bino Rideaux,134000.0,116110016.0,33.0,,524.9578131139592,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:03:33,0.75,Medium Confidence,True,False,False,26.39,True,43.35,172,84,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Kreayshawn,@kreayshawn,UCP4vIL84k78_tAM--K9hPtQ,kreayshawn,353000.0,182347874.0,127.0,,50.250885469099074,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:06:11,1.0,High Confidence,True,True,False,24.36,True,43.12,173,105,ZOMBIE_CHANNEL,True,"High subscriber base (353,000) with negligible viewership (50.3 views/day)."
|
||||||
|
Kalan.FrFr,@kalanfrfr,UCaS2A6-C4J38u7lWZ90ituQ,Kalan. FrFr,159000.0,148620240.0,175.0,1869.5,504.2801392130478,-68.18684591168213,COMPLETE,1,2026-10-22 11:03:37,1.0,High Confidence,True,True,False,8.15,True,43.02,174,194,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
B.o.B,@bob,UCpuvu8mrEO4jxjT6sRwE8tg,B.o.B,1470000.0,2537337150.0,488.0,,24.263792913153335,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:59:25,0.65,Medium Confidence,False,True,False,22.21,True,42.59,175,139,ZOMBIE_CHANNEL,True,"High subscriber base (1,470,000) with negligible viewership (24.3 views/day)."
|
||||||
|
GoldLink,@goldlink,UCLrYAuxT8pJjckotkBgvw1A,GoldLink,614000.0,495682406.0,47.0,,61.400530612862724,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:01:42,1.0,High Confidence,True,True,False,23.48,True,42.37,176,119,ZOMBIE_CHANNEL,True,"High subscriber base (614,000) with negligible viewership (61.4 views/day)."
|
||||||
|
Swae Lee,@SwaeLee,UCUJTvb20oc_15y3DRNvZlEA,Swae Lee,1000000.0,176172059.0,244.0,22342.0,428.68200705423294,-95.2776110317306,COMPLETE,1,2026-10-22 10:59:53,1.0,High Confidence,True,True,False,0.68,True,42.16,177,208,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
NxWorries,@NxWorries,UC33hb9_RLREo8h_Div8eryQ,NxWorries,76500.0,56129770.0,16.0,,664.9911289291866,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:25:10,0.75,Medium Confidence,True,False,False,27.92,True,42.03,178,79,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Loyle Carner,@LoyleCarner,UCSK1XOrBlCh1D8BPpUg-VvQ,Loyle Carner,175000.0,67735165.0,18.0,,199.41609841161812,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:07:19,1.0,High Confidence,True,True,False,25.66,True,42.02,179,90,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Maiya The Don,@MaiyaTheDon,UCqSAaO04_0hIu_y2ww8HIGg,Maiya The Don,44100.0,10153004.0,244.0,,47.10717203813847,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:24:02,1.0,High Confidence,True,True,False,28.42,True,41.92,180,77,ZOMBIE_CHANNEL,True,"High subscriber base (44,100) with negligible viewership (47.1 views/day)."
|
||||||
|
Knxwledge,@knxwledge,UCYiSYtOdVvX0M3JnVgBDlwQ,Knx.,193000.0,71744072.0,278.0,25838.0,374.9705952851086,-75.87195457898717,COMPLETE,1,2026-10-22 11:25:13,0.94,High Confidence,True,True,False,5.95,True,41.88,181,196,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
MadeinTYO,@MadeinTYO,UCd8yaXFD449WbtKVN3T6G4g,MadeinTYO,186000.0,111154995.0,131.0,,32.3563632772266,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:05:00,1.0,High Confidence,True,True,False,25.47,True,41.5,182,94,ZOMBIE_CHANNEL,True,"High subscriber base (186,000) with negligible viewership (32.4 views/day)."
|
||||||
|
Big L,@BigL,UClfc5w-snHQh9g_NkM3hfsA,Big L - Fishing Channel,41600.0,7319838.0,172.0,,48.03391073311159,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:13:34,0.94,High Confidence,True,True,False,28.56,True,40.64,183,74,ZOMBIE_CHANNEL,True,"High subscriber base (41,600) with negligible viewership (48.0 views/day)."
|
||||||
|
Westside Gunn,@GriseldaRecords,UCMd41AKqQhGVyEdQAjnzFUg,Griselda Records,210000.0,51888154.0,93.0,,122.15433375006808,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:37:58,0.6,Medium Confidence,True,True,False,25.28,True,40.47,184,98,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Le$,@steakxshrimp,UCnIkgwlzhtWUnkH7IVn-zwg,Le$,40500.0,76676210.0,71.0,,124.8838517760514,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:03:16,0.75,Medium Confidence,True,False,False,28.8,True,40.42,185,72,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Wiki,@wikset,UCNqBhMHw4XVzR0mPGb1sqxw,Wiki,40300.0,9695095.0,71.0,,144.45369590014337,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:26:48,0.75,Medium Confidence,True,False,False,28.86,True,40.12,186,71,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
BJ The Chicago Kid,@bjthechicagokid,UCQfYvnxjucGHJ2QZoNgPd8A,BJ THE CHICAGO KID,159000.0,62758735.0,120.0,,20.756213495007692,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:25:01,1.0,High Confidence,True,True,False,25.75,True,39.94,187,88,ZOMBIE_CHANNEL,True,"High subscriber base (159,000) with negligible viewership (20.8 views/day)."
|
||||||
|
Travis Porter,@travisporter,UC5Vqp4ptZ4jrqUXyk-Ps6RQ,Travis Porter,383000.0,431566903.0,493.0,,6.839644668128885,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:59:29,0.75,Medium Confidence,True,False,False,24.22,True,39.28,188,107,ZOMBIE_CHANNEL,True,"High subscriber base (383,000) with negligible viewership (6.8 views/day)."
|
||||||
|
Junglepussy,@junglepussy,UCzyRFjuI6Csk_pYqGkstgCQ,JUNGLEPUSSY,61600.0,11430128.0,40.0,,61.16396113004449,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:26:07,1.0,High Confidence,True,True,False,27.69,True,39.28,188,80,ZOMBIE_CHANNEL,True,"High subscriber base (61,600) with negligible viewership (61.2 views/day)."
|
||||||
|
Dillon Cooper,@TheDillonCooper,UCiIIKrTlCj7dzuJpocuopeg,The Dillon Cooper,126000.0,43139656.0,92.0,,26.10409065057022,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:26:42,0.94,High Confidence,True,True,False,26.19,True,39.22,190,85,ZOMBIE_CHANNEL,True,"High subscriber base (126,000) with negligible viewership (26.1 views/day)."
|
||||||
|
Kaytranada,@KAYTRANADA,UCJwaqVwGHi73m-WQWK3QODw,KAYTRANADA,478000.0,333388777.0,9.0,56946.0,979.1247654131028,-83.70224092040868,COMPLETE,1,2026-10-22 11:19:39,1.0,High Confidence,True,True,False,3.68,True,38.64,191,201,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
DJ Paul,@DJPaulKOM,UC-rRDx7NkObaaHmxEYsYhNQ,DJ Paul KOM,203000.0,91220482.0,615.0,1354.0,360.71279716286176,-98.83517863748591,COMPLETE,1,2026-10-22 11:16:41,0.59,Medium Confidence,False,True,False,0.0,True,38.53,192,212,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Danny Brown,@xdannyxbrownxVEVO,UCeGvYqb1ySghLFTz9DLvIJQ,xdannyxbrownxVEVO,42800.0,60595030.0,40.0,,125.19419534656488,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:46:10,0.6,Medium Confidence,True,True,False,28.66,True,38.08,193,73,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Peezy,@PeezyOfficial,UCwAAwrmGsZeaWveX3JXbt1Q,GHETTO ,329000.0,365797867.0,40.0,5750.0,1291.2065460180559,-92.87465590341397,COMPLETE,1,2026-10-22 11:04:04,0.6,Medium Confidence,True,True,False,1.64,True,37.84,194,205,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Waka Flocka Flame,@WakaFlockaFlame,UCtR2-AA3PJenlI1j3-4mixQ,WakaFlockaFlame,32700.0,27679826.0,115.0,,14.152387830163429,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:57:40,1.0,High Confidence,True,True,False,29.04,True,37.61,195,70,ZOMBIE_CHANNEL,True,"High subscriber base (32,700) with negligible viewership (14.2 views/day)."
|
||||||
|
Fly Anakin,@flyanakin,UCJDOkVhW-P2_gQymglj8zSg,Fly Anakin,13300.0,2963733.0,18.0,,94.22613185172862,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:25:47,1.0,High Confidence,True,True,False,31.96,True,37.37,196,58,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Pink Siifu,@pinksiifu,UCKt2e1_kJluunXqrmZwg73A,Pink Siifu,26100.0,5948278.0,86.0,,21.120039544563394,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:25:44,1.0,High Confidence,True,True,False,29.61,True,37.35,197,65,ZOMBIE_CHANNEL,True,"High subscriber base (26,100) with negligible viewership (21.1 views/day)."
|
||||||
|
Leikeli47,@Leikeli47,UCQnPkl4Wzw8sJlQnzNapMkw,Leikeli47,48400.0,53840110.0,3.0,,152.90242956286193,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:26:03,1.0,High Confidence,True,True,False,28.41,True,37.31,198,78,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Robb Bank$,@RobbBanks,UCwe3r6KPaqm4zmU3zcrzNmA,Robb Banks,77200.0,31222153.0,121.0,8349.0,190.18206453885753,-80.76045627376426,COMPLETE,1,2026-10-22 11:23:04,0.94,High Confidence,True,True,False,5.08,True,37.26,199,197,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Sa-Roc,@sarocthemc,UCdqK2Ak_aHHfUP0d9MSGx_g,Sa-Roc,69700.0,11649628.0,292.0,858.0,11.937516893952575,-23.902439024390244,COMPLETE,1,2026-10-22 11:02:29,1.0,High Confidence,True,True,False,20.71,True,37.17,200,160,ZOMBIE_CHANNEL,True,"High subscriber base (69,700) with negligible viewership (11.9 views/day)."
|
||||||
|
Monte Booker,@montebooker,UCGOyB6FLU0YJwFxDe7svfSQ,monte booker,43000.0,22392723.0,14.0,,57.87834470615598,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:20:06,1.0,High Confidence,True,True,False,28.5,True,37.12,201,75,ZOMBIE_CHANNEL,True,"High subscriber base (43,000) with negligible viewership (57.9 views/day)."
|
||||||
|
Bow Wow,@bowwow,UCbmukh7xJ3YJ5BYcTcUKD3g,bowwow,5740.0,3084923.0,7.0,,193.05873924251233,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:57:31,1.0,High Confidence,True,True,False,,True,36.92,202,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Mykki Blanco,@mykkiblanco,UCTlUMLdh0Po11lbKdyButOg,Mykki Blanco,23900.0,6315848.0,35.0,,34.56077574483203,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:25:56,1.0,High Confidence,True,True,False,29.88,True,36.77,203,64,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Moneybagg Yo,@MoneyBaggYo,UCuDKkfUbuUyOrxROp3imOtQ,Nless ENT,24900.0,11462645.0,34.0,,90.20945669106496,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:00:13,0.6,Medium Confidence,True,True,False,29.99,True,36.19,204,63,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Zombie Juice,@ZombieJuice,UCKGJCJ9qV-N6RDuTVWSp7GQ,Zombie 🤎 Juice,20200.0,2452942.0,20.0,,49.43999535791272,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:26:21,1.0,High Confidence,True,True,False,30.4,True,36.17,205,61,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Doechii,@iamdoechii,UCzhJcrh7fTbyxas7f_VUZCw,Iamdoechii,21300.0,1826360.0,19.0,,35.92250532104261,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 09:35:55,0.94,High Confidence,True,True,False,30.19,True,34.79,206,62,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Cormega,@Cormega,UCDr7PkdYaXaUsEbsbnq9wrA,Cormega,26900.0,10202408.0,21.0,,20.670652652412485,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:14:46,1.0,High Confidence,True,True,False,29.53,True,34.76,207,66,ZOMBIE_CHANNEL,True,"High subscriber base (26,900) with negligible viewership (20.7 views/day)."
|
||||||
|
Cakes da Killa,@cakesdakilla,UC-6mfQSP-XTly0HxJkPUkog,Cakes Da Killa,9930.0,1825568.0,17.0,,23.413367693653573,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:25:53,1.0,High Confidence,True,True,False,,True,33.44,208,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Zebra Katz,@zebrakatz,UCvLaOMuCZYPb7n3Efm6yhtQ,ZEBRA KATZ,26300.0,7208292.0,63.0,,4.8754878002000295,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:25:59,1.0,High Confidence,True,True,False,29.53,True,33.42,209,66,ZOMBIE_CHANNEL,True,"High subscriber base (26,300) with negligible viewership (4.9 views/day)."
|
||||||
|
billy woods,@backwoodzstudioz,UCsNN9hxtbHNWkN4OkVsPRmg,backwoodz studioz,22700.0,5279179.0,165.0,4803.0,92.34417938104993,-69.22633349351274,COMPLETE,1,2026-10-22 11:25:28,0.6,Medium Confidence,True,True,False,9.28,True,33.22,210,193,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Bishop Nehru,@BishopNehru,UCASDtXB7s9-px9N_2H22Maw,bishop nehru,60000.0,10905546.0,341.0,241.83333333333334,13.44324564449102,-82.37794510565945,COMPLETE,1,2026-10-22 11:26:39,1.0,High Confidence,True,True,False,4.53,True,32.51,211,198,ZOMBIE_CHANNEL,True,"High subscriber base (60,000) with negligible viewership (13.4 views/day)."
|
||||||
|
$uicideboy$,@Suicideboys,UC0Ej3md6NdNVAQ6bgFpYLEA,Kerem Yılmaz,2060.0,1892568.0,16.0,,39.18168968379894,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:22:52,0.6,Medium Confidence,True,True,False,,True,30.88,212,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Drodi,@Drodi,UCn08fOEp4vWi9hYJRSE2HyQ,DRODi,30600.0,17362354.0,65.0,568.6666666666666,63.60425916498281,-93.88146686990048,COMPLETE,1,2026-10-22 11:18:43,0.75,Medium Confidence,True,False,False,1.56,True,30.17,213,206,ZOMBIE_CHANNEL,True,"High subscriber base (30,600) with negligible viewership (63.6 views/day)."
|
||||||
|
Dax,@dax,UCbmbOwHmiI6v0y7LrCVnzAA,Dax Newman,13800.0,258573.0,54.0,,6.147743750330002,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:21:26,0.69,Medium Confidence,True,False,False,31.19,True,30.11,214,59,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Young Dolph,@youngdolph,UCuVMjVzveBK9tGKnUO3qofA,Starlife T.V.,60.0,6697.0,47.0,46.333333333333336,0.9570111319047332,100.0,COMPLETE,1,2026-10-22 11:00:06,0.6,Medium Confidence,True,True,False,,True,29.89,215,,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Dr. Dre,@drdre,UC-b8dfnUFzTPMw3P96aYJ5Q,drdreaftermath1,255.0,355824.0,1.0,,62.506057890114086,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:55:18,0.94,High Confidence,True,True,False,,True,28.19,216,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Babyface Ray,@BabyfaceRay,UCsirOC1PMaUbun_kcTZWYIg,Triple3,1140.0,598642.0,354.0,,0.3078842296286496,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:04:01,0.6,Medium Confidence,True,True,False,,True,27.68,217,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Tion Wayne,@TionWayne,UCniE_Mw3sM-RWymBS5YUFpg,Tion Wayne,14500.0,109610.0,3.0,,9.672503343950867,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:07:10,1.0,High Confidence,True,True,False,31.08,True,27.66,218,60,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Mike G,@MikeG,UCHOCaw0vJzbyjRCsITk6Esg,Mike G.,1540.0,1016071.0,152.0,,0.38080115108093193,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:03:02,0.75,Medium Confidence,True,False,False,,True,27.48,219,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Nas,@nas,UC5SAXwIWWMQu4l6Dy1II0Vw,NYCNastyNas,1330.0,505819.0,7.0,,13.87547062236042,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:54:58,0.69,Medium Confidence,True,False,False,,True,27.02,220,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Redman,@redman,UCR7shDso1IKq_6GqlAYa2QA,レッドマン REDMAN,312.0,349916.0,192.0,,0.6241817838287901,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:55:32,0.75,Medium Confidence,True,False,False,,True,26.98,221,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Anthony Hamilton,@AnthonyHamilton,UC9xiUG5vNVq8zP6zWqkWXlA,anthonyhamilton,972.0,230864.0,14.0,,2.8888047945946966,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:25:04,1.0,High Confidence,True,True,False,,True,26.16,222,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Kano,@TheKano,UC5m0MNzd8UrlaLQ592IlboA,TheKano,1360.0,378631.0,97.0,,0.03286884875305254,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:06:39,0.69,Medium Confidence,True,False,False,,True,25.23,223,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Classified,@classified,UCedXPEOU39D5aW2JkZt74lA,classified,52.0,167791.0,165.0,,0.2672978666681774,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:21:59,0.75,Medium Confidence,True,False,False,,True,24.74,224,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Ghetts,@Ghetts,UCOX0jCB0lR8FtyPYle8EqyA,ghetts,92.0,148133.0,1.0,,19.589880317144,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:07:29,1.0,High Confidence,True,True,False,,True,24.7,225,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Chamillionaire,@chamillionaire,UCRsbxjPGwyNdBptqXV7Pv-A,Chamillionaire,224.0,101447.0,4.0,,3.596962738661918,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:15:59,1.0,High Confidence,True,True,False,,True,23.16,226,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Ja Rule,@JaRule,UCNT16tMLjZ-UzH7eiF2ql5g,jarule,22.0,88294.0,20.0,,0.6100030603364249,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:57:20,1.0,High Confidence,True,True,False,,True,21.77,227,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Noname,@noname,UC9vLO5n3t353gLruylt5rqA,noname,150.0,6199.0,39.0,,0.016646111628975602,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:02:20,0.75,Medium Confidence,True,False,False,,True,21.15,228,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Rick Ross,@RickRoss,UCbTWNRyvFpcyybbJlFAsbUQ,rickross,106.0,12359.0,9.0,,0.18501933819735886,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:55:58,1.0,High Confidence,True,True,False,,True,19.89,229,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Armani Caesar,@ArmaniCaesar,UCTdbClj8Uz0FTZINKIJRP2A,Armanicaesar,279.0,10422.0,4.0,,0.57095562093227,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:02:32,1.0,High Confidence,True,True,False,,True,19.82,230,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Che Noir,@CheNoir,UCCPDWycF81zcmT33-g4UVDg,Griot David,65.0,41001.0,14.0,,0.5029355705295357,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:02:26,0.6,Medium Confidence,True,True,False,,True,19.67,231,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Action Bronson,@ActionBronson,UCocSg2BVl-dzF6Bqu4AGfOw,Domino Master,57.0,3389.0,34.0,,0.03162422947307707,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:02:49,0.6,Medium Confidence,True,True,False,,True,19.5,232,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Pop Smoke,@PopSmoke,UC9IaYM5dD5lx8vIa-H9bGsQ,Pop Smoke,136.0,2500.0,10.0,,0.04179247042715218,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:01:04,1.0,High Confidence,True,True,False,,True,19.39,233,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
The Game,@thegame,UCamcIB1XOOWcYsZQh2luIfQ,thegame,233.0,1184.0,13.0,,0.017854485736235434,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:57:15,0.75,Medium Confidence,True,False,False,,True,18.93,234,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Tommy Cash,@TOMMYCASH,UCfTT_8NBApXFDZOBiMpNMxw,tommycash,16.0,10005.0,6.0,,0.26199285785242904,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:23:22,1.0,High Confidence,True,True,False,,True,18.05,235,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Chaz French,@chazfrench,UCri50zksjHpiSGjyVqZjMXQ,Chaz French,4.0,1754.0,17.0,,0.015701076269775623,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:27:11,1.0,High Confidence,True,True,False,,True,17.99,236,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Dej Loaf,@dejloaf,UCC-zCFLurKWJq0wfTKcZK3g,DeJ Loaf,62.0,3019.0,1.0,,1.0395282121467389,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:05:40,1.0,High Confidence,True,True,False,,True,17.26,237,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
T.I.,@TI,UCqwttHwUNgg3pnqIxBBMZiA,T̈I,2210.0,279.0,1.0,,0.04218837929766944,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:55:48,1.0,High Confidence,True,True,False,,True,17.13,238,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Rakim,@TheGodRakim,UCxPnezcMwtaTqfXqZJEY6kw,RAKIM,36.0,1203.0,1.0,,1.410869450330989,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:13:40,1.0,High Confidence,True,True,False,,True,17.03,239,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Pastor Troy,@PastorTroy,UC4iK3jxieU6wf8ZMP6ct2pQ,pastortroy,1.0,6943.0,10.0,,0.09281360934060737,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:15:44,1.0,High Confidence,True,True,False,,True,17.03,239,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Paul Wall,@PaulWall,UCh4T0pQonIYPLMZpAWmkgbw,Paul Wall,410.0,3818.0,1.0,,0.5426765099541483,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:15:55,0.75,Medium Confidence,True,False,False,,True,16.98,241,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
The Alchemist,@alchemist,UCWOyFeAjY-h4zOi1Dq6H1Ig,alchemist,23.0,441.0,5.0,,0.05865740005851329,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:19:31,0.94,High Confidence,True,True,False,,True,16.3,242,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Bia,@PrincessBia,UCtGeAD1nHdttKrDilQYH3aA,Bianca Ferreira Santos,4.0,1280.0,9.0,,0.11790554879623397,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:05:22,0.69,Medium Confidence,True,False,False,,True,15.91,243,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Hodgy Beats,@hodgy,UCQU_mRYw78qdQ5Ro0iItwqw,Hodgy,14.0,6749.0,1.0,,0.9171673494414561,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:02:58,0.69,Medium Confidence,True,False,False,,True,15.39,244,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Tay Keith,@TayKeith,UCxnVohRp5AhAHPyZfhtv2mg,taykeith,6.0,3302.0,1.0,,0.7093204359509626,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:19:09,1.0,High Confidence,True,True,False,,True,15.37,245,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Black Thought,@BlackThought,UCE8DuVpxTvACnF6P5NpRnNA,Blackthought,6.0,1960.0,2.0,,0.3261482022399735,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:14:09,1.0,High Confidence,True,True,False,,True,15.36,246,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Outkast,@outkast,UC_EmR_tnB5Sgtfb6fi-Fe5g,outkast,57.0,1405.0,1.0,,0.18457493818359597,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:55:38,0.75,Medium Confidence,True,False,False,,True,14.79,247,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Princess Nokia,@PrincessNokia,UC6Cs4PgUqJYu-ColJkgQKTA,princessnokia,1.0,4846.0,1.0,,0.7532605767526876,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:06:04,1.0,High Confidence,True,True,False,,True,14.73,248,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Fat Nick,@fatnick,UC499HnWevdhXkM3QdMNOvAg,fatnick,4.0,2676.0,1.0,,0.35395118824280625,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:22:46,1.0,High Confidence,True,True,False,,True,14.49,249,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Southside,@Southside808MAFIA,UCZWB7Yt1LROd-4vK3WMlxEA,Southside,2.0,379.0,4.0,,0.08481547952790817,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:18:51,0.75,Medium Confidence,True,False,False,,True,14.03,250,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Petey Pablo,@PeteyPablo,UCevLDRQ1iyaVt7uOh4MB-kw,peteypablo,0.0,1386.0,2.0,,0.10464634209418122,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:15:50,1.0,High Confidence,True,True,False,,True,13.49,251,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Scarface,@BrotherMob,UC4A1VGe3DUe91rQSeLlAe9Q,Brothermob,6.0,973.0,2.0,,0.08279633922351967,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:56:40,0.6,Medium Confidence,True,True,False,,True,13.45,252,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
The Underachievers,@TheUnderachievers,UCphsrqhHhxrrRMMRgKE4ytQ,THEUNDERACHIEVERS,1.0,1696.0,2.0,,0.12017241488918179,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:26:13,0.75,Medium Confidence,True,False,False,,True,13.35,253,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Real Boston Richey,@RealBostonRichey,UCry9nlM1ohh3mkzUHIYXz8w,Amarizay Media,0.0,12.0,10.0,,0.0008541561559277939,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:18:12,0.6,Medium Confidence,True,True,False,,True,13.14,254,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Beanie Sigel,@BeanieSigel,UCgBnyQ5wQ3mP64YJwCB_FXg,Marvin F,6.0,100.0,2.0,,0.027273053844270756,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:14:13,0.6,Medium Confidence,True,True,False,,True,12.64,255,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Angel Haze,@AngelHaze,UC4K96jLWz4iTNLfgz43kuFQ,darksperm arias,2.0,926.0,1.0,,0.12665540339191148,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:06:20,0.6,Medium Confidence,True,True,False,,True,12.26,256,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Jadakiss,@RealJadakiss,UCFsXGOBWsnTbc1h76DBjuwQ,Jadakiss,0.0,3.0,2.0,,0.026183102898886618,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:57:05,1.0,High Confidence,True,True,False,,True,11.38,257,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Arin Ray,@ArinRay,UCWPgtckk3wJvj0Vq00vA7kw,arinray,0.0,164.0,1.0,,0.02464932905303363,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:24:57,0.75,Medium Confidence,True,False,False,,True,11.2,258,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Token,@tokenhiphop,UCDtQWudSjXfxyvnsdVyl4nQ,tokenhiphop,1170000.0,337749832.0,689.0,28339.0,5612.428526848735,100.0,COMPLETE,1,2026-10-22 11:21:08,0.34,Low / Emerging,False,False,False,45.85,False,59.23,,,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Dave,@Santandave,UC5-cg5RahETrjGu-r8zjYCQ,Santan Dave,2560000.0,1586015443.0,28.0,,56204.57596454707,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:06:29,0.34,Low / Emerging,False,False,False,23.01,False,52.14,,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Chlöe,@chloe,UCha4JJMZFxiDM_w_xiinn9g,Chloé,71100.0,5368205.0,264.0,2749.88,272.7934630400919,100.0,COMPLETE,1,2026-10-22 11:24:16,0.0,Low / Emerging,False,False,False,55.39,False,44.32,,,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Halle,@halle,UCRY85L378qsvQf1cYhBPrzg,Halle,575000.0,101709894.0,34.0,,917.2185019484491,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:24:20,0.4,Low / Emerging,False,False,False,23.7,False,42.28,,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Belly,@Belly,UCApVgpSBW-oKTHNBz4w9Lrg,Belly,426000.0,309186854.0,160.0,,227.17220253426552,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:22:02,0.4,Low / Emerging,False,False,False,24.09,False,41.97,,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Armand Hammer,@ArmandHammer,UCQFrMmsCQ2gs2Q-FFZOMJRQ,ARM & HAMMER Baking Soda,97700.0,153467784.0,283.0,1013.8,6151.145504372419,-97.15119089100453,COMPLETE,1,2026-10-22 11:25:36,0.35,Low / Emerging,True,False,False,5.66,False,41.32,,,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
|
||||||
|
Saba,@sabapivot,UCSpnyV4h2tmp7G_mwyjrUMg,Saba Pivot,181000.0,80123988.0,202.0,,116.44493630123574,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:37:45,0.34,Low / Emerging,False,False,False,25.56,False,39.44,,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Lord Apex,@LordApex,UCDZUyjSZSTuCPTJh0RhkOKQ,LawdAPEX,67900.0,15244987.0,63.0,,37.26264026840499,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:25:50,0.25,Low / Emerging,False,True,False,27.45,False,33.22,,,ZOMBIE_CHANNEL,True,"High subscriber base (67,900) with negligible viewership (37.3 views/day)."
|
||||||
|
2Pac,@2pac,UCyIDWVf-nwdO6yvGHw_53Qw,Tupac Shakur,17900.0,3286053.0,9.0,,64.89168902622308,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:55:15,0.35,Low / Emerging,True,False,False,30.83,False,30.79,,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Tony Yayo,@TonyYayo,UCy_qlXYa5fOx63lbr960pSg,Tony Tony,10700.0,5879528.0,41.0,,19.437579112507365,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:14:29,0.25,Low / Emerging,False,True,False,32.03,False,29.84,,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Buddy,@Buddy,UCHF2jvB2rQl4ouuO0N4kCbA,Buddy,8250.0,217465.0,84.0,,1.7870456114477415,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:01:50,0.4,Low / Emerging,False,False,False,,False,26.54,,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Mist,@mistmusic,UCiAucC06h7VA6TMNV1-wLYg,Mist Music,1160.0,118081.0,18.0,,5.672971227643788,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:08:03,0.4,Low / Emerging,False,False,False,,False,24.56,,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Heems,@himanshusuri,UCHk08OSG9C7TFRxCsAWdSXA,Himanshu Suri,57.0,10806.0,16.0,,0.4163710418279303,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:27:02,0.35,Low / Emerging,True,False,False,,False,18.23,,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Omen,@omen,UCq8wK_22WcV0R1IYq2Uc4Kg,Ledge,100000.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:02:11,0.6,Medium Confidence,True,True,False,,False,15.03,,,ZOMBIE_CHANNEL,True,"High subscriber base (100,000) with negligible viewership (0.0 views/day)."
|
||||||
|
JT,@TheGirlJT,UCmYY4-4XfbpX5SxV2AXk6qw,THE_BLESSING,3.0,1132.0,2.0,,1.8786181228964818,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:05:31,0.25,Low / Emerging,False,True,False,,False,14.27,,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Flying Lotus,@flyinglotus,UC6An_wEqusDnouBmzQtHheA,Flying Lotus,3590.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:19:49,1.0,High Confidence,True,True,False,,False,14.12,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Freeway,@PhillyFreeway,UCe-W3ZRbzDFspmcHIv4kvVg,PHILLY FREEWAY,20.0,110.0,1.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:14:16,0.94,High Confidence,True,True,False,,False,13.46,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Mike Jones,@MikeJones,UCccVLcC_mXMUQYtsWyeR8Og,mikejones,163.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:16:06,1.0,High Confidence,True,True,False,,False,12.07,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Yung Manny,@yungmanny,UCq2dIggerIf3yUptEyxyucg,ِ,2430.0,0.0,0.0,,0.0,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:27:31,0.35,Low / Emerging,True,False,False,,False,12.06,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Boi-1da,@boi1da,UC26B3MXy4S7Tj3YPpWHWvHg,boi1da,157.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:19:20,1.0,High Confidence,True,True,False,,False,12.04,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
SoFaygo,@imsofaygo,UCWr3KwXfuMyMIn_in0aEp0g,SoFaygo,135.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:05:14,1.0,High Confidence,True,True,False,,False,11.94,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Jay Rock,@JayRock,UChOFcVvoYzK6mKBNm-OHOGg,jayrock,88.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 10:58:30,1.0,High Confidence,True,True,False,,False,11.66,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Joyner Lucas,@JoynerLucas,UCBCeu9ddOBTY657g86rs3XA,joyner lucas,68.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 10:59:03,1.0,High Confidence,True,True,False,,False,11.49,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Iayze,@iayze,UCCSkzoIUxT2UO3O7e49CR6g,AkimaBOY,13.0,125.0,1.0,,0.033036155076491776,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:17:49,0.25,Low / Emerging,False,True,False,,False,11.46,,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Lil Dude,@lildude,UCHoAfN5pPN5zyv1iFcwpJnQ,Colin,3.0,212.0,1.0,,0.15657540775268505,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:27:43,0.35,Low / Emerging,True,False,False,,False,11.4,,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Ice Cube,@IceCube,UCt-Zv4EjvQBMoY8ohZ7361Q,icecube,51.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 10:55:21,1.0,High Confidence,True,True,False,,False,11.3,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Big Daddy Kane,@BigDaddyKane,UCZYAK-IDwg8cYV0ZNtdXXkg,bigdaddykane,44.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:13:43,1.0,High Confidence,True,True,False,,False,11.21,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Chip,@OfficialChip,UC0XCesM2KjAJXuaZwJqTmVw,Chip,290.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:08:11,0.4,Low / Emerging,False,False,False,,False,10.96,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Dreezy,@dreezy,UC9wXtR39GhbYMdjc9maJCPQ,dreezy,26.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:05:43,1.0,High Confidence,True,True,False,,False,10.87,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
E-40,@e40,UCUipCeRRkBrgc7i9Nj8eFNg,e40,64.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 10:56:43,0.65,Medium Confidence,False,True,False,,False,10.65,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Osamason,@osamason,UCi070EeStoEFw7qmRuDsEPA,osamason,18.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:17:30,1.0,High Confidence,True,True,False,,False,10.63,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Ice Spice,@IceSpicee,UCg_2uXqIYOI5gfO3k7lS1RQ,Icespicee,14.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 09:35:57,0.94,High Confidence,True,True,False,,False,10.35,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Snak The Ripper,@snaktheripper,UCA5vTxSaCAtMJ4urgXczT5w,SNAKTHERIPPER,9.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:21:50,1.0,High Confidence,True,True,False,,False,10.21,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Earl Sweatshirt,@earlsweatshirt,UCWZNQjbzof4ETDHVPOkJ-LA,EarlSweatshirt,8.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:02:53,1.0,High Confidence,True,True,False,,False,10.14,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
U-God,@UGod,UCQ8RfOm09o66EgNQ9oAWsUA,UGOD,7.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:14:57,1.0,High Confidence,True,True,False,,False,10.06,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
ASAP Ferg,@asapferg,UCUj7iYGlyUpk1QRJbB1BbIw,ASAP Ferg,24.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 10:58:16,0.65,Medium Confidence,False,True,False,,False,10.06,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Unknown T,@UnknownT,UC_yOn48nwI4-5zW_NNrRefQ,unknownT,7.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:07:02,1.0,High Confidence,True,True,False,,False,10.06,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Kankan,@kankan,UCoP0jKakdCTaWEoZOfIMHRQ,kankan,10.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:17:45,0.75,Medium Confidence,True,False,False,,False,9.76,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Big Pun,@BigPun,UCP0bFJYf8QC8MpgnPMROEGw,bigpun,4.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 10:56:36,1.0,High Confidence,True,True,False,,False,9.74,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Lil Xan,@lilxan,UCoquPm0tiGrOCOU-enQ-qGQ,lilxan,4.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:22:36,1.0,High Confidence,True,True,False,,False,9.74,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
G-Eazy,@GEazy,UCKv91xwk4M7AJSqNPeRh2rw,Baller Lyrics,16.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 10:58:49,0.6,Medium Confidence,True,True,False,,False,9.71,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Elucid,@elucid,UCZHhKEmLo3qTO3EX5-WgEbw,loki,0.0,25.0,1.0,,0.004701371234536349,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:25:32,0.35,Low / Emerging,True,False,False,,False,9.69,,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
CJ Fly,@flyhighteam,UCtbXwhkQT8tLmiSjt6bJ8BA,Fly High,1.0,11.0,1.0,,0.011986903154848436,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:26:36,0.25,Low / Emerging,False,True,False,,False,9.66,,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
|
||||||
|
Sada Baby,@SadaBaby,UC_Y8JEw1kegRagyGcsvuhug,Sada Baby,3.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:04:23,1.0,High Confidence,True,True,False,,False,9.6,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Too $hort,@tooshort,UChjOFNGG5xm9eR9lN3X-lhA,tooshort,11.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 10:56:47,0.6,Medium Confidence,True,True,False,,False,9.5,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
D-Block Europe,@DBlockEurope,UCf2zm35V7sOu6xqpsLGApyw,D Block Europe,2.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:07:32,1.0,High Confidence,True,True,False,,False,9.4,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
GloRilla,@GloRillaOfficial,UCxA369Q3PQetW1_EHzT1jyA,GloRilla Official,1.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 09:35:56,1.0,High Confidence,True,True,False,,False,9.13,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Takeoff,@TakeoffYRN,UCL_75QAVD7FWmKxiuzez0Jg,TakeOff,1.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 10:59:47,1.0,High Confidence,True,True,False,,False,9.13,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Young Adz,@YoungAdz,UC9E_-3b3bNd1bPHJ3k5NT1g,youngadz,1.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:07:35,1.0,High Confidence,True,True,False,,False,9.13,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Hunxho,@Hunxho,UCaDby8c3cNu_4KTLRZHiBsw,Hunxho,1.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:18:17,1.0,High Confidence,True,True,False,,False,9.13,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
G Perico,@GPerico,UC-I9BB2qgwfgV79Pi-3UnMw,pedro picapiedra,4.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:03:25,0.6,Medium Confidence,True,True,False,,False,8.97,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
TrDee,@TrDee,UCxCiUUnbAaKtAyH17kUxVig,trdee,2.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:17:59,0.75,Medium Confidence,True,False,False,,False,8.93,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
StanWill,@StanWill,UCXtSW6bhRpaxTI2fBO4HX2g,Stan Williams,2.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:17:55,0.69,Medium Confidence,True,False,False,,False,8.82,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
42 Dugg,@42Dugg,UCjb762-ISoKEN2vaWDQTBMA,42dugg,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:03:54,1.0,High Confidence,True,True,False,,False,8.67,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Dirtbike LB,@DirtbikeLB,UCABR1s2XPINNv_U_-PGY0CQ,DirtbikeLB,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:07:38,1.0,High Confidence,True,True,False,,False,8.67,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Kool A.D.,@koolad,UC5c1wjl80-w6hf7fSuMylkw,koolad,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:27:05,1.0,High Confidence,True,True,False,,False,8.67,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Das Racist,@dasracist,UCIFAZqUwJSE83N-1lvMmEpg,Das Racist,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:27:08,1.0,High Confidence,True,True,False,,False,8.67,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
A$AP Rocky,@asvpxrocky,UCQvBJ3KsFv7rmdBb6m2yBZw,asvpxrocky,2.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 10:36:19,0.6,Medium Confidence,True,True,False,,False,8.65,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
A Tribe Called Quest,@ATCQ,UCvOHPF-DN1y9s_Tm6x2bRuA,Cheese Lover 67,2.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:14:03,0.6,Medium Confidence,True,True,False,,False,8.65,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
RMC Mike,@RmcMike,UCHG1_qTaCaSxcmnrtA9nlJA,Regina McMichael,2.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:04:14,0.6,Medium Confidence,True,True,False,,False,8.65,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Z-Ro,@TheRealZRo,UCQK0157RABjLC3ZN08tT9wg,TheRealZRo,2.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:16:10,0.59,Medium Confidence,False,True,False,,False,8.63,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
JID,@JIDsv,UCtutsNr3hicMg4uwbv9YzYQ,jidsv,1.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 09:35:56,0.69,Medium Confidence,True,False,False,,False,8.57,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
B.G.,@BGMtH,UCJ5RW38548BAovbpKtcsXTQ,BGMTH,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:15:37,0.94,High Confidence,True,True,False,,False,8.57,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Aminé,@heyamine,UCmEZ_XWUuac1G3wfO8kq0Lg,Hey Amine,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:01:38,0.94,High Confidence,True,True,False,,False,8.57,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Larry June,@LarryJuneTFM,UCKG9RcBxRNrQXccJMpk4iCQ,LarryjuneTFM,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:03:19,0.94,High Confidence,True,True,False,,False,8.57,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Jme,@JmeBBK,UC3zrGtvr6duMGxamLI-Yfow,jmebbk,1.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:06:35,0.69,Medium Confidence,True,False,False,,False,8.57,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Giggs,@GiggsOfficial,UCBQ6UIO1JAyYqzxlQIuZKuA,GiggsOfficial,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:08:18,0.94,High Confidence,True,True,False,,False,8.57,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
YG,@4hunnid,UCNGY-0d3PT2anaC81YUI5PQ,kat,4.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 10:58:34,0.35,Low / Emerging,True,False,False,,False,8.48,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Ludacris,@Ludacris,UCiRh4A7TnKMCbQcIK91ZXDA,im back,1.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 10:55:44,0.6,Medium Confidence,True,True,False,,False,8.4,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Slick Rick,@SlickRickTheRuler,UCxRHFoHJmLj0YJioh-XNDuA,Richard J Fury,1.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:13:46,0.6,Medium Confidence,True,True,False,,False,8.4,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Big Flame,@bigflame,UC5IGsTgwhYceqkb-fh0eliQ,ハート!?,1.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:27:46,0.6,Medium Confidence,True,True,False,,False,8.4,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Payroll Giovanni,@payrollgiovanni,UCGb6eqQpk2PXL1IF5IZnqYg,Payroll Giovanni,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:04:29,0.75,Medium Confidence,True,False,False,,False,8.24,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Paris Texas,@paristexas,UCVOXWwOI8OJV2jRT0Zc_hlQ,paristexas,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:20:29,0.75,Medium Confidence,True,False,False,,False,8.24,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Spillage Village,@spillagevillage,UCbNegc_Y69GOQwnjBdTKvSw,SpillageVillage,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:20:46,0.75,Medium Confidence,True,False,False,,False,8.24,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Phil Ade,@philade,UCoPamDUcoGEmoCn_xPLGQwQ,Philade,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:27:13,0.75,Medium Confidence,True,False,False,,False,8.24,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Wale,@wale,UCrcOEJR2M83DCO01aeDHeeQ,Wall,2.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 10:58:06,0.35,Low / Emerging,True,False,False,,False,8.18,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
dvsn,@dvsndvsn,UCQt3GeG337Cb-QGVH5NRO0w,Dvsn Dvsn,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:22:13,0.69,Medium Confidence,True,False,False,,False,8.14,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Ratking,@ratkingnyc,UCBS0yBTQxxBv6UMat-DP1tQ,Rat King NYC,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:26:51,0.69,Medium Confidence,True,False,False,,False,8.14,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Wheezy,@WheezyOuttaHere,UCP8aia-sQQqsL_aPjQcLciA,WHEEZY,1.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:19:13,0.4,Low / Emerging,False,False,False,,False,8.04,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
GZA,@TheGeniusGZA,UCEoPurCFRVmlMKbwBVlLZEw,Dale DaSilva,2.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 10:56:22,0.25,Low / Emerging,False,True,False,,False,7.99,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Future,@FutureOfficial,UCq0QYvEbA-VBfoXqfZM1euQ,Táo Office ,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 10:35:21,0.6,Medium Confidence,True,True,False,,False,7.98,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Cardi B,@iamcardib,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Young Thug,@youngthugonline,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
DaBaby,@DaBabyOfficial,UCwhXK-tgApWwJc-rQNCghdQ,Walter ,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 10:36:37,0.6,Medium Confidence,True,True,False,,False,7.98,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Pusha T,@pushat,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Smino,@Sminoofcl,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Isaiah Rashad,@IsaiahRashad,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Jay-Z,@JayZ,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Jeezy,@jeezy,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Talib Kweli,@TalibKweli,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Raekwon,@Raekwon,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Bun B,@BunBofUGK,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Twista,@twista,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Cam'ron,@mr_camron,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Styles P,@stylesp,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Chingy,@Chingy,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Soulja Boy,@SouljaBoyTellem,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Kool G Rap,@KoolGRap,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
KRS-One,@KRSOne,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
The Roots,@theroots,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Young Buck,@buckmentality,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Inspectah Deck,@InspectahDeck,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Masta Killa,@MastaKilla,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Killah Priest,@KillahPriest,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Krayzie Bone,@KrayzieBone,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Layzie Bone,@LayzieBone,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Bizzy Bone,@BizzyBone,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Mannie Fresh,@MannieFresh,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Big Pokey,@BigPokey,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Devin the Dude,@DevinTheDude,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Project Pat,@ProjectPat,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Juicy J,@juicyj,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Schoolboy Q,@ScHoolboyQ,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Ab-Soul,@AbSoul,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Hopsin,@Hopsintv,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Quavo,@QuavoHuncho,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Slim Jxmmi,@SlimJxmmi,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Rich Homie Quan,@RichHomieQuan,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Key Glock,@KeyGlock,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Yo Gotti,@yogottivideos,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Kevin Gates,@kevingates,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Boosie Badazz,@boosiebadazz,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
King Von,@KingVon,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Trippie Redd,@TrippieRedd,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Ski Mask the Slump God,@SkiMaskTheSlumpGod,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Cordae,@cordae,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Deante' Hitchcock,@DeanteHitchcock,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Mick Jenkins,@mickjenkins,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Rome Streetz,@RomeStreetz,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Conway the Machine,@WHOISCONWAY,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Benny The Butcher,@BennyTheButcher,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Boldy James,@BoldyJames,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Roc Marciano,@rocmarciano,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Maxo Kream,@MaxoKream,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Big K.R.I.T.,@BigKRIT,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Curren$y,@currensy,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Smoke DZA,@SmokeDZA,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Jay Worthy,@JayWorthy,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Veeze,@veeze__,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
YN Jay,@YNJayCoochieMan,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Bfb Da Packman,@BfbDaPackman,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Fredo Santana,@FredoSantana,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Jay Critch,@JayCritch,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
SSGKobe,@ssgkobe,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Saweetie,@saweetie,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Yung Miami,@YungMiami,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Tierra Whack,@TierraWhack,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Brooke Candy,@BrookeCandy,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Stormzy,@StormzyTV,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Dizzee Rascal,@dizzeerascal,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Aitch,@AitchOfficial,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Digga D,@DiggaD,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
K-Trap,@ktrap_official,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
M Huncho,@mhuncho,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Nines,@Nines,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Potter Payper,@PotterPayper,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Rimzee,@Rimzee,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
MoStack,@MoStack,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Stefflon Don,@stefflondon,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Summrs,@summrs,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
BabyTron,@BabyTron,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Luh Tyler,@luhtyler,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Rob49,@Rob49,UCI8kw6HS4-E3tnyl5-7SFlg,robofox,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:18:24,0.6,Medium Confidence,True,True,False,,False,7.98,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Hit-Boy,@HitBoy,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Westside Boogie,@westsideboogie,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Tom MacDonald,@AllHailTomMacDonald,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Merkules,@Merkules,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Night Lovell,@NightLovell,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Lil Skies,@lilskies,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Smokepurpp,@smokepurpp,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Lil Pump,@lilpump,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Xavier Wulf,@TheHollowSquad,UCI8TtbCN45bwg7LlX6B0nVQ,hollowsquad,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:22:59,0.6,Medium Confidence,True,True,False,,False,7.98,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Chris Travis,@WaterBoyz,UCXOKvQXx7h1QYrR52PzqmUA,waterboyz,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:23:01,0.6,Medium Confidence,True,True,False,,False,7.98,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Yung Lean,@yunglean,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Bladee,@bladee,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Ecco2k,@ecco2k,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Thaiboy Digital,@thaiboydigital,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
BBNO$,@bbnomula,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Jhené Aiko,@JheneAiko,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Tinashe,@Tinashe,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Brent Faiyaz,@brentfaiyaz,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Lucky Daye,@LuckyDaye,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Quelle Chris,@quellechris,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Open Mike Eagle,@OpenMikeEagle,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Moor Mother,@MoorMother,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Flatbush Zombies,@TheGloriousDead,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Meechy Darko,@MeechyDarko,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Kirk Knight,@kirkknight,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Nyck Caution,@nyckcaution,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Fat Trel,@FatTrel,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
NoCap,@NoCap,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Rylo Rodriguez,@RyloRodriguez,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Q Da Fool,@qdafool,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Goonew,@goonew,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Kasher Quon,@kasherquon,UCz4vFlS1BzT-KpYdlTRUT1A,David Margineantu,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:27:54,0.6,Medium Confidence,True,True,False,,False,7.98,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
ScarLip,@ScarLip,UCFUH5T1ddGVbha9otxp6rFg,pdc,5.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:24:06,0.0,Low / Emerging,False,False,False,,False,7.89,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Lil Baby,@LilBaby,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
EARTHGANG,https://www.youtube.com/@EarthgangOfficial,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
UGK,@UGKfilmz,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Cassidy,@CASSIDY_LARSINY,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Mobb Deep,@mobbdeep,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Havoc,@HavocOfMobbDeep,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
AZ,@QuietMoneyAZ,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Juvenile,@Juvenile,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Mystikal,@Mystikal,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
David Banner,@DavidBanner,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Lil Keke,@DonKeKe,UCHx6MENYjoqxP38F9SYFNRA,Don keke,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:16:27,0.35,Low / Emerging,True,False,False,,False,7.55,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
NBA YoungBoy,@nba_youngboy,UCXkT3vaYMF80LKZIMRLkHEg,YoungBoy Never Broke Again,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:00:36,0.35,Low / Emerging,True,False,False,,False,7.55,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Reason,@reasontde,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Bas,@fiendbassy,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Cozz,@cody_macc,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Lute,@lute_west9,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
100k Track,@100kTrack,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Foolio,@JulioFoolio,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Chika,@chika,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Fredo,@Fredo,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
BashfortheWorld,@bashfortheworld,UChTS28SfhsV0AORN80S6crw,cooler ice,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:18:48,0.35,Low / Emerging,True,False,False,,False,7.55,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
Madlib,@MadlibInvazion,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Sango,@sango,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
AG Club,@agclub,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Grip,@Grip_SS,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Cal Scruby,@CalScruby,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Pouya,@pouya,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
BONES,@TeamSESH,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Oshun,@oshunnyc,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Erick the Architect,@erickarchitect,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Hak,@haknyc,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Sporting Life,@sportinglife,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Despot,@despotnyc,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Shy Glizzy,@ShyGlizzy,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
KrispyLife Kidd,@krispylife_kidd,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Trae tha Truth,@traethatruth,,,,,,,,,FAILED_LOOKUP,0,,0.25,Low / Emerging,False,True,False,,False,7.37,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
6ix9ine,@Tekashi69,,,,,,,,,FAILED_LOOKUP,0,,0.25,Low / Emerging,False,True,False,,False,7.37,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Autumn!,@twinuzis,,,,,,,,,FAILED_LOOKUP,0,,0.25,Low / Emerging,False,True,False,,False,7.37,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
K-os,@kosinfluence,,,,,,,,,FAILED_LOOKUP,0,,0.25,Low / Emerging,False,True,False,,False,7.37,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
SpaceGhostPurrp,@SpaceGhostPurrp,,,,,,,,,FAILED_LOOKUP,0,,0.25,Low / Emerging,False,True,False,,False,7.37,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Mos Def,@yasiinbey,,,,,,,,,FAILED_LOOKUP,0,,0.0,Low / Emerging,False,False,False,,False,6.94,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Prodigy,@ProdigyOfMobbDeep,,,,,,,,,FAILED_LOOKUP,0,,0.0,Low / Emerging,False,False,False,,False,6.94,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
SiR,@inglewoodSiR,,,,,,,,,FAILED_LOOKUP,0,,0.0,Low / Emerging,False,False,False,,False,6.94,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Dom Genesis,@DomsGenesis,,,,,,,,,FAILED_LOOKUP,0,,0.0,Low / Emerging,False,False,False,,False,6.94,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Homixide Gang,@HomixideGang,UCXqRBWZBjd-cNsUumTj-1Ug,Naomi Flores,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:17:27,0.0,Low / Emerging,False,False,False,,False,6.94,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
|
||||||
|
BabySmoove,@babysmoove,,,,,,,,,FAILED_LOOKUP,0,,0.0,Low / Emerging,False,False,False,,False,6.94,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
|
||||||
|
Binary file not shown.
@@ -1,91 +1,196 @@
|
|||||||
|
"""
|
||||||
|
main.py
|
||||||
|
Production CSV-driven batch pipeline:
|
||||||
|
- Loads seed artists from data/seed_artists_500.csv via RosterLoader
|
||||||
|
- Checkpoint-aware batch execution (saves every CHUNK_SIZE artists)
|
||||||
|
- tqdm progress tracking with ETA
|
||||||
|
- Exports:
|
||||||
|
1. enriched_artists.csv (Full master dataset)
|
||||||
|
2. identity_verification_audit.xlsx (Separate multi-tab Excel workbook)
|
||||||
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import argparse
|
import sys
|
||||||
|
import time
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
|
from tqdm import tqdm
|
||||||
|
|
||||||
from collectors.youtube_collector import YouTubeCollector
|
from collectors.youtube_collector import YouTubeCollector
|
||||||
from verifiers.musicbrainz_verifier import MusicBrainzVerifier
|
from verifiers.musicbrainz_verifier import MusicBrainzVerifier
|
||||||
from verifiers.wikidata_verifier import WikidataVerifier
|
from verifiers.wikidata_verifier import WikidataVerifier
|
||||||
from core.confidence_scorer import ConfidenceScorer
|
from core.confidence_scorer import ConfidenceScorer
|
||||||
from core.ranking_engine import RankingEngine
|
from core.ranking_engine import HIFFIRankingEngine
|
||||||
|
from core.health_detector import ChannelHealthDetector
|
||||||
|
from data.roster_loader import RosterLoader
|
||||||
|
|
||||||
def run_pipeline(input_csv: str = "cleaned_artists_inventory.csv", limit: int = 10, output_csv: str = "enriched_artists.csv"):
|
|
||||||
load_dotenv()
|
load_dotenv()
|
||||||
api_key = os.getenv("YOUTUBE_API_KEY")
|
|
||||||
|
|
||||||
if not api_key:
|
CSV_ROSTER_PATH = "data/seed_artists_500.csv"
|
||||||
print("[Notice] No YOUTUBE_API_KEY found in .env. Running YouTube in offline fallback mode.")
|
OUTPUT_CSV_PATH = "enriched_artists.csv"
|
||||||
|
OUTPUT_EXCEL_PATH = "identity_verification_audit.xlsx"
|
||||||
|
CHUNK_SIZE = 25
|
||||||
|
|
||||||
print(f"Loading data from {input_csv}...")
|
|
||||||
df = pd.read_csv(input_csv)
|
|
||||||
|
|
||||||
# Process only the selected sample batch limit
|
def export_verification_excel(df: pd.DataFrame, excel_path: str = OUTPUT_EXCEL_PATH):
|
||||||
batch_df = df.head(limit).copy()
|
"""
|
||||||
print(f"Processing sample batch of {len(batch_df)} artists...\n")
|
Exports a clean, multi-tab Excel workbook dedicated to identity verification audits.
|
||||||
|
"""
|
||||||
|
# Columns relevant for identity verification
|
||||||
|
audit_cols = [
|
||||||
|
"name",
|
||||||
|
"channel_title",
|
||||||
|
"identifier",
|
||||||
|
"confidence_score",
|
||||||
|
"confidence_tier",
|
||||||
|
"status_flag",
|
||||||
|
"mb_verified",
|
||||||
|
"wd_verified",
|
||||||
|
"cross_referenced",
|
||||||
|
]
|
||||||
|
|
||||||
# Initialize all services
|
# Filter available columns defensively
|
||||||
yt_collector = YouTubeCollector(api_keys=[api_key] if api_key else None)
|
existing_cols = [c for c in audit_cols if c in df.columns]
|
||||||
|
audit_df = df[existing_cols].copy()
|
||||||
|
|
||||||
|
# Sort by confidence score descending
|
||||||
|
if "confidence_score" in audit_df.columns:
|
||||||
|
audit_df = audit_df.sort_values(by="confidence_score", ascending=False)
|
||||||
|
|
||||||
|
# Flagged subset for low confidence or failed lookups
|
||||||
|
flagged_df = audit_df[
|
||||||
|
(audit_df["confidence_score"] < 0.50)
|
||||||
|
| (audit_df["status_flag"].isin(["FAILED_LOOKUP", "LOOKUP_ERROR"]))
|
||||||
|
].copy()
|
||||||
|
|
||||||
|
with pd.ExcelWriter(excel_path, engine="openpyxl") as writer:
|
||||||
|
audit_df.to_excel(writer, sheet_name="Identity Verification Audit", index=False)
|
||||||
|
flagged_df.to_excel(writer, sheet_name="Flagged & Unresolved", index=False)
|
||||||
|
|
||||||
|
print(f"📊 Separate Identity Verification workbook exported to '{excel_path}'")
|
||||||
|
|
||||||
|
|
||||||
|
def run_batch_pipeline(roster_path: str = CSV_ROSTER_PATH, force_refresh: bool = False):
|
||||||
|
print(f"\n========================================================")
|
||||||
|
print(f" HIFFI PRODUCTION INGESTION PIPELINE")
|
||||||
|
print(f" Source: {roster_path} | Checkpoint Chunk: {CHUNK_SIZE}")
|
||||||
|
print(f"========================================================\n")
|
||||||
|
|
||||||
|
loader = RosterLoader(file_path=roster_path)
|
||||||
|
artists = loader.load_roster()
|
||||||
|
total_artists = len(artists)
|
||||||
|
|
||||||
|
collector = YouTubeCollector()
|
||||||
mb_verifier = MusicBrainzVerifier()
|
mb_verifier = MusicBrainzVerifier()
|
||||||
wd_verifier = WikidataVerifier()
|
wd_verifier = WikidataVerifier()
|
||||||
scorer = ConfidenceScorer()
|
conf_scorer = ConfidenceScorer()
|
||||||
ranking_engine = RankingEngine()
|
ranking_engine = HIFFIRankingEngine()
|
||||||
|
health_detector = ChannelHealthDetector()
|
||||||
|
|
||||||
results = []
|
all_records = []
|
||||||
|
|
||||||
for idx, row in batch_df.iterrows():
|
progress_bar = tqdm(
|
||||||
name = str(row.get("Name", "")).strip()
|
total=total_artists,
|
||||||
yt_url = str(row.get("Youtube", "")).strip()
|
desc="Processing Roster",
|
||||||
print(f"[{idx + 1}/{len(batch_df)}] Analyzing Artist: '{name}'")
|
unit="artist",
|
||||||
|
ncols=95,
|
||||||
|
bar_format="{l_bar}{bar}| {n_fmt}/{total_fmt} [{elapsed}<{remaining}, {rate_fmt}]"
|
||||||
|
)
|
||||||
|
|
||||||
# 1. Collect YouTube 5 metrics
|
for i, artist in enumerate(artists):
|
||||||
yt_data = yt_collector.get_channel_metrics(yt_url, fetch_recent_videos=False)
|
name = artist["name"]
|
||||||
|
ident = artist["identifier"]
|
||||||
|
progress_bar.set_postfix_str(f"Analyzing: {name[:18]}")
|
||||||
|
|
||||||
# 2. Verify against MusicBrainz
|
record = {**artist}
|
||||||
mb_data = mb_verifier.verify_artist(name)
|
|
||||||
|
|
||||||
# 3. Verify against Wikidata
|
try:
|
||||||
wd_data = wd_verifier.verify_artist(name)
|
# 1. Fetch channel metrics
|
||||||
|
yt = collector.get_channel_metrics(
|
||||||
|
ident,
|
||||||
|
fetch_recent_videos=True,
|
||||||
|
force_refresh=force_refresh,
|
||||||
|
)
|
||||||
|
record.update(yt)
|
||||||
|
|
||||||
# 4. Compute composite confidence score
|
# 2. Verify identity across MusicBrainz & Wikidata
|
||||||
score_data = scorer.calculate_score(yt_data, mb_data, wd_data)
|
mb = mb_verifier.verify_artist(name)
|
||||||
|
wd = wd_verifier.verify_artist(name)
|
||||||
|
|
||||||
# Merge results into record
|
yt_with_name = {**yt, "name": name}
|
||||||
results.append({
|
conf_result = conf_scorer.calculate_score(
|
||||||
"UID": row.get("UID", ""),
|
yt_metrics=yt_with_name, mb_result=mb, wd_result=wd
|
||||||
"Name": name,
|
)
|
||||||
"Youtube": yt_url,
|
|
||||||
"Instagram": row.get("Instagram", ""),
|
# Record verification sub-metrics for Excel export
|
||||||
"Location": row.get("Location", ""),
|
record["confidence_score"] = float(conf_result.get("composite_confidence", 0.0))
|
||||||
"yt_subscribers": yt_data.get("subscribers", 0),
|
record["confidence_tier"] = conf_result.get("confidence_tier", "Unknown")
|
||||||
"yt_lifetime_views": yt_data.get("lifetime_views", 0),
|
sub_scores = conf_result.get("sub_scores", {})
|
||||||
"yt_video_count": yt_data.get("video_count", 0),
|
record["mb_verified"] = bool(sub_scores.get("musicbrainz", 0.0) == 1.0)
|
||||||
"yt_recent_avg_views": yt_data.get("recent_avg_views", 0),
|
record["wd_verified"] = bool(sub_scores.get("wikidata", 0.0) == 1.0)
|
||||||
"yt_momentum_30d": yt_data.get("momentum_30d", 0.0),
|
record["cross_referenced"] = bool(sub_scores.get("cross_referenced", False))
|
||||||
"yt_status": yt_data.get("status", ""),
|
|
||||||
"mb_verified": mb_data.get("verified", False),
|
except Exception as e:
|
||||||
"mb_id": mb_data.get("mbid", ""),
|
record.update({
|
||||||
"wd_verified": wd_data.get("verified", False),
|
"channel_id": None,
|
||||||
"wd_id": wd_data.get("wikidata_id", ""),
|
"channel_title": None,
|
||||||
"composite_confidence": score_data.get("composite_confidence", 0.0),
|
"subscriber_count": None,
|
||||||
"confidence_tier": score_data.get("confidence_tier", "Low")
|
"lifetime_views": None,
|
||||||
|
"video_count": None,
|
||||||
|
"recent_avg_views": None,
|
||||||
|
"daily_view_velocity": None,
|
||||||
|
"momentum_30d": None,
|
||||||
|
"status_flag": "LOOKUP_ERROR",
|
||||||
|
"data_complete": 0,
|
||||||
|
"confidence_score": 0.0,
|
||||||
|
"confidence_tier": "Error / Unresolved",
|
||||||
|
"mb_verified": False,
|
||||||
|
"wd_verified": False,
|
||||||
|
"cross_referenced": False,
|
||||||
|
"error_notes": str(e),
|
||||||
})
|
})
|
||||||
|
|
||||||
raw_out_df = pd.DataFrame(results)
|
all_records.append(record)
|
||||||
|
progress_bar.update(1)
|
||||||
|
|
||||||
# 5. Apply Log-Transformation + Min-Max Scaling Ranking Engine
|
# Intermediate checkpoint every CHUNK_SIZE
|
||||||
print("\nApplying logarithmic normalization & Min-Max ranking...")
|
if (i + 1) % CHUNK_SIZE == 0 or (i + 1) == total_artists:
|
||||||
out_df = ranking_engine.normalize_metrics(raw_out_df)
|
temp_df = pd.DataFrame(all_records)
|
||||||
|
ranked_temp = ranking_engine.score_and_rank(temp_df)
|
||||||
|
health_temp = health_detector.evaluate_dataframe(ranked_temp)
|
||||||
|
health_temp.to_csv(OUTPUT_CSV_PATH, index=False)
|
||||||
|
|
||||||
out_df.to_csv(output_csv, index=False)
|
progress_bar.close()
|
||||||
print(f"Pipeline run complete. Results saved to '{output_csv}'.\n")
|
|
||||||
|
# Final scoring and health detection
|
||||||
|
print("\n--- Finalizing Official HIFFI Ranks & Breakout Indices ---")
|
||||||
|
df_raw = pd.DataFrame(all_records)
|
||||||
|
ranked_df = ranking_engine.score_and_rank(df_raw)
|
||||||
|
final_df = health_detector.evaluate_dataframe(ranked_df)
|
||||||
|
|
||||||
|
# 1. Save Master CSV
|
||||||
|
final_df.to_csv(OUTPUT_CSV_PATH, index=False)
|
||||||
|
print(f"✅ Master dataset written to '{OUTPUT_CSV_PATH}'")
|
||||||
|
|
||||||
|
# 2. Save Separate Identity Verification Excel
|
||||||
|
export_verification_excel(final_df, excel_path=OUTPUT_EXCEL_PATH)
|
||||||
|
|
||||||
|
# Summary Leaderboard
|
||||||
|
print("\n--- Top 10 HIFFI Market Leaders ---")
|
||||||
|
hiffi_top10 = final_df[final_df["is_rank_eligible"] == True].sort_values(
|
||||||
|
by="hiffi_rank", ascending=True
|
||||||
|
).head(10)
|
||||||
|
summary_cols = [
|
||||||
|
"hiffi_rank",
|
||||||
|
"name",
|
||||||
|
"hiffi_score",
|
||||||
|
"breakout_rank",
|
||||||
|
"breakout_velocity_index",
|
||||||
|
"daily_view_velocity",
|
||||||
|
"health_status",
|
||||||
|
]
|
||||||
|
print(hiffi_top10[summary_cols].to_string(index=False))
|
||||||
|
|
||||||
# Display the final ranked overview table
|
|
||||||
summary_cols = ["hiffi_rank", "Name", "hiffi_score", "yt_subscribers", "composite_confidence", "confidence_tier"]
|
|
||||||
print(out_df[summary_cols].to_string(index=False))
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
parser = argparse.ArgumentParser(description="HIFFI Artist Intelligence Pipeline")
|
run_batch_pipeline(roster_path=CSV_ROSTER_PATH, force_refresh=False)
|
||||||
parser.add_argument("--limit", type=int, default=10, help="Number of records to test")
|
|
||||||
args = parser.parse_args()
|
|
||||||
|
|
||||||
run_pipeline(limit=args.limit)
|
|
||||||
Binary file not shown.
Reference in new issue
Block a user