From 16fea60eb63c447fffcb90855f170efd585c4b52 Mon Sep 17 00:00:00 2001 From: Jon Date: Sun, 13 Nov 2022 04:08:28 +0000 Subject: [PATCH] initial --- data/songs.js | 1 + data/songs.json | 1 + generate.js | 251 ++++++++++++++++++++++++++++++++++++++++++++++++ readme.md | 29 ++++++ 4 files changed, 282 insertions(+) create mode 100644 data/songs.js create mode 100644 data/songs.json create mode 100755 generate.js create mode 100644 readme.md diff --git a/data/songs.js b/data/songs.js new file mode 100644 index 0000000..5234fe1 --- /dev/null +++ b/data/songs.js @@ -0,0 +1 @@ +glowersRadioSongsCallback([{"id":"amd","tags":["misc"],"metadata":{"title":"Svetovid","artist":"Jan Janko Močnik"},"sources":[{"type":"video/webm","url":"mxc://glowers.club/RBvSWrEWiFtIuDUCoxZbCDTW","thumbnail_type":-1,"thumbnail_url":"mxc://glowers.club/GccquMupQGvDXYNeifUbxfuy"}]},{"id":"autisticclowns","tags":["misc"],"sources":[{"type":"video/webm","url":"mxc://glowers.club/WqYtubpqVplLjSxxmaxNeQir","thumbnail_type":-1,"thumbnail_url":"mxc://glowers.club/esDPBgpoTvTtqekHAQJRwqtK"}]},{"id":"balmy","metadata":{"title":"Balmy","artist":"90sFlav"},"sources":[{"type":"audio/mp3","url":"x-gwm://wiki/balmy90sblav.mp3","thumbnail_type":0,"thumbnail_url":"mxc://glowers.club/kDNCBjvQxfPvtJVmfEMmcdov"}]},{"id":"bashar","metadata":{"title":"God, Syria, and Bashar","artist":"Jan Janko Močnik"},"sources":[{"type":"audio/mp3","url":"mxc://glowers.club/egmaXMIHsNmblfDjyTGHdyas","thumbnail_type":0,"thumbnail_url":"mxc://glowers.club/wpwHKoSFsxkNttaNyaNFzhMk"}]},{"id":"breathe","metadata":{"title":"Breathe (in the Air)","artist":"Pink Floyd"},"sources":[{"type":"video/webm","url":"mxc://glowers.club/HAGTNySLRemaDfjZMSmpktDj","thumbnail_type":-1,"thumbnail_url":"mxc://glowers.club/KytvUDmLWCFKQWwHemdDTksd"}]},{"id":"callme","metadata":{"title":"Call Me","artist":"90sFlav"},"sources":[{"type":"audio/mp3","url":"x-gwm://wiki/call_me.mp3","thumbnail_type":0,"thumbnail_url":"mxc://glowers.club/kDNCBjvQxfPvtJVmfEMmcdov"}]},{"id":"copeacabana","metadata":{"title":"Cope-a-Cabana","artist":"Chris Voiceman"},"sources":[{"type":"audio/mp3","url":"mxc://glowers.club/zEmMFUyaIBmuqAeogVZAMrmO","thumbnail_type":0,"thumbnail_url":"mxc://glowers.club/WBhXYzFgTyMVTTEWKwzDfsgF"}]},{"id":"dobson","sources":[{"type":"video/mp4","url":"mxc://glowers.club/mRtnfcoHYkyAOXSkYvrnbZgX","thumbnail_type":-1,"thumbnail_url":"mxc://glowers.club/eHKVfIITgdRKERhVOPSTDQAc"}]},{"id":"dootnukem","metadata":{"title":"Grabbag","artist":"Lee Jackson"},"sources":[{"type":"audio/mp3","url":"mxc://glowers.club/xsuBJwyAUwuDoASbmqjZWrLO","thumbnail_type":1,"thumbnail_url":"mxc://glowers.club/ymWgXucYRzhsgdiecjBkFvmz"}]},{"id":"feizhou","sources":[{"type":"video/webm","url":"mxc://glowers.club/EVRGpqeefZdsjVawOvSkOdvZ","thumbnail_type":-1,"thumbnail_url":"mxc://glowers.club/GywrCPMpcpsLFJQAuYoZRuzq"}]},{"id":"femalecops","tags":["misc"],"sources":[{"type":"video/webm","url":"mxc://glowers.club/RYjIfTiZKSKBdYBvjGtyBILa","thumbnail_type":-1,"thumbnail_url":"mxc://glowers.club/BVQhXkWSYbvFcSerzVZFgfrn"}]},{"id":"floyd","tags":["misc"],"metadata":{"title":"Paralyzer","artist":"Finger Seven"},"sources":[{"type":"video/webm","url":"mxc://glowers.club/IusHmBCOyJZFGHxsGjRkYqXf","thumbnail_type":-1,"thumbnail_url":"mxc://glowers.club/JjsGuJkEGAbudLaYvbAcxryQ"}]},{"id":"fuckjuice","metadata":{"title":"Fuck Jannies and Fuck Juice","artist":"The Crystal Crypt"},"sources":[{"type":"audio/mp3","url":"mxc://glowers.club/bxMoRJmYFteVNNntNhqrniNJ","thumbnail_type":0,"thumbnail_url":"mxc://glowers.club/YgeFvRPLguZOCGtUJFJednNj"}]},{"id":"goodbyeautumn","metadata":{"title":"Goodbye Autumn","artist":"Tomppabeats"},"sources":[{"type":"audio/mp3","url":"x-gwm://wiki/goodbye_autumn.mp3","thumbnail_type":0,"thumbnail_url":"mxc://glowers.club/HCiiIVMOekjPZtiEaexDdUsD"}]},{"id":"honorary","metadata":{"title":"Erika","artist":"Major Han Friess"},"sources":[{"type":"video/webm","url":"mxc://glowers.club/qMkbHHunSgPzkFpcoOuYeIuE","thumbnail_type":-1,"thumbnail_url":"mxc://glowers.club/aENkwWEKXIztqyBTJrBHCmRQ"}]},{"id":"hyperborea","metadata":{"title":"Somebody That I Used to Know","artist":"VelvetCasca"},"sources":[{"type":"video/mp4","url":"mxc://glowers.club/egAyPBuGNFPYyvnMWMxySLiX","thumbnail_type":-1,"thumbnail_url":"mxc://glowers.club/dOxJvUWRlGqRRxJdpDRZyeko"}]},{"id":"ifuckinglovescience","metadata":{"title":"I FUCKING LOVE SCIENCE","artist":"Hank Green"},"sources":[{"type":"video/webm","url":"mxc://glowers.club/abgQasVrghOSkpRZTIfHMFyF","thumbnail_type":-1,"thumbnail_url":"mxc://glowers.club/IhivpcDssjnjSDHBdMEGGwVp"},{"type":"video/mp4","url":"mxc://glowers.club/ieQlfAlPPGeXLsvevolcQKqO","thumbnail_type":-1,"thumbnail_url":"mxc://glowers.club/IhivpcDssjnjSDHBdMEGGwVp"}]},{"id":"imaginebeingdruckmann","metadata":{"title":"Imagine Being Druckmann","artist":"Chris Voiceman"},"sources":[{"type":"audio/mp3","url":"mxc://glowers.club/wRsCVvtUiLzFnDjwwgkCnXzN","thumbnail_type":0,"thumbnail_url":"mxc://glowers.club/ipWDVreHeWKOqefUBuvyFxjj"}]},{"id":"israel","tags":["misc"],"metadata":{"title":"Shake Israel's Security","artist":"National Radio"},"sources":[{"type":"audio/mp3","url":"mxc://glowers.club/cJMVPnPpkSZFHIRHtzXRrvna","thumbnail_type":0}]},{"id":"jihad","metadata":{"title":"Heyaw Rijal Al Qassam","artist":"Inshad Ensemble"},"sources":[{"type":"audio/mp3","url":"x-gwm://gnujihad.mp3","thumbnail_type":0,"thumbnail_url":"x-gwm://chromiumjihad.gif"}]},{"id":"midnightsession","metadata":{"title":"Midnight Session","artist":"90sFlav"},"sources":[{"type":"audio/mp3","url":"x-gwm://wiki/полуночная_сессия.mp3","thumbnail_type":0,"thumbnail_url":"mxc://glowers.club/pLexnITqTOhJUXBOKtDAiZzv"}]},{"id":"nightinjunitaki","metadata":{"title":"Night In Junitaki","artist":"Wünsche"},"sources":[{"type":"audio/mp3","url":"x-gwm://wiki/night_in_junitaki_-_waves.mp3","thumbnail_type":0,"thumbnail_url":"mxc://glowers.club/HCiiIVMOekjPZtiEaexDdUsD"}]},{"id":"onegame","metadata":{"title":"ONE GAME","artist":"Chris Voiceman"},"sources":[{"type":"audio/mp3","url":"mxc://glowers.club/iejQiyaVtnqhuSSCuXqviAIN","thumbnail_type":0,"thumbnail_url":"mxc://glowers.club/bZonXMZjhadXyazpKscvRBiP"}]},{"id":"poljacked","sources":[{"type":"video/webm","url":"mxc://glowers.club/xnYQdrroEheIZBfigHGZferu","thumbnail_type":-1,"thumbnail_url":"mxc://glowers.club/BczfFtojBhwMxTNjoZfhemam"}]},{"id":"sevenofnine","metadata":{"title":"Seven of Nine","artist":"90sFlav"},"sources":[{"type":"audio/mp3","url":"x-gwm://wiki/seven_of_nine.mp3","thumbnail_type":0,"thumbnail_url":"mxc://glowers.club/kDNCBjvQxfPvtJVmfEMmcdov"}]},{"id":"southdakota","metadata":{"title":"South Dakota","artist":"Keeloh"},"sources":[{"type":"audio/mp3","url":"x-gwm://wiki/southdakota.mp3","thumbnail_type":0}]},{"id":"springletter","metadata":{"title":"Spring Letter","artist":"90sFlav"},"sources":[{"type":"audio/mp3","url":"x-gwm://wiki/spring_letter.mp3","thumbnail_type":0,"thumbnail_url":"mxc://glowers.club/wTLwzrymoDeNGdJLEpDoEBtZ"}]},{"id":"thisistheinfowar","metadata":{"title":"In the House, In a Heartbeat","artist":"John Murphy"},"sources":[{"type":"video/webm","url":"mxc://glowers.club/znoCPlczXEXaEAVaiKHopnAV","thumbnail_type":-1,"thumbnail_url":"mxc://glowers.club/klXuXEwYNmYvsZhNOaXsDGJq"}]},{"id":"weep","metadata":{"title":"Weep","artist":"90sFlav"},"sources":[{"type":"audio/mp3","url":"x-gwm://wiki/weep.mp3","thumbnail_type":0,"thumbnail_url":"mxc://glowers.club/jIkXGOSECsPPyJTvgrxPhRoq"}]},{"id":"whenimetyou","metadata":{"title":"When I Met You","artist":"90sFlav"},"sources":[{"type":"audio/mp3","url":"x-gwm://wiki/when_i_met_you.mp3","thumbnail_type":0,"thumbnail_url":"mxc://glowers.club/ntDKDFtqeQCmIVoRtzRQdvEC"}]}]) \ No newline at end of file diff --git a/data/songs.json b/data/songs.json new file mode 100644 index 0000000..4dcee63 --- /dev/null +++ b/data/songs.json @@ -0,0 +1 @@ +[{"id":"amd","tags":["misc"],"metadata":{"title":"Svetovid","artist":"Jan Janko Močnik"},"sources":[{"type":"video/webm","url":"mxc://glowers.club/RBvSWrEWiFtIuDUCoxZbCDTW","thumbnail_type":-1,"thumbnail_url":"mxc://glowers.club/GccquMupQGvDXYNeifUbxfuy"}]},{"id":"autisticclowns","tags":["misc"],"sources":[{"type":"video/webm","url":"mxc://glowers.club/WqYtubpqVplLjSxxmaxNeQir","thumbnail_type":-1,"thumbnail_url":"mxc://glowers.club/esDPBgpoTvTtqekHAQJRwqtK"}]},{"id":"balmy","metadata":{"title":"Balmy","artist":"90sFlav"},"sources":[{"type":"audio/mp3","url":"x-gwm://wiki/balmy90sblav.mp3","thumbnail_type":0,"thumbnail_url":"mxc://glowers.club/kDNCBjvQxfPvtJVmfEMmcdov"}]},{"id":"bashar","metadata":{"title":"God, Syria, and Bashar","artist":"Jan Janko Močnik"},"sources":[{"type":"audio/mp3","url":"mxc://glowers.club/egmaXMIHsNmblfDjyTGHdyas","thumbnail_type":0,"thumbnail_url":"mxc://glowers.club/wpwHKoSFsxkNttaNyaNFzhMk"}]},{"id":"breathe","metadata":{"title":"Breathe (in the Air)","artist":"Pink Floyd"},"sources":[{"type":"video/webm","url":"mxc://glowers.club/HAGTNySLRemaDfjZMSmpktDj","thumbnail_type":-1,"thumbnail_url":"mxc://glowers.club/KytvUDmLWCFKQWwHemdDTksd"}]},{"id":"callme","metadata":{"title":"Call Me","artist":"90sFlav"},"sources":[{"type":"audio/mp3","url":"x-gwm://wiki/call_me.mp3","thumbnail_type":0,"thumbnail_url":"mxc://glowers.club/kDNCBjvQxfPvtJVmfEMmcdov"}]},{"id":"copeacabana","metadata":{"title":"Cope-a-Cabana","artist":"Chris Voiceman"},"sources":[{"type":"audio/mp3","url":"mxc://glowers.club/zEmMFUyaIBmuqAeogVZAMrmO","thumbnail_type":0,"thumbnail_url":"mxc://glowers.club/WBhXYzFgTyMVTTEWKwzDfsgF"}]},{"id":"dobson","sources":[{"type":"video/mp4","url":"mxc://glowers.club/mRtnfcoHYkyAOXSkYvrnbZgX","thumbnail_type":-1,"thumbnail_url":"mxc://glowers.club/eHKVfIITgdRKERhVOPSTDQAc"}]},{"id":"dootnukem","metadata":{"title":"Grabbag","artist":"Lee Jackson"},"sources":[{"type":"audio/mp3","url":"mxc://glowers.club/xsuBJwyAUwuDoASbmqjZWrLO","thumbnail_type":1,"thumbnail_url":"mxc://glowers.club/ymWgXucYRzhsgdiecjBkFvmz"}]},{"id":"feizhou","sources":[{"type":"video/webm","url":"mxc://glowers.club/EVRGpqeefZdsjVawOvSkOdvZ","thumbnail_type":-1,"thumbnail_url":"mxc://glowers.club/GywrCPMpcpsLFJQAuYoZRuzq"}]},{"id":"femalecops","tags":["misc"],"sources":[{"type":"video/webm","url":"mxc://glowers.club/RYjIfTiZKSKBdYBvjGtyBILa","thumbnail_type":-1,"thumbnail_url":"mxc://glowers.club/BVQhXkWSYbvFcSerzVZFgfrn"}]},{"id":"floyd","tags":["misc"],"metadata":{"title":"Paralyzer","artist":"Finger Seven"},"sources":[{"type":"video/webm","url":"mxc://glowers.club/IusHmBCOyJZFGHxsGjRkYqXf","thumbnail_type":-1,"thumbnail_url":"mxc://glowers.club/JjsGuJkEGAbudLaYvbAcxryQ"}]},{"id":"fuckjuice","metadata":{"title":"Fuck Jannies and Fuck Juice","artist":"The Crystal Crypt"},"sources":[{"type":"audio/mp3","url":"mxc://glowers.club/bxMoRJmYFteVNNntNhqrniNJ","thumbnail_type":0,"thumbnail_url":"mxc://glowers.club/YgeFvRPLguZOCGtUJFJednNj"}]},{"id":"goodbyeautumn","metadata":{"title":"Goodbye Autumn","artist":"Tomppabeats"},"sources":[{"type":"audio/mp3","url":"x-gwm://wiki/goodbye_autumn.mp3","thumbnail_type":0,"thumbnail_url":"mxc://glowers.club/HCiiIVMOekjPZtiEaexDdUsD"}]},{"id":"honorary","metadata":{"title":"Erika","artist":"Major Han Friess"},"sources":[{"type":"video/webm","url":"mxc://glowers.club/qMkbHHunSgPzkFpcoOuYeIuE","thumbnail_type":-1,"thumbnail_url":"mxc://glowers.club/aENkwWEKXIztqyBTJrBHCmRQ"}]},{"id":"hyperborea","metadata":{"title":"Somebody That I Used to Know","artist":"VelvetCasca"},"sources":[{"type":"video/mp4","url":"mxc://glowers.club/egAyPBuGNFPYyvnMWMxySLiX","thumbnail_type":-1,"thumbnail_url":"mxc://glowers.club/dOxJvUWRlGqRRxJdpDRZyeko"}]},{"id":"ifuckinglovescience","metadata":{"title":"I FUCKING LOVE SCIENCE","artist":"Hank Green"},"sources":[{"type":"video/webm","url":"mxc://glowers.club/abgQasVrghOSkpRZTIfHMFyF","thumbnail_type":-1,"thumbnail_url":"mxc://glowers.club/IhivpcDssjnjSDHBdMEGGwVp"},{"type":"video/mp4","url":"mxc://glowers.club/ieQlfAlPPGeXLsvevolcQKqO","thumbnail_type":-1,"thumbnail_url":"mxc://glowers.club/IhivpcDssjnjSDHBdMEGGwVp"}]},{"id":"imaginebeingdruckmann","metadata":{"title":"Imagine Being Druckmann","artist":"Chris Voiceman"},"sources":[{"type":"audio/mp3","url":"mxc://glowers.club/wRsCVvtUiLzFnDjwwgkCnXzN","thumbnail_type":0,"thumbnail_url":"mxc://glowers.club/ipWDVreHeWKOqefUBuvyFxjj"}]},{"id":"israel","tags":["misc"],"metadata":{"title":"Shake Israel's Security","artist":"National Radio"},"sources":[{"type":"audio/mp3","url":"mxc://glowers.club/cJMVPnPpkSZFHIRHtzXRrvna","thumbnail_type":0}]},{"id":"jihad","metadata":{"title":"Heyaw Rijal Al Qassam","artist":"Inshad Ensemble"},"sources":[{"type":"audio/mp3","url":"x-gwm://gnujihad.mp3","thumbnail_type":0,"thumbnail_url":"x-gwm://chromiumjihad.gif"}]},{"id":"midnightsession","metadata":{"title":"Midnight Session","artist":"90sFlav"},"sources":[{"type":"audio/mp3","url":"x-gwm://wiki/полуночная_сессия.mp3","thumbnail_type":0,"thumbnail_url":"mxc://glowers.club/pLexnITqTOhJUXBOKtDAiZzv"}]},{"id":"nightinjunitaki","metadata":{"title":"Night In Junitaki","artist":"Wünsche"},"sources":[{"type":"audio/mp3","url":"x-gwm://wiki/night_in_junitaki_-_waves.mp3","thumbnail_type":0,"thumbnail_url":"mxc://glowers.club/HCiiIVMOekjPZtiEaexDdUsD"}]},{"id":"onegame","metadata":{"title":"ONE GAME","artist":"Chris Voiceman"},"sources":[{"type":"audio/mp3","url":"mxc://glowers.club/iejQiyaVtnqhuSSCuXqviAIN","thumbnail_type":0,"thumbnail_url":"mxc://glowers.club/bZonXMZjhadXyazpKscvRBiP"}]},{"id":"poljacked","sources":[{"type":"video/webm","url":"mxc://glowers.club/xnYQdrroEheIZBfigHGZferu","thumbnail_type":-1,"thumbnail_url":"mxc://glowers.club/BczfFtojBhwMxTNjoZfhemam"}]},{"id":"sevenofnine","metadata":{"title":"Seven of Nine","artist":"90sFlav"},"sources":[{"type":"audio/mp3","url":"x-gwm://wiki/seven_of_nine.mp3","thumbnail_type":0,"thumbnail_url":"mxc://glowers.club/kDNCBjvQxfPvtJVmfEMmcdov"}]},{"id":"southdakota","metadata":{"title":"South Dakota","artist":"Keeloh"},"sources":[{"type":"audio/mp3","url":"x-gwm://wiki/southdakota.mp3","thumbnail_type":0}]},{"id":"springletter","metadata":{"title":"Spring Letter","artist":"90sFlav"},"sources":[{"type":"audio/mp3","url":"x-gwm://wiki/spring_letter.mp3","thumbnail_type":0,"thumbnail_url":"mxc://glowers.club/wTLwzrymoDeNGdJLEpDoEBtZ"}]},{"id":"thisistheinfowar","metadata":{"title":"In the House, In a Heartbeat","artist":"John Murphy"},"sources":[{"type":"video/webm","url":"mxc://glowers.club/znoCPlczXEXaEAVaiKHopnAV","thumbnail_type":-1,"thumbnail_url":"mxc://glowers.club/klXuXEwYNmYvsZhNOaXsDGJq"}]},{"id":"weep","metadata":{"title":"Weep","artist":"90sFlav"},"sources":[{"type":"audio/mp3","url":"x-gwm://wiki/weep.mp3","thumbnail_type":0,"thumbnail_url":"mxc://glowers.club/jIkXGOSECsPPyJTvgrxPhRoq"}]},{"id":"whenimetyou","metadata":{"title":"When I Met You","artist":"90sFlav"},"sources":[{"type":"audio/mp3","url":"x-gwm://wiki/when_i_met_you.mp3","thumbnail_type":0,"thumbnail_url":"mxc://glowers.club/ntDKDFtqeQCmIVoRtzRQdvEC"}]}] \ No newline at end of file diff --git a/generate.js b/generate.js new file mode 100755 index 0000000..d4493ba --- /dev/null +++ b/generate.js @@ -0,0 +1,251 @@ +#!/usr/bin/env node +"use-strict"; +const fs = require("fs") + +const objSerialize = (obj, keys, cb) => { + let a = Object.create(null) + for (const key of keys) + a[key] = obj[key] + if (cb) + return cb(a) + return a +} + +const RadioItem = function (id) { + this.id = id + this.metadata = undefined + this.tags = undefined + this.sources = [] + return this +} + +RadioItem.new = id => new RadioItem(id) +RadioItem.prototype.setMetadata = function (title, artist) { this.metadata = { title, artist }; return this } +RadioItem.prototype.setTags = function (tags) { this.tags = tags; return this } +RadioItem.prototype.addSource = function (source) { this.sources.push(source); return this } +RadioItem.prototype.serialize = function () { + return objSerialize(this, [ + "id", + "tags", + "metadata" + ], obj => ({ ...obj, "sources": this.sources.map(source => source.serialize()) })) +} + +const EThumbnailType = { + "NATIVE": -1, + "SQUARE": 0, + "STRETCH": 1, +} + +const RadioSource = function (type) { + this.type = type + this.url = null + this.thumbnail_type = type.startsWith("video/") ? EThumbnailType.NATIVE : EThumbnailType.SQUARE + this.thumbnail_url = undefined + return this +} + +RadioSource.new = type => new RadioSource(type) +RadioSource.prototype.setThumbnailType = function (thumbnail_type) { this.thumbnail_type = thumbnail_type; return this } +RadioSource.prototype.setURL = function (uri) { this.url = uri; return this } +RadioSource.prototype.setThumbnailURL = function (uri) { this.thumbnail_url = uri; return this } +RadioSource.prototype.serialize = function () { + return objSerialize(this, [ + "type", + "url", + "thumbnail_type", + "thumbnail_url" + ]) +} + +const radioEntries = [ + + RadioItem.new("nightinjunitaki") + .setMetadata("Night In Junitaki", "Wünsche") + .addSource(RadioSource.new("audio/mp3") + .setURL("x-gwm://wiki/night_in_junitaki_-_waves.mp3") + .setThumbnailURL("mxc://glowers.club/HCiiIVMOekjPZtiEaexDdUsD")), + + RadioItem.new("goodbyeautumn") + .setMetadata("Goodbye Autumn", "Tomppabeats") + .addSource(RadioSource.new("audio/mp3") + .setURL("x-gwm://wiki/goodbye_autumn.mp3") + .setThumbnailURL("mxc://glowers.club/HCiiIVMOekjPZtiEaexDdUsD")), + + RadioItem.new("balmy") + .setMetadata("Balmy", "90sFlav") + .addSource(RadioSource.new("audio/mp3") + .setURL("x-gwm://wiki/balmy90sblav.mp3") + .setThumbnailURL("mxc://glowers.club/kDNCBjvQxfPvtJVmfEMmcdov")), + + RadioItem.new("springletter") + .setMetadata("Spring Letter", "90sFlav") + .addSource(RadioSource.new("audio/mp3") + .setURL("x-gwm://wiki/spring_letter.mp3") + .setThumbnailURL("mxc://glowers.club/wTLwzrymoDeNGdJLEpDoEBtZ")), + + RadioItem.new("weep") + .setMetadata("Weep", "90sFlav") + .addSource(RadioSource.new("audio/mp3") + .setURL("x-gwm://wiki/weep.mp3") + .setThumbnailURL("mxc://glowers.club/jIkXGOSECsPPyJTvgrxPhRoq")), + + RadioItem.new("whenimetyou") + .setMetadata("When I Met You", "90sFlav") + .addSource(RadioSource.new("audio/mp3") + .setURL("x-gwm://wiki/when_i_met_you.mp3") + .setThumbnailURL("mxc://glowers.club/ntDKDFtqeQCmIVoRtzRQdvEC")), + + RadioItem.new("sevenofnine") + .setMetadata("Seven of Nine", "90sFlav") + .addSource(RadioSource.new("audio/mp3") + .setURL("x-gwm://wiki/seven_of_nine.mp3") + .setThumbnailURL("mxc://glowers.club/kDNCBjvQxfPvtJVmfEMmcdov")), + + RadioItem.new("callme") + .setMetadata("Call Me", "90sFlav") + .addSource(RadioSource.new("audio/mp3") + .setURL("x-gwm://wiki/call_me.mp3") + .setThumbnailURL("mxc://glowers.club/kDNCBjvQxfPvtJVmfEMmcdov")), + + RadioItem.new("midnightsession") + .setMetadata("Midnight Session", "90sFlav") + .addSource(RadioSource.new("audio/mp3") + .setURL("x-gwm://wiki/полуночная_сессия.mp3") + .setThumbnailURL("mxc://glowers.club/pLexnITqTOhJUXBOKtDAiZzv")), + + // TODO: Add thumb + RadioItem.new("southdakota") + .setMetadata("South Dakota", "Keeloh") + .addSource(RadioSource.new("audio/mp3") + .setURL("x-gwm://wiki/southdakota.mp3")), + + RadioItem.new("dobson") + .addSource(RadioSource.new("video/mp4") + .setURL("mxc://glowers.club/mRtnfcoHYkyAOXSkYvrnbZgX") + .setThumbnailURL("mxc://glowers.club/eHKVfIITgdRKERhVOPSTDQAc")), + + RadioItem.new("poljacked") + .addSource(RadioSource.new("video/webm") + .setURL("mxc://glowers.club/xnYQdrroEheIZBfigHGZferu") + .setThumbnailURL("mxc://glowers.club/BczfFtojBhwMxTNjoZfhemam")), + + RadioItem.new("femalecops") + .setTags([ "misc" ]) + .addSource(RadioSource.new("video/webm") + .setURL("mxc://glowers.club/RYjIfTiZKSKBdYBvjGtyBILa") + .setThumbnailURL("mxc://glowers.club/BVQhXkWSYbvFcSerzVZFgfrn")), + + RadioItem.new("autisticclowns") + .setTags([ "misc" ]) + .addSource(RadioSource.new("video/webm") + .setURL("mxc://glowers.club/WqYtubpqVplLjSxxmaxNeQir") + .setThumbnailURL("mxc://glowers.club/esDPBgpoTvTtqekHAQJRwqtK")), + + RadioItem.new("ifuckinglovescience") + .setMetadata("I FUCKING LOVE SCIENCE", "Hank Green") + .addSource(RadioSource.new("video/webm") + .setURL("mxc://glowers.club/abgQasVrghOSkpRZTIfHMFyF") + .setThumbnailURL("mxc://glowers.club/IhivpcDssjnjSDHBdMEGGwVp")) + .addSource(RadioSource.new("video/mp4") + .setURL("mxc://glowers.club/ieQlfAlPPGeXLsvevolcQKqO") + .setThumbnailURL("mxc://glowers.club/IhivpcDssjnjSDHBdMEGGwVp")), + + RadioItem.new("dootnukem") + .setMetadata("Grabbag", "Lee Jackson") + .addSource(RadioSource.new("audio/mp3") + .setURL("mxc://glowers.club/xsuBJwyAUwuDoASbmqjZWrLO") + .setThumbnailURL("mxc://glowers.club/ymWgXucYRzhsgdiecjBkFvmz") + .setThumbnailType(EThumbnailType.STRETCH)), + + RadioItem.new("hyperborea") + .setMetadata("Somebody That I Used to Know", "VelvetCasca") + .addSource(RadioSource.new("video/mp4") + .setURL("mxc://glowers.club/egAyPBuGNFPYyvnMWMxySLiX") + .setThumbnailURL("mxc://glowers.club/dOxJvUWRlGqRRxJdpDRZyeko")), + + // TODO: Add metadata + RadioItem.new("feizhou") + .addSource(RadioSource.new("video/webm") + .setURL("mxc://glowers.club/EVRGpqeefZdsjVawOvSkOdvZ") + .setThumbnailURL("mxc://glowers.club/GywrCPMpcpsLFJQAuYoZRuzq")), + + RadioItem.new("breathe") + .setMetadata("Breathe (in the Air)", "Pink Floyd") + .addSource(RadioSource.new("video/webm") + .setURL("mxc://glowers.club/HAGTNySLRemaDfjZMSmpktDj") + .setThumbnailURL("mxc://glowers.club/KytvUDmLWCFKQWwHemdDTksd")), + + RadioItem.new("fuckjuice") + .setMetadata("Fuck Jannies and Fuck Juice", "The Crystal Crypt") + .addSource(RadioSource.new("audio/mp3") + .setURL("mxc://glowers.club/bxMoRJmYFteVNNntNhqrniNJ") + .setThumbnailURL("mxc://glowers.club/YgeFvRPLguZOCGtUJFJednNj")), + + RadioItem.new("onegame") + .setMetadata("ONE GAME", "Chris Voiceman") + .addSource(RadioSource.new("audio/mp3") + .setURL("mxc://glowers.club/iejQiyaVtnqhuSSCuXqviAIN") + .setThumbnailURL("mxc://glowers.club/bZonXMZjhadXyazpKscvRBiP")), + + RadioItem.new("imaginebeingdruckmann") + .setMetadata("Imagine Being Druckmann", "Chris Voiceman") + .addSource(RadioSource.new("audio/mp3") + .setURL("mxc://glowers.club/wRsCVvtUiLzFnDjwwgkCnXzN") + .setThumbnailURL("mxc://glowers.club/ipWDVreHeWKOqefUBuvyFxjj")), + + RadioItem.new("copeacabana") + .setMetadata("Cope-a-Cabana", "Chris Voiceman") + .addSource(RadioSource.new("audio/mp3") + .setURL("mxc://glowers.club/zEmMFUyaIBmuqAeogVZAMrmO") + .setThumbnailURL("mxc://glowers.club/WBhXYzFgTyMVTTEWKwzDfsgF")), + + RadioItem.new("jihad") + .setMetadata("Heyaw Rijal Al Qassam", "Inshad Ensemble") + .addSource(RadioSource.new("audio/mp3") + .setURL("x-gwm://gnujihad.mp3") + .setThumbnailURL("x-gwm://chromiumjihad.gif")), + + RadioItem.new("thisistheinfowar") + .setMetadata("In the House, In a Heartbeat", "John Murphy") + .addSource(RadioSource.new("video/webm") + .setURL("mxc://glowers.club/znoCPlczXEXaEAVaiKHopnAV") + .setThumbnailURL("mxc://glowers.club/klXuXEwYNmYvsZhNOaXsDGJq")), + + RadioItem.new("floyd") + .setMetadata("Paralyzer", "Finger Seven") + .setTags([ "misc" ]) + .addSource(RadioSource.new("video/webm") + .setURL("mxc://glowers.club/IusHmBCOyJZFGHxsGjRkYqXf") + .setThumbnailURL("mxc://glowers.club/JjsGuJkEGAbudLaYvbAcxryQ")), + + RadioItem.new("amd") + .setMetadata("Svetovid", "Jan Janko Močnik") + .setTags([ "misc" ]) + .addSource(RadioSource.new("video/webm") + .setURL("mxc://glowers.club/RBvSWrEWiFtIuDUCoxZbCDTW") + .setThumbnailURL("mxc://glowers.club/GccquMupQGvDXYNeifUbxfuy")), + + // TODO: Add thumbnail + RadioItem.new("israel") + .setMetadata("Shake Israel's Security", "National Radio") + .setTags([ "misc" ]) + .addSource(RadioSource.new("audio/mp3") + .setURL("mxc://glowers.club/cJMVPnPpkSZFHIRHtzXRrvna")), + + RadioItem.new("honorary") + .setMetadata("Erika", "Major Han Friess") + .addSource(RadioSource.new("video/webm") + .setURL("mxc://glowers.club/qMkbHHunSgPzkFpcoOuYeIuE") + .setThumbnailURL("mxc://glowers.club/aENkwWEKXIztqyBTJrBHCmRQ")), + + RadioItem.new("bashar") + .setMetadata("God, Syria, and Bashar", "Jan Janko Močnik") + .addSource(RadioSource.new("audio/mp3") + .setURL("mxc://glowers.club/egmaXMIHsNmblfDjyTGHdyas") + .setThumbnailURL("mxc://glowers.club/wpwHKoSFsxkNttaNyaNFzhMk")), + +].filter(Boolean).map(a => a.serialize()).sort((a,b) => a.id.localeCompare(b.id)) + +fs.writeFileSync("./data/songs.js", `glowersRadioSongsCallback(${JSON.stringify(radioEntries)})`) +fs.writeFileSync("./data/songs.json", JSON.stringify(radioEntries)) diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..60b84df --- /dev/null +++ b/readme.md @@ -0,0 +1,29 @@ +# glowers-radio +This repo contains backing information for Glowers Radio. + +## Format +The `songs.json` **is only intended for use for Glowers Radio**, and is effectively living standard as a result. **Live data may change drastically without warning** + +```yaml +required: [ id, sources ] +properties: + id: + type: string + tags: + type: array + items: [ { type: string } ] + metadata: + required: [ title, artist ] + properties: + title: { type: string } + artist: { type: string } + sources: + type: array + items: + - required: [ type, url ] + properties: + type: { type: string, format: mimetype } + url: { type: string, format: uri } + thumbnail_type: { type: string } + thumbnail_url: { format: uri } +```