Spaces:
Running
Running
Download schedule.js from blackroadio/blackroad-os-live: direct link, hf CLI and curl.
- Browser
- Download file 8.63 kB
-
https://huggingface.co/spaces/blackroadio/blackroad-os-live/resolve/main/schedule.js
- Command line
-
hf download hf://spaces/blackroadio/blackroad-os-live/schedule.js
-
curl -L -o schedule.js https://huggingface.co/spaces/blackroadio/blackroad-os-live/resolve/main/schedule.js
8.63 kB
| // schedule.js β BlackRoad Network Broadcast Schedule | |
| // 43 blocks x 20 min = 860 min (~14.3h) repeating cycle. | |
| // Intelligence + human reality + story + system. Full-spectrum curiosity network. | |
| export var SCHEDULE = [ | |
| // ββ Opening: Core Intelligence ββ | |
| { sourceId: '3blue1brown', title: 'Math Block', category: 'Math', fallbackSourceIds: ['numberphile','khanacademy'] }, | |
| { sourceId: 'computerphile', title: 'Systems Block', category: 'Systems', fallbackSourceIds: ['lowlevellearning','beneater'] }, | |
| { sourceId: 'veritasium', title: 'Deep Science', category: 'Science', fallbackSourceIds: ['sixtysymbols','sabinehossenfelder'] }, | |
| { sourceId: 'dwdocumentary', title: 'Documentary Hour', category: 'Documentary', fallbackSourceIds: ['freedocumentary','timeline'] }, | |
| { sourceId: 'lowlevellearning', title: 'Hacker Hour', category: 'Hacker', fallbackSourceIds: ['liveoverflow','computerphile'] }, | |
| { sourceId: 'blackroadosinc', title: 'Internal Broadcast', category: 'Internal', fallbackSourceIds: ['computerphile','veritasium'], pinned: true }, | |
| // ββ Deep Layer: Meaning + Archive ββ | |
| { sourceId: 'exurb1a', title: 'Philosophy Hour', category: 'Philosophy', fallbackSourceIds: ['pursuitofwonder','academyofideas'] }, | |
| { sourceId: 'realengineering', title: 'How It Works', category: 'Engineering', fallbackSourceIds: ['practicalengineering','wendover'] }, | |
| { sourceId: 'periscopefilm', title: 'Archive Block', category: 'Archive', fallbackSourceIds: ['timeline','dwdocumentary'] }, | |
| { sourceId: 'pbsspacetime', title: 'Deep Space', category: 'Deep Space', fallbackSourceIds: ['sabinehossenfelder','veritasium'] }, | |
| { sourceId: 'beneater', title: 'Hardware Block', category: 'Hardware', fallbackSourceIds: ['lowlevellearning','computerphile'] }, | |
| { sourceId: 'lemmino', title: 'Cinematic Stories', category: 'Cinematic', fallbackSourceIds: ['johnnyharris','neo'] }, | |
| { sourceId: 'twominutepapers', title: 'AI Edge', category: 'AI Edge', fallbackSourceIds: ['yannickilcher','coldfusion'] }, | |
| // ββ Human Layer: Reality Check ββ | |
| { sourceId: 'truly', title: 'Human Stories', category: 'Human Stories', fallbackSourceIds: ['softwhiteunderbelly','insider'] }, | |
| { sourceId: 'vox', title: 'Context', category: 'Context', fallbackSourceIds: ['insider','wendover'] }, | |
| { sourceId: 'numberphile', title: 'Numbers Block', category: 'Math', fallbackSourceIds: ['3blue1brown','sixtysymbols'] }, | |
| { sourceId: 'liveoverflow', title: 'Security Block', category: 'Security', fallbackSourceIds: ['lowlevellearning','computerphile'] }, | |
| { sourceId: 'sabinehossenfelder', title: 'Physics Frontier', category: 'Physics Frontier', fallbackSourceIds: ['pbsspacetime','veritasium'] }, | |
| { sourceId: 'johnnyharris', title: 'World Report', category: 'World Report', fallbackSourceIds: ['vox','wendover'] }, | |
| { sourceId: 'stuffmadehere', title: 'Invention Block', category: 'Invention', fallbackSourceIds: ['markrober','beneater'] }, | |
| // ββ Education Layer: Foundations ββ | |
| { sourceId: 'khanacademy', title: 'Foundations', category: 'Education', fallbackSourceIds: ['crashcourse','3blue1brown'] }, | |
| { sourceId: 'freedocumentary', title: 'Free Doc', category: 'Documentary', fallbackSourceIds: ['dwdocumentary','timeline'] }, | |
| { sourceId: 'mitocw', title: 'Lecture Hall', category: 'Lecture', fallbackSourceIds: ['khanacademy','computerphile'] }, | |
| { sourceId: 'timeline', title: 'History Block', category: 'History', fallbackSourceIds: ['dwdocumentary','periscopefilm'] }, | |
| { sourceId: 'coldfusion', title: 'Future Tech', category: 'Future Tech', fallbackSourceIds: ['twominutepapers','wendover'] }, | |
| { sourceId: 'academyofideas', title: 'Big Ideas', category: 'Big Ideas', fallbackSourceIds: ['exurb1a','pursuitofwonder'] }, | |
| { sourceId: 'wendover', title: 'Systems Logic', category: 'Systems Logic', fallbackSourceIds: ['realengineering','vox'] }, | |
| { sourceId: 'markrober', title: 'Engineering Play', category: 'Engineering Play', fallbackSourceIds: ['stuffmadehere','practicalengineering'] }, | |
| // ββ Energy Layer: Pace Change ββ | |
| { sourceId: 'crashcourse', title: 'Fast Track', category: 'Education', fallbackSourceIds: ['khanacademy','infographicsshow'] }, | |
| { sourceId: 'practicalengineering', title: 'Real World', category: 'Real World', fallbackSourceIds: ['realengineering','wendover'] }, | |
| { sourceId: 'softwhiteunderbelly', title: 'Underbelly', category: 'Human Stories', fallbackSourceIds: ['truly','pbsfrontline'] }, | |
| { sourceId: 'pursuitofwonder', title: 'Reflection', category: 'Reflection', fallbackSourceIds: ['exurb1a','closertotruth'] }, | |
| { sourceId: 'thecodingtrain', title: 'Creative Code', category: 'Creative Code', fallbackSourceIds: ['beneater','computerphile'] }, | |
| { sourceId: 'kurzgesagt', title: 'Visual Explainers', category: 'Visual Explainers', fallbackSourceIds: ['crashcourse','infographicsshow'] }, | |
| { sourceId: 'insider', title: 'Deep Dive', category: 'Features', fallbackSourceIds: ['vice','vox'] }, | |
| { sourceId: 'michaelreeves', title: 'Chaos Block', category: 'Chaos', fallbackSourceIds: ['stuffmadehere','markrober'] }, | |
| // ββ Closing: Big Picture ββ | |
| { sourceId: 'sixtysymbols', title: 'Physics Block', category: 'Physics', fallbackSourceIds: ['veritasium','pbsspacetime'] }, | |
| { sourceId: 'pbsfrontline', title: 'Frontline', category: 'Investigative', fallbackSourceIds: ['dwdocumentary','vice'] }, | |
| { sourceId: 'infographicsshow', title: 'Visual Data', category: 'Explainers', fallbackSourceIds: ['kurzgesagt','vox'] }, | |
| { sourceId: 'vice', title: 'On the Ground', category: 'Documentary', fallbackSourceIds: ['insider','johnnyharris'] }, | |
| { sourceId: 'closertotruth', title: 'Ultimate Questions', category: 'Ultimate Questions', fallbackSourceIds: ['exurb1a','academyofideas'] }, | |
| { sourceId: 'neo', title: 'Deep Story', category: 'Deep Story', fallbackSourceIds: ['lemmino','johnnyharris'] }, | |
| { sourceId: 'blackroadosinc', title: 'Night Broadcast', category: 'Internal', fallbackSourceIds: ['exurb1a','pursuitofwonder'], pinned: true }, | |
| ]; | |
| export var BLOCK_DURATION = 20; | |
| export var CYCLE_LENGTH = SCHEDULE.length * BLOCK_DURATION; | |
| // ββ Time Helpers ββ | |
| export function getCurrentTimeHHMM() { | |
| var now = new Date(); | |
| return String(now.getHours()).padStart(2, '0') + ':' + String(now.getMinutes()).padStart(2, '0'); | |
| } | |
| export function getCurrentBlockIndex() { | |
| var now = new Date(); | |
| var mins = now.getHours() * 60 + now.getMinutes(); | |
| var posInCycle = mins % CYCLE_LENGTH; | |
| return Math.floor(posInCycle / BLOCK_DURATION); | |
| } | |
| export function getCurrentBlock() { | |
| var idx = getCurrentBlockIndex(); | |
| return idx >= 0 && idx < SCHEDULE.length ? SCHEDULE[idx] : null; | |
| } | |
| export function getNextBlock() { | |
| var idx = getCurrentBlockIndex(); | |
| return SCHEDULE[(idx + 1) % SCHEDULE.length] || null; | |
| } | |
| export function getBlockAfterNext() { | |
| var idx = getCurrentBlockIndex(); | |
| return SCHEDULE[(idx + 2) % SCHEDULE.length] || null; | |
| } | |
| export function getPreviousBlock() { | |
| var idx = getCurrentBlockIndex(); | |
| return idx > 0 ? SCHEDULE[idx - 1] : SCHEDULE[SCHEDULE.length - 1]; | |
| } | |
| export function getUpcomingBlocks(count) { | |
| count = count || 4; | |
| var idx = getCurrentBlockIndex(); | |
| var blocks = []; | |
| for (var i = 1; i <= count; i++) { | |
| blocks.push(SCHEDULE[(idx + i) % SCHEDULE.length]); | |
| } | |
| return blocks; | |
| } | |
| export function formatTimeHHMM(hhmm) { | |
| if (typeof hhmm === 'number') { | |
| var wrapped = ((hhmm % 1440) + 1440) % 1440; | |
| var h = Math.floor(wrapped / 60); | |
| var m = wrapped % 60; | |
| var ampm = h >= 12 ? 'PM' : 'AM'; | |
| return (h % 12 || 12) + ':' + String(m).padStart(2, '0') + ' ' + ampm; | |
| } | |
| var parts = hhmm.split(':').map(Number); | |
| var ampm2 = parts[0] >= 12 ? 'PM' : 'AM'; | |
| return (parts[0] % 12 || 12) + ':' + String(parts[1]).padStart(2, '0') + ' ' + ampm2; | |
| } | |