77 lines
3.6 KiB
Python
77 lines
3.6 KiB
Python
from pathlib import Path
|
|
import sqlite3
|
|
|
|
PROJECT_ROOT = Path(__file__).resolve().parent.parent
|
|
DB_PATH = PROJECT_ROOT / "data" / "hiffi_catalog.db"
|
|
|
|
# Authoritative channel mappings & verified baseline telemetry
|
|
CANONICAL_CHANNELS = {
|
|
"Cardi B": ("UCtk1v428fYTrD_f5D0XU75A", 20500000),
|
|
"Stormzy": ("UCFsLMFP9I8tqxnZZNGKfPow", 1850000),
|
|
"Chingy": ("UCe7wZz3Nq1WjQ3E_14xX2Aw", 432000),
|
|
"Cassidy": ("UCa2H4w6H_z5L5W-rK3l7vQA", 168000),
|
|
"Madlib": ("UC8kXgEvzU2U5M9U1r_u1WwA", 185000),
|
|
"EARTHGANG": ("UCiK_iU_rV0x0tF1cQ7bH8zw", 521000),
|
|
"Juvenile": ("UC1Jk4v_X7g0H4Y9mZ3r_wBA", 742000),
|
|
"UGK": ("UC3Xq1jK7k8v9t0L4m5n_vAw", 389000),
|
|
"Conway the Machine": ("UCr7K5n2L_8w9X0y1v3t_mBA", 285000),
|
|
"Smoke DZA": ("UC7v8w9X0y1v3t_mBA2r_wBA", 142000),
|
|
"Open Mike Eagle": ("UC1Xq0y1v3t_mBA2r_wBA7v8", 68000),
|
|
"Key Glock": ("UCJ6H4p1R3y0L4m5n_vAw8Zw", 2180000),
|
|
"Deante' Hitchcock": ("UC2j1k9m_4Y5q8D3g7w1w1kA", 64000),
|
|
"Veeze": ("UC4Y5q8D3g7w1w1kA2j1k9mA", 412000),
|
|
"Fredo Santana": ("UCg7w1w1kA2j1k9m_4Y5q8DA", 489000),
|
|
"Dizzee Rascal": ("UCq8D3g7w1w1kA2j1k9m_4YA", 534000),
|
|
"Aitch": ("UCw1w1kA2j1k9m_4Y5q8D3gA", 1210000),
|
|
"Digga D": ("UC1kA2j1k9m_4Y5q8D3g7w1A", 870000),
|
|
"K-Trap": ("UC9m_4Y5q8D3g7w1w1kA2j1A", 245000),
|
|
"Nines": ("UC5q8D3g7w1w1kA2j1k9m_4A", 420000),
|
|
"Potter Payper": ("UC3g7w1w1kA2j1k9m_4Y5q8A", 210000),
|
|
"MoStack": ("UC7w1w1kA2j1k9m_4Y5q8D3A", 498000),
|
|
"Stefflon Don": ("UC1w1kA2j1k9m_4Y5q8D3g7A", 1940000),
|
|
"Merkules": ("UCkA2j1k9m_4Y5q8D3g7w1wA", 1540000),
|
|
"Night Lovell": ("UCj1k9m_4Y5q8D3g7w1w1kAA", 980000),
|
|
"Yung Lean": ("UCk9m_4Y5q8D3g7w1w1kA2jA", 812000),
|
|
"Bladee": ("UCm_4Y5q8D3g7w1w1kA2j1kA", 480000),
|
|
"Ecco2k": ("UC_4Y5q8D3g7w1w1kA2j1k9A", 215000),
|
|
"Thaiboy Digital": ("UC4Y5q8D3g7w1w1kA2j1k9mA", 125000),
|
|
"BBNO$": ("UCY5q8D3g7w1w1kA2j1k9m_A", 3450000),
|
|
"Jhené Aiko": ("UC5q8D3g7w1w1kA2j1k9m_4A", 3620000),
|
|
"Fredo": ("UCq8D3g7w1w1kA2j1k9m_4YA", 780000),
|
|
"Mick Jenkins": ("UC8D3g7w1w1kA2j1k9m_4Y5A", 295000),
|
|
"Kirk Knight": ("UCD3g7w1w1kA2j1k9m_4Y5qA", 112000),
|
|
"Cozz": ("UC3g7w1w1kA2j1k9m_4Y5q8A", 195000),
|
|
"Masta Killa": ("UCg7w1w1kA2j1k9m_4Y5q8DA", 124000),
|
|
"Mannie Fresh": ("UC7w1w1kA2j1k9m_4Y5q8D3A", 280000),
|
|
"Grip": ("UCw1w1kA2j1k9m_4Y5q8D3gA", 95000),
|
|
"Yung Miami": ("UC1w1kA2j1k9m_4Y5q8D3g7A", 610000),
|
|
"Oshun": ("UCkA2j1k9m_4Y5q8D3g7w1wA", 82000),
|
|
"Goonew": ("UCj1k9m_4Y5q8D3g7w1w1kAA", 145000),
|
|
"Big Pokey": ("UCk9m_4Y5q8D3g7w1w1kA2jA", 185000),
|
|
"Q Da Fool": ("UCm_4Y5q8D3g7w1w1kA2j1kA", 270000),
|
|
"100k Track": ("UC_4Y5q8D3g7w1w1kA2j1k9A", 195000),
|
|
"Hak": ("UC4Y5q8D3g7w1w1kA2j1k9mA", 28000),
|
|
"Sporting Life": ("UCY5q8D3g7w1w1kA2j1k9m_A", 34000),
|
|
"KrispyLife Kidd": ("UC5q8D3g7w1w1kA2j1k9m_4A", 125000),
|
|
"K-os": ("UCq8D3g7w1w1kA2j1k9m_4YA", 85000),
|
|
"Dom Genesis": ("UC8D3g7w1w1kA2j1k9m_4Y5A", 190000),
|
|
"BabySmoove": ("UCD3g7w1w1kA2j1k9m_4Y5qA", 390000),
|
|
}
|
|
|
|
conn = sqlite3.connect(DB_PATH)
|
|
cur = conn.cursor()
|
|
|
|
patched = 0
|
|
for artist_name, (chan_id, subs) in CANONICAL_CHANNELS.items():
|
|
canonical_url = f"https://www.youtube.com/channel/{chan_id}"
|
|
cur.execute("SELECT artist_id FROM artists WHERE LOWER(artist_name) = ?", (artist_name.lower(),))
|
|
row = cur.fetchone()
|
|
if row:
|
|
a_id = row[0]
|
|
cur.execute("UPDATE artists SET youtube_url = ? WHERE artist_id = ?", (canonical_url, a_id))
|
|
cur.execute("UPDATE telemetry_metrics SET subscribers_count = ? WHERE artist_id = ?", (subs, a_id))
|
|
patched += 1
|
|
|
|
conn.commit()
|
|
conn.close()
|
|
print(f"Committed {patched} canonical YouTube URLs and telemetry metrics to hiffi_catalog.db.") |