// channels.js — BlackRoad Network Source Registry // 36 channels across 10 vibes. Never raw channel URLs. Curated playlists or uploads only. // Upload playlists (UU prefix) are used as defaults — swap for curated playlists when available. export const CHANNELS = [ // ── CORE: MATH ── { id: '3blue1brown', name: '3Blue1Brown', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab&autoplay=1&mute=1&playsinline=1', category: 'Math', description: 'Visual mathematics and intuition-first explanations.', durationMinutes: 20, priority: 10, enabled: true, health: 'unknown' }, { id: 'numberphile', name: 'Numberphile', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=PLt5AfwLFPxWJ8GCgpFo5_OSyfl7j0nOiu&autoplay=1&mute=1&playsinline=1', category: 'Math', description: 'Math stories, ideas, oddities, and number intuition.', durationMinutes: 20, priority: 8, enabled: true, health: 'unknown' }, // ── CORE: SYSTEMS ── { id: 'computerphile', name: 'Computerphile', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=PLzH6n4zXuckquVnQ0KlMDxyT5YE-sA8Ps&autoplay=1&mute=1&playsinline=1', category: 'Systems', description: 'Computer science, security, and programming concepts.', durationMinutes: 20, priority: 10, enabled: true, health: 'unknown' }, // ── CORE: SCIENCE ── { id: 'veritasium', name: 'Veritasium', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=PLkahZjV5wKe_dajngssVLffaCh2gbq55g&autoplay=1&mute=1&playsinline=1', category: 'Science', description: 'Deep science, experiments, and surprising explanations.', durationMinutes: 20, priority: 10, enabled: true, health: 'unknown' }, { id: 'sixtysymbols', name: 'Sixty Symbols', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=UUvBqzzvUBLCs8Y7Axb-jZew&autoplay=1&mute=1&playsinline=1', category: 'Physics', description: 'Physics, astronomy, and scientific ideas.', durationMinutes: 20, priority: 8, enabled: true, health: 'unknown' }, // ── CORE: VISUAL EXPLAINERS ── { id: 'kurzgesagt', name: 'Kurzgesagt', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=PLFs4vir_WsTwEd-nJgVJCZPNL3HALHHpF&autoplay=1&mute=1&playsinline=1', category: 'Visual Explainers', description: 'Animated explainers for science, humanity, and systems.', durationMinutes: 20, priority: 9, enabled: true, health: 'unknown' }, { id: 'infographicsshow', name: 'The Infographics Show', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=UUfdNM3NAhaBOXCafH7krzrA&autoplay=1&mute=1&playsinline=1', category: 'Explainers', description: 'Narrated explainers, scenarios, and current-interest topics.', durationMinutes: 20, priority: 6, enabled: true, health: 'unknown' }, // ── CORE: EDUCATION ── { id: 'khanacademy', name: 'Khan Academy', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=PLSQl0a2vh4HC5feHa6U5g0yNLNIRYhILj&autoplay=1&mute=1&playsinline=1', category: 'Education', description: 'Core learning blocks across math, science, and more.', durationMinutes: 20, priority: 8, enabled: true, health: 'unknown' }, { id: 'mitocw', name: 'MIT OpenCourseWare', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=PLUl4u3cNGP63oMNUHXqIGcBbal4NOL6Y&autoplay=1&mute=1&playsinline=1', category: 'Lecture', description: 'Long-form technical and academic content.', durationMinutes: 30, priority: 7, enabled: true, health: 'unknown' }, { id: 'crashcourse', name: 'Crash Course', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=PL8dPuuaLjXtNlUrzyH5r6jN9ulIgZBpdo&autoplay=1&mute=1&playsinline=1', category: 'Education', description: 'Fast-paced educational explainers across disciplines.', durationMinutes: 20, priority: 7, enabled: true, health: 'unknown' }, // ── CORE: CONTEXT / JOURNALISM ── { id: 'vox', name: 'Vox', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=PLJ8cMiYb3G5dOTLINen1K7E4wSMfWjbI7&autoplay=1&mute=1&playsinline=1', category: 'Context', description: 'Context-heavy journalism and visual reporting.', durationMinutes: 15, priority: 6, enabled: true, health: 'unknown' }, { id: 'vice', name: 'Vice', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=UUn8zNIfYAQNdrFRrr8oibKw&autoplay=1&mute=1&playsinline=1', category: 'Documentary', description: 'Documentary-style stories and field reporting.', durationMinutes: 15, priority: 5, enabled: true, health: 'unknown' }, { id: 'insider', name: 'Insider', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=UUHJuQZuzapBh-CuhRYxIZrg&autoplay=1&mute=1&playsinline=1', category: 'Features', description: 'Feature journalism, industry explainers, and visual stories.', durationMinutes: 15, priority: 5, enabled: true, health: 'unknown' }, // ── HIGH-INTEL ── { id: 'pbsspacetime', name: 'PBS Space Time', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=UUYNbYGl89UUowy8oXkipC-Q&autoplay=1&mute=1&playsinline=1', category: 'Deep Space', description: 'Astrophysics, cosmology, and spacetime at the edge of knowledge.', durationMinutes: 20, priority: 9, enabled: true, health: 'unknown' }, { id: 'sabinehossenfelder', name: 'Sabine Hossenfelder', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=UU1yNl2E66ArXEBTf8JXSvCg&autoplay=1&mute=1&playsinline=1', category: 'Physics Frontier', description: 'Theoretical physics, science critique, and honest takes.', durationMinutes: 20, priority: 9, enabled: true, health: 'unknown' }, { id: 'closertotruth', name: 'Closer To Truth', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=UUl_dlV_7ofr4bSwJnk9gs-g&autoplay=1&mute=1&playsinline=1', category: 'Ultimate Questions', description: 'Consciousness, reality, existence. The deep end.', durationMinutes: 20, priority: 7, enabled: true, health: 'unknown' }, // ── HACKER / BUILDER ── { id: 'lowlevellearning', name: 'Low Level Learning', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=UUc4Rz_T9Sb1w5SVhv2HGMkA&autoplay=1&mute=1&playsinline=1', category: 'Hacker', description: 'Low-level systems, C, Rust, and why things actually work.', durationMinutes: 20, priority: 9, enabled: true, health: 'unknown' }, { id: 'liveoverflow', name: 'LiveOverflow', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=UUlcE-kVhqyiHCcjYwcpfj9w&autoplay=1&mute=1&playsinline=1', category: 'Security', description: 'Security research, CTFs, and hacking explained.', durationMinutes: 20, priority: 9, enabled: true, health: 'unknown' }, { id: 'beneater', name: 'Ben Eater', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=UUS0N5baNlQWJCUrhCEo8WlA&autoplay=1&mute=1&playsinline=1', category: 'Hardware', description: 'Building computers from scratch. Breadboards and truth tables.', durationMinutes: 20, priority: 9, enabled: true, health: 'unknown' }, { id: 'thecodingtrain', name: 'The Coding Train', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=UUvjgXvBlISQQnl7eYng8Chg&autoplay=1&mute=1&playsinline=1', category: 'Creative Code', description: 'Creative coding, visual algorithms, and joyful hacking.', durationMinutes: 20, priority: 7, enabled: true, health: 'unknown' }, // ── WEIRD / EXPERIMENTAL ── { id: 'michaelreeves', name: 'Michael Reeves', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=UUtHaxi4GTYDpJgMSGy7AeSw&autoplay=1&mute=1&playsinline=1', category: 'Chaos', description: 'Unhinged engineering. Robots that should not exist.', durationMinutes: 20, priority: 6, enabled: true, health: 'unknown' }, { id: 'stuffmadehere', name: 'Stuff Made Here', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=UUj1VqrHhDte54oLgPG4xpuQ&autoplay=1&mute=1&playsinline=1', category: 'Invention', description: 'Over-engineered solutions to problems nobody asked about.', durationMinutes: 20, priority: 7, enabled: true, health: 'unknown' }, { id: 'markrober', name: 'Mark Rober', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=UUY1kMZp36IQSyNx_9h4mpCg&autoplay=1&mute=1&playsinline=1', category: 'Engineering Play', description: 'Engineering + spectacle. Glitter bombs and squirrel courses.', durationMinutes: 20, priority: 7, enabled: true, health: 'unknown' }, // ── PHILOSOPHY / EXISTENTIAL ── { id: 'exurb1a', name: 'Exurb1a', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=UUimiUgDLbi6P17BdaCZpVbg&autoplay=1&mute=1&playsinline=1', category: 'Philosophy', description: 'Existential dread disguised as comedy. The meaning layer.', durationMinutes: 20, priority: 10, enabled: true, health: 'unknown' }, { id: 'pursuitofwonder', name: 'Pursuit of Wonder', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=UUMbQbXKGSJ2LqHHoaGRJ5sA&autoplay=1&mute=1&playsinline=1', category: 'Reflection', description: 'Quiet philosophy. Questions that stay with you.', durationMinutes: 20, priority: 8, enabled: true, health: 'unknown' }, { id: 'academyofideas', name: 'Academy of Ideas', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=UUiRiQGCHGjDLT9FQXFW0I3A&autoplay=1&mute=1&playsinline=1', category: 'Big Ideas', description: 'Nietzsche, Jung, freedom, tyranny. Intellectual history.', durationMinutes: 20, priority: 8, enabled: true, health: 'unknown' }, // ── HOW THE WORLD WORKS ── { id: 'realengineering', name: 'Real Engineering', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=UUR1IuLEqb6UEA0zQ1PeYXXg&autoplay=1&mute=1&playsinline=1', category: 'Engineering', description: 'How real systems are designed and why they work.', durationMinutes: 20, priority: 8, enabled: true, health: 'unknown' }, { id: 'practicalengineering', name: 'Practical Engineering', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=UUMOqf8ab-42UUQIdVoKwjlQ&autoplay=1&mute=1&playsinline=1', category: 'Real World', description: 'Civil engineering and infrastructure explained.', durationMinutes: 20, priority: 7, enabled: true, health: 'unknown' }, { id: 'wendover', name: 'Wendover Productions', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=UU9RM-iSvTu1uPJb8X5yp3EQ&autoplay=1&mute=1&playsinline=1', category: 'Systems Logic', description: 'Logistics, economics, and hidden systems that run the world.', durationMinutes: 20, priority: 8, enabled: true, health: 'unknown' }, // ── AI / FUTURE / TECH EDGE ── { id: 'twominutepapers', name: 'Two Minute Papers', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=UUbfYPyITQ-7l4upoX8nvctg&autoplay=1&mute=1&playsinline=1', category: 'AI Edge', description: 'Latest AI research in two minutes. What a time to be alive.', durationMinutes: 20, priority: 9, enabled: true, health: 'unknown' }, { id: 'yannickilcher', name: 'Yannic Kilcher', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=UUZHmQk67mSJgfCCTn7xBfew&autoplay=1&mute=1&playsinline=1', category: 'AI Edge', description: 'Deep ML paper reviews and AI industry analysis.', durationMinutes: 20, priority: 7, enabled: true, health: 'unknown' }, { id: 'coldfusion', name: 'ColdFusion', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=UU4QZ_LsYcvcq7qOsOhpAI4A&autoplay=1&mute=1&playsinline=1', category: 'Future Tech', description: 'Tech history, future trends, and industry stories.', durationMinutes: 20, priority: 7, enabled: true, health: 'unknown' }, // ── CINEMATIC / PREMIUM STORY ── { id: 'johnnyharris', name: 'Johnny Harris', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=UUmGSJVG3mCRXVOP4yZrU1Dw&autoplay=1&mute=1&playsinline=1', category: 'World Report', description: 'Cinematic journalism. Maps, borders, and hidden stories.', durationMinutes: 20, priority: 8, enabled: true, health: 'unknown' }, { id: 'lemmino', name: 'Lemmino', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=UURcgy6GzDeccI7dkbbBna3Q&autoplay=1&mute=1&playsinline=1', category: 'Cinematic', description: 'Premium mini-documentaries. Unsolved mysteries and deep dives.', durationMinutes: 20, priority: 9, enabled: true, health: 'unknown' }, { id: 'neo', name: 'Neo', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=UUd57xvMlrfbIoSPp-rT8Ibg&autoplay=1&mute=1&playsinline=1', category: 'Deep Story', description: 'Short-form documentary storytelling.', durationMinutes: 20, priority: 7, enabled: true, health: 'unknown' }, // ── DOCUMENTARY CORE ── { id: 'dwdocumentary', name: 'DW Documentary', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=UUW39zufHfsuGgpLviKh297Q&autoplay=1&mute=1&playsinline=1', category: 'Documentary', description: 'German public broadcasting. Industry, economy, global systems.', durationMinutes: 20, priority: 8, enabled: true, health: 'unknown' }, { id: 'freedocumentary', name: 'Free Documentary', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=UUijmHCrS0A-cNLdkpnVfn0w&autoplay=1&mute=1&playsinline=1', category: 'Documentary', description: 'Full-length documentaries. Nature, science, society.', durationMinutes: 20, priority: 6, enabled: true, health: 'unknown' }, { id: 'timeline', name: 'Timeline', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=UU88lvyJe7aHZmcvzvubDFRg&autoplay=1&mute=1&playsinline=1', category: 'History', description: 'World history documentaries. Ancient to modern.', durationMinutes: 20, priority: 7, enabled: true, health: 'unknown' }, { id: 'pbsfrontline', name: 'PBS Frontline', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=UUrJuxWJgFNh_bJEqMPm_D8w&autoplay=1&mute=1&playsinline=1', category: 'Investigative', description: 'Investigative journalism. Deep, serious, unflinching.', durationMinutes: 20, priority: 8, enabled: true, health: 'unknown' }, // ── ARCHIVE / VINTAGE ── { id: 'periscopefilm', name: 'PeriscopeFilm', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=UUrJuxWJgFNh_bJEqMPm_D8w&autoplay=1&mute=1&playsinline=1', category: 'Archive', description: 'Rescued films from 1920s-1980s. Training films, industrial, aviation, Bell Labs.', durationMinutes: 20, priority: 8, enabled: true, health: 'unknown' }, // ── SPECIAL AUDIENCE / HUMAN STORIES ── { id: 'truly', name: 'Truly', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=UUb-fMTiGfOQ4NF1EaGjbiiQ&autoplay=1&mute=1&playsinline=1', category: 'Human Stories', description: 'Unusual lives, real people, empathetic curiosity.', durationMinutes: 20, priority: 6, enabled: true, health: 'unknown' }, { id: 'softwhiteunderbelly', name: 'Soft White Underbelly', type: 'youtube_playlist', embedUrl: 'https://www.youtube.com/embed/videoseries?list=UU4E98HDsPXrf5kTKIgrSmtQ&autoplay=1&mute=1&playsinline=1', category: 'Human Stories', description: 'Raw interviews. Addiction, poverty, survival. The real world.', durationMinutes: 20, priority: 7, enabled: true, health: 'unknown' }, // ── INTERNAL ── { id: 'blackroadosinc', name: 'BlackRoad OS', type: 'internal', embedUrl: '', category: 'Internal Broadcast', description: 'BlackRoad-native content, agent activity, and system updates.', durationMinutes: 20, priority: 100, enabled: true, health: 'healthy' }, ]; // ── Helpers ── export function getEnabledChannels() { return CHANNELS.filter(function(c) { return c.enabled; }); } export function getChannelById(id) { return CHANNELS.find(function(c) { return c.id === id; }) || null; } export function getChannelsByCategory(category) { return CHANNELS.filter(function(c) { return c.enabled && c.category === category; }); } export function getHealthyChannels() { return CHANNELS.filter(function(c) { return c.enabled && c.health !== 'down'; }); } export function markChannelHealth(id, status) { var ch = CHANNELS.find(function(c) { return c.id === id; }); if (ch) ch.health = status; } export function getNextHealthyFallback(fallbackIds) { if (!fallbackIds || !fallbackIds.length) return null; for (var i = 0; i < fallbackIds.length; i++) { var ch = getChannelById(fallbackIds[i]); if (ch && ch.enabled && ch.health !== 'down') return ch; } return null; }