diff --git a/generate.js b/generate.js index 45b333e..07f71d7 100755 --- a/generate.js +++ b/generate.js @@ -19,6 +19,8 @@ const objBulkSet = (obj, target, pairs) => { obj[target][key] = pairs[key] } +const notNullElse = (a, fallback) => a != null && a != undefined ? a : fallback + const RadioItem = function (id) { this.id = id this.metadata = undefined @@ -58,435 +60,466 @@ const EDisplayType = { const RadioSource = function (type) { this.type = type - this.url = null + this.uri = null this.display_type = type.startsWith("video/") ? EDisplayType.NATIVE : EDisplayType.SQUARE - this.thumbnail_url = undefined + this.previews = [] return this } RadioSource.new = type => new RadioSource(type) RadioSource.prototype.setDisplayType = function (display_type) { this.display_type = display_type; return this } -RadioSource.prototype.setURL = function (uri) { this.url = uri; return this } -RadioSource.prototype.setThumbnailURL = function (uri, type, size) { - this.thumbnail_url = uri - this.thumbnail_type = type - this.thumbnail_size = size ? size.replace(/x/g, "×") : undefined +RadioSource.prototype.setURI = function (uri) { this.uri = uri; return this } +RadioSource.prototype.addPreview = function (uri, type, size, displayType=null) { + this.previews.push(RadioPreview.new(uri, type, size, notNullElse(displayType, this.display_type))) return this } RadioSource.prototype.serialize = function () { return objSerialize(this, [ "type", - "url", + "uri" + ], obj => ({ ...obj, "previews": this.previews.map(preview => preview.serialize()) })) +} + +const RadioPreview = function (uri, type, size, displayType=null) { + this.uri = uri + this.type = type + this.size = size.replace(/x/g, "×") + this.display_type = notNullElse(displayType, EDisplayType.SQUARE) + return this +} + +RadioPreview.new = (uri, type, size, displayType) => new RadioPreview(uri, type, size, displayType) +RadioPreview.prototype.serialize = function () { + return objSerialize(this, [ "display_type", - "thumbnail_url", - "thumbnail_type", - "thumbnail_size" + "uri", + "type", + "size" ]) } + const mediaItems = [ 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", "image/jpg", "400x400")), + .setURI("x-gwm://wiki/night_in_junitaki_-_waves.mp3") + .addPreview("mxc://glowers.club/HCiiIVMOekjPZtiEaexDdUsD", "image/jpg", "400x400")), RadioItem.new("goodbyeautumn") .setMetadata("Goodbye Autumn", "Tomppabeats") .addSource(RadioSource.new("audio/mp3") - .setURL("x-gwm://wiki/goodbye_autumn.mp3") - .setThumbnailURL("mxc://glowers.club/HCiiIVMOekjPZtiEaexDdUsD", "image/jpg", "400x400")), + .setURI("x-gwm://wiki/goodbye_autumn.mp3") + .addPreview("mxc://glowers.club/HCiiIVMOekjPZtiEaexDdUsD", "image/jpg", "400x400")), RadioItem.new("balmy") .setMetadata("Balmy", "90sFlav") .addSource(RadioSource.new("audio/mp3") - .setURL("x-gwm://wiki/balmy90sblav.mp3") - .setThumbnailURL("mxc://glowers.club/kDNCBjvQxfPvtJVmfEMmcdov", "image/jpg", "999x999")), + .setURI("x-gwm://wiki/balmy90sblav.mp3") + .addPreview("mxc://glowers.club/kDNCBjvQxfPvtJVmfEMmcdov", "image/jpg", "999x999")), RadioItem.new("springletter") .setMetadata("Spring Letter", "90sFlav") .addSource(RadioSource.new("audio/mp3") - .setURL("x-gwm://wiki/spring_letter.mp3") - .setThumbnailURL("mxc://glowers.club/wTLwzrymoDeNGdJLEpDoEBtZ", "image/jpg", "500x500")), + .setURI("x-gwm://wiki/spring_letter.mp3") + .addPreview("mxc://glowers.club/wTLwzrymoDeNGdJLEpDoEBtZ", "image/jpg", "500x500")), RadioItem.new("weep") .setMetadata("Weep", "90sFlav") .addSource(RadioSource.new("audio/mp3") - .setURL("x-gwm://wiki/weep.mp3") - .setThumbnailURL("mxc://glowers.club/jIkXGOSECsPPyJTvgrxPhRoq", "image/jpg", "500x500")), + .setURI("x-gwm://wiki/weep.mp3") + .addPreview("mxc://glowers.club/jIkXGOSECsPPyJTvgrxPhRoq", "image/jpg", "500x500")), 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", "image/jpg", "500x500")), + .setURI("x-gwm://wiki/when_i_met_you.mp3") + .addPreview("mxc://glowers.club/ntDKDFtqeQCmIVoRtzRQdvEC", "image/jpg", "500x500")), 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", "image/jpg", "999x999")), + .setURI("x-gwm://wiki/seven_of_nine.mp3") + .addPreview("mxc://glowers.club/kDNCBjvQxfPvtJVmfEMmcdov", "image/jpg", "999x999")), RadioItem.new("callme") .setMetadata("Call Me", "90sFlav") .addSource(RadioSource.new("audio/mp3") - .setURL("x-gwm://wiki/call_me.mp3") - .setThumbnailURL("mxc://glowers.club/kDNCBjvQxfPvtJVmfEMmcdov", "image/jpg", "999x999")), + .setURI("x-gwm://wiki/call_me.mp3") + .addPreview("mxc://glowers.club/kDNCBjvQxfPvtJVmfEMmcdov", "image/jpg", "999x999")), RadioItem.new("midnightsession") .setMetadata("Midnight Session", "90sFlav") .addSource(RadioSource.new("audio/mp3") - .setURL("x-gwm://wiki/полуночная_сессия.mp3") - .setThumbnailURL("mxc://glowers.club/pLexnITqTOhJUXBOKtDAiZzv", "image/jpg", "288x288")), + .setURI("x-gwm://wiki/полуночная_сессия.mp3") + .addPreview("mxc://glowers.club/pLexnITqTOhJUXBOKtDAiZzv", "image/jpg", "288x288")), RadioItem.new("southdakota") .setMetadata("South Dakota", "Keeloh", "https://soundcloud.com/keelohproducer/southdakota") .addSource(RadioSource.new("audio/mp3") - .setURL("x-gwm://wiki/southdakota.mp3") - .setThumbnailURL("mxc://glowers.club/FJfFhscJavurBvoEuRbykpmM", "image/jpg", "500x500")), + .setURI("x-gwm://wiki/southdakota.mp3") + .addPreview("mxc://glowers.club/FJfFhscJavurBvoEuRbykpmM", "image/jpg", "500x500")), RadioItem.new("dobson") .addSource(RadioSource.new("video/mp4") - .setURL("mxc://glowers.club/mRtnfcoHYkyAOXSkYvrnbZgX") - .setThumbnailURL("mxc://glowers.club/eHKVfIITgdRKERhVOPSTDQAc", "image/jpg", "432x426")), + .setURI("mxc://glowers.club/mRtnfcoHYkyAOXSkYvrnbZgX") + .addPreview("mxc://glowers.club/eHKVfIITgdRKERhVOPSTDQAc", "image/jpg", "432x426")), RadioItem.new("poljacked") .addSource(RadioSource.new("video/mp4") - .setURL("mxc://glowers.club/stlNnyEIUVGluyhpPSGhtjJg") - .setThumbnailURL("mxc://glowers.club/BczfFtojBhwMxTNjoZfhemam", "image/jpg", "638x360")) + .setURI("mxc://glowers.club/stlNnyEIUVGluyhpPSGhtjJg") + .addPreview("mxc://glowers.club/BczfFtojBhwMxTNjoZfhemam", "image/jpg", "638x360")) .addSource(RadioSource.new("video/webm") - .setURL("mxc://glowers.club/xnYQdrroEheIZBfigHGZferu") - .setThumbnailURL("mxc://glowers.club/BczfFtojBhwMxTNjoZfhemam", "image/jpg", "638x360")), + .setURI("mxc://glowers.club/xnYQdrroEheIZBfigHGZferu") + .addPreview("mxc://glowers.club/BczfFtojBhwMxTNjoZfhemam", "image/jpg", "638x360")), RadioItem.new("femalecops") .setTags([ "misc" ]) .addSource(RadioSource.new("video/mp4") - .setURL("mxc://glowers.club/ZSyUyEGvOLOoUaqFVoCYPTif") - .setThumbnailURL("mxc://glowers.club/BVQhXkWSYbvFcSerzVZFgfrn", "image/jpg", "600x600")) + .setURI("mxc://glowers.club/ZSyUyEGvOLOoUaqFVoCYPTif") + .addPreview("mxc://glowers.club/BVQhXkWSYbvFcSerzVZFgfrn", "image/jpg", "600x600")) .addSource(RadioSource.new("video/webm") - .setURL("mxc://glowers.club/RYjIfTiZKSKBdYBvjGtyBILa") - .setThumbnailURL("mxc://glowers.club/BVQhXkWSYbvFcSerzVZFgfrn", "image/jpg", "600x600")), + .setURI("mxc://glowers.club/RYjIfTiZKSKBdYBvjGtyBILa") + .addPreview("mxc://glowers.club/BVQhXkWSYbvFcSerzVZFgfrn", "image/jpg", "600x600")), RadioItem.new("autisticclowns") .setTags([ "misc" ]) .addSource(RadioSource.new("video/mp4") - .setURL("mxc://glowers.club/fGszYTUkpyWsKuxphzJSfAZk") - .setThumbnailURL("mxc://glowers.club/esDPBgpoTvTtqekHAQJRwqtK", "image/jpg", "480x272")) + .setURI("mxc://glowers.club/fGszYTUkpyWsKuxphzJSfAZk") + .addPreview("mxc://glowers.club/esDPBgpoTvTtqekHAQJRwqtK", "image/jpg", "480x272")) .addSource(RadioSource.new("video/webm") - .setURL("mxc://glowers.club/WqYtubpqVplLjSxxmaxNeQir") - .setThumbnailURL("mxc://glowers.club/esDPBgpoTvTtqekHAQJRwqtK", "image/jpg", "480x272")), + .setURI("mxc://glowers.club/WqYtubpqVplLjSxxmaxNeQir") + .addPreview("mxc://glowers.club/esDPBgpoTvTtqekHAQJRwqtK", "image/jpg", "480x272")), 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", "image/jpg", "320x180")) + .setURI("mxc://glowers.club/abgQasVrghOSkpRZTIfHMFyF") + .addPreview("mxc://glowers.club/IhivpcDssjnjSDHBdMEGGwVp", "image/jpg", "320x180")) .addSource(RadioSource.new("video/mp4") - .setURL("mxc://glowers.club/ieQlfAlPPGeXLsvevolcQKqO") - .setThumbnailURL("mxc://glowers.club/IhivpcDssjnjSDHBdMEGGwVp", "image/jpg", "320x180")), + .setURI("mxc://glowers.club/ieQlfAlPPGeXLsvevolcQKqO") + .addPreview("mxc://glowers.club/IhivpcDssjnjSDHBdMEGGwVp", "image/jpg", "320x180")), RadioItem.new("dootnukem") .setMetadata("Grabbag", "Lee Jackson") .addSource(RadioSource.new("audio/mp3") - .setURL("mxc://glowers.club/xsuBJwyAUwuDoASbmqjZWrLO") - .setThumbnailURL("mxc://glowers.club/ymWgXucYRzhsgdiecjBkFvmz", "image/jpg", "1600x1800") + .setURI("mxc://glowers.club/xsuBJwyAUwuDoASbmqjZWrLO") + .addPreview("mxc://glowers.club/ymWgXucYRzhsgdiecjBkFvmz", "image/jpg", "1600x1800") .setDisplayType(EDisplayType.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", "image/jpg", "640x360")), + .setURI("mxc://glowers.club/egAyPBuGNFPYyvnMWMxySLiX") + .addPreview("mxc://glowers.club/dOxJvUWRlGqRRxJdpDRZyeko", "image/jpg", "640x360")), // TODO: Add metadata RadioItem.new("feizhou") .setMetadata("Without the Communist Party, There Would Be No New China", "Brother Hao", "https://youtu.be/5tCMI0uKbBE") .addSource(RadioSource.new("video/mp4") - .setURL("mxc://glowers.club/fVKJZgWpIHRmilhZLboFXOIK") - .setThumbnailURL("mxc://glowers.club/EuYQZnqLjRGPMocgqGqtKFpJ", "image/jpg", "366x240")) + .setURI("mxc://glowers.club/fVKJZgWpIHRmilhZLboFXOIK") + .addPreview("mxc://glowers.club/EuYQZnqLjRGPMocgqGqtKFpJ", "image/jpg", "366x240")) .addSource(RadioSource.new("video/webm") - .setURL("mxc://glowers.club/EVRGpqeefZdsjVawOvSkOdvZ") - .setThumbnailURL("mxc://glowers.club/GywrCPMpcpsLFJQAuYoZRuzq", "image/jpg", "366x240")), + .setURI("mxc://glowers.club/EVRGpqeefZdsjVawOvSkOdvZ") + .addPreview("mxc://glowers.club/GywrCPMpcpsLFJQAuYoZRuzq", "image/jpg", "366x240")), RadioItem.new("breathe") .setMetadata("Breathe (in the Air)", "Pink Floyd") .addSource(RadioSource.new("video/mp4") - .setURL("mxc://glowers.club/MOyzIHtapiyrpxaYRoiQqMqf") - .setThumbnailURL("mxc://glowers.club/KytvUDmLWCFKQWwHemdDTksd", "image/jpg", "640x360")) + .setURI("mxc://glowers.club/MOyzIHtapiyrpxaYRoiQqMqf") + .addPreview("mxc://glowers.club/KytvUDmLWCFKQWwHemdDTksd", "image/jpg", "640x360")) .addSource(RadioSource.new("video/webm") - .setURL("mxc://glowers.club/HAGTNySLRemaDfjZMSmpktDj") - .setThumbnailURL("mxc://glowers.club/KytvUDmLWCFKQWwHemdDTksd", "image/jpg", "640x360")), + .setURI("mxc://glowers.club/HAGTNySLRemaDfjZMSmpktDj") + .addPreview("mxc://glowers.club/KytvUDmLWCFKQWwHemdDTksd", "image/jpg", "640x360")), 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", "image/jpg", "276x240")), + .setURI("mxc://glowers.club/bxMoRJmYFteVNNntNhqrniNJ") + .addPreview("mxc://glowers.club/YgeFvRPLguZOCGtUJFJednNj", "image/jpg", "276x240")), RadioItem.new("onegame") .setMetadata("ONE GAME", "Chris Voiceman") .addSource(RadioSource.new("audio/mp3") - .setURL("mxc://glowers.club/iejQiyaVtnqhuSSCuXqviAIN") - .setThumbnailURL("mxc://glowers.club/bZonXMZjhadXyazpKscvRBiP", "image/jpg", "255x255")), + .setURI("mxc://glowers.club/iejQiyaVtnqhuSSCuXqviAIN") + .addPreview("mxc://glowers.club/bZonXMZjhadXyazpKscvRBiP", "image/jpg", "255x255")), RadioItem.new("imaginebeingdruckmann") .setMetadata("Imagine Being Druckmann", "Chris Voiceman") .addSource(RadioSource.new("audio/mp3") - .setURL("mxc://glowers.club/wRsCVvtUiLzFnDjwwgkCnXzN") - .setThumbnailURL("mxc://glowers.club/ipWDVreHeWKOqefUBuvyFxjj", "image/jpg", "255x255")), + .setURI("mxc://glowers.club/wRsCVvtUiLzFnDjwwgkCnXzN") + .addPreview("mxc://glowers.club/ipWDVreHeWKOqefUBuvyFxjj", "image/jpg", "255x255")), RadioItem.new("copeacabana") .setMetadata("Cope-a-Cabana", "Chris Voiceman") .addSource(RadioSource.new("audio/mp3") - .setURL("mxc://glowers.club/zEmMFUyaIBmuqAeogVZAMrmO") - .setThumbnailURL("mxc://glowers.club/WBhXYzFgTyMVTTEWKwzDfsgF", "image/jpg", "512x512")), + .setURI("mxc://glowers.club/zEmMFUyaIBmuqAeogVZAMrmO") + .addPreview("mxc://glowers.club/WBhXYzFgTyMVTTEWKwzDfsgF", "image/jpg", "512x512")), 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", "image/gif", "420x236")), + .setURI("x-gwm://gnujihad.mp3") + .addPreview("x-gwm://chromiumjihad.gif", "image/gif", "420x236")), RadioItem.new("thisistheinfowar") .setMetadata("In the House, In a Heartbeat", "John Murphy") .addSource(RadioSource.new("video/mp4") - .setURL("mxc://glowers.club/HVZUugkUhbJEPDncuTpAnOfh") - .setThumbnailURL("mxc://glowers.club/klXuXEwYNmYvsZhNOaXsDGJq", "image/jpg", "640x360")) + .setURI("mxc://glowers.club/HVZUugkUhbJEPDncuTpAnOfh") + .addPreview("mxc://glowers.club/klXuXEwYNmYvsZhNOaXsDGJq", "image/jpg", "640x360")) .addSource(RadioSource.new("video/webm") - .setURL("mxc://glowers.club/znoCPlczXEXaEAVaiKHopnAV") - .setThumbnailURL("mxc://glowers.club/klXuXEwYNmYvsZhNOaXsDGJq", "image/jpg", "640x360")), + .setURI("mxc://glowers.club/znoCPlczXEXaEAVaiKHopnAV") + .addPreview("mxc://glowers.club/klXuXEwYNmYvsZhNOaXsDGJq", "image/jpg", "640x360")), RadioItem.new("floyd") .setMetadata("Paralyzer", "Finger Seven") .setTags([ "misc" ]) .addSource(RadioSource.new("video/mp4") - .setURL("mxc://glowers.club/qtBuqQBqBrpyusCsWYXlgmtE") - .setThumbnailURL("mxc://glowers.club/JjsGuJkEGAbudLaYvbAcxryQ", "image/jpg", "600x600")) + .setURI("mxc://glowers.club/qtBuqQBqBrpyusCsWYXlgmtE") + .addPreview("mxc://glowers.club/JjsGuJkEGAbudLaYvbAcxryQ", "image/jpg", "600x600")) .addSource(RadioSource.new("video/webm") - .setURL("mxc://glowers.club/IusHmBCOyJZFGHxsGjRkYqXf") - .setThumbnailURL("mxc://glowers.club/JjsGuJkEGAbudLaYvbAcxryQ", "image/jpg", "600x600")), + .setURI("mxc://glowers.club/IusHmBCOyJZFGHxsGjRkYqXf") + .addPreview("mxc://glowers.club/JjsGuJkEGAbudLaYvbAcxryQ", "image/jpg", "600x600")), RadioItem.new("amd") .setMetadata("Svetovid", "Jan Janko Močnik") .setTags([ "misc" ]) .addSource(RadioSource.new("video/mp4") - .setURL("mxc://glowers.club/wgQPrdTCUUTnKgpnwDVlEakc") - .setThumbnailURL("mxc://glowers.club/GccquMupQGvDXYNeifUbxfuy", "image/jpg", "800x450")) + .setURI("mxc://glowers.club/wgQPrdTCUUTnKgpnwDVlEakc") + .addPreview("mxc://glowers.club/GccquMupQGvDXYNeifUbxfuy", "image/jpg", "800x450")) .addSource(RadioSource.new("video/webm") - .setURL("mxc://glowers.club/RBvSWrEWiFtIuDUCoxZbCDTW") - .setThumbnailURL("mxc://glowers.club/GccquMupQGvDXYNeifUbxfuy", "image/jpg", "800x450")), + .setURI("mxc://glowers.club/RBvSWrEWiFtIuDUCoxZbCDTW") + .addPreview("mxc://glowers.club/GccquMupQGvDXYNeifUbxfuy", "image/jpg", "800x450")), // 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")), + .setURI("mxc://glowers.club/cJMVPnPpkSZFHIRHtzXRrvna")), RadioItem.new("honorary") .setMetadata("Erika", "Major Han Friess") .addSource(RadioSource.new("video/mp4") - .setURL("mxc://glowers.club/cQgzwWXtxDSqqOlwGZYShVXS") - .setThumbnailURL("mxc://glowers.club/aENkwWEKXIztqyBTJrBHCmRQ", "image/jpg", "800x450")) + .setURI("mxc://glowers.club/cQgzwWXtxDSqqOlwGZYShVXS") + .addPreview("mxc://glowers.club/aENkwWEKXIztqyBTJrBHCmRQ", "image/jpg", "800x450")) .addSource(RadioSource.new("video/webm") - .setURL("mxc://glowers.club/qMkbHHunSgPzkFpcoOuYeIuE") - .setThumbnailURL("mxc://glowers.club/aENkwWEKXIztqyBTJrBHCmRQ", "image/jpg", "800x450")), + .setURI("mxc://glowers.club/qMkbHHunSgPzkFpcoOuYeIuE") + .addPreview("mxc://glowers.club/aENkwWEKXIztqyBTJrBHCmRQ", "image/jpg", "800x450")), RadioItem.new("bashar") .setMetadata("God, Syria, and Bashar", "Rami Kazour") .addSource(RadioSource.new("audio/mp3") - .setURL("mxc://glowers.club/egmaXMIHsNmblfDjyTGHdyas") - .setThumbnailURL("mxc://glowers.club/wpwHKoSFsxkNttaNyaNFzhMk", "image/jpg", "794x582")), + .setURI("mxc://glowers.club/egmaXMIHsNmblfDjyTGHdyas") + .addPreview("mxc://glowers.club/wpwHKoSFsxkNttaNyaNFzhMk", "image/jpg", "794x582")), RadioItem.new("hatethem") .setMetadata("Niggerz Bop", "Mike David", "https://youtu.be/VkcAXS9IKdc") .setNiggadata("hatethem", "585a286c042231244a73b19e") .addSource(RadioSource.new("audio/mp3") - .setURL("mxc://glowers.club/kYKpgAelvgRjDOVHJYKIYwdS") - .setThumbnailURL("mxc://glowers.club/IbShqtSWZksFbnOdFiVDFwqD", "image/jpg", "609x600")) + .setURI("mxc://glowers.club/kYKpgAelvgRjDOVHJYKIYwdS") + .addPreview("mxc://glowers.club/IbShqtSWZksFbnOdFiVDFwqD", "image/jpg", "609x600")) .addSource(RadioSource.new("audio/ogg") - .setURL("mxc://glowers.club/wdflEjUfqAkoyOyCDBXebDkw") - .setThumbnailURL("mxc://glowers.club/IbShqtSWZksFbnOdFiVDFwqD", "image/jpg", "609x600")), + .setURI("mxc://glowers.club/wdflEjUfqAkoyOyCDBXebDkw") + .addPreview("mxc://glowers.club/IbShqtSWZksFbnOdFiVDFwqD", "image/jpg", "609x600")), RadioItem.new("wishmaster") .setMetadata("Wishmaster", "Van Canto", "https://youtu.be/XCGQiGEYl4Y") .setNiggadata("wishmaster", "570550d318f3c6dc5677b9f6") .addSource(RadioSource.new("audio/mp3") - .setURL("mxc://glowers.club/TWmjcXRxqaVOfYnWPItiPAcd") - .setThumbnailURL("mxc://glowers.club/OKTbfAlagYXulaeBmgwkNwii", "image/jpg", "352x288") + .setURI("mxc://glowers.club/TWmjcXRxqaVOfYnWPItiPAcd") + .addPreview("mxc://glowers.club/OKTbfAlagYXulaeBmgwkNwii", "image/jpg", "352x288") .setDisplayType(EDisplayType.STRETCH)) .addSource(RadioSource.new("audio/ogg") - .setURL("mxc://glowers.club/uaxDKxCUtRVXMWAJgoKeiNcJ") - .setThumbnailURL("mxc://glowers.club/OKTbfAlagYXulaeBmgwkNwii", "image/jpg", "352x288") + .setURI("mxc://glowers.club/uaxDKxCUtRVXMWAJgoKeiNcJ") + .addPreview("mxc://glowers.club/OKTbfAlagYXulaeBmgwkNwii", "image/jpg", "352x288") .setDisplayType(EDisplayType.STRETCH)), RadioItem.new("negromancy") .setMetadata(undefined, undefined, "https://youtu.be/PxjA-jq1e7E") .setTags([ "misc" ]) .addSource(RadioSource.new("video/mp4") - .setURL("mxc://glowers.club/kYDmqwhymAidlTbdFHHliXrk") - .setThumbnailURL("mxc://glowers.club/qAtvGoVERlYfFnNWeizoYiGP", "image/jpg", "640x360")) + .setURI("mxc://glowers.club/kYDmqwhymAidlTbdFHHliXrk") + .addPreview("mxc://glowers.club/qAtvGoVERlYfFnNWeizoYiGP", "image/jpg", "640x360")) .addSource(RadioSource.new("video/webm") - .setURL("mxc://glowers.club/hRDjowdyaPRkdrRkHtCeqGug") - .setThumbnailURL("mxc://glowers.club/qAtvGoVERlYfFnNWeizoYiGP", "image/jpg", "640x360")), + .setURI("mxc://glowers.club/hRDjowdyaPRkdrRkHtCeqGug") + .addPreview("mxc://glowers.club/qAtvGoVERlYfFnNWeizoYiGP", "image/jpg", "640x360")), RadioItem.new("crocodilechop") .setMetadata("Crocodile Chop", "Neil Cicierega", "https://soundcloud.com/neilcic/crocodile-chop") .setNiggadata("crocodilechop", "570550d318f3c6dc5677b9d1") .addSource(RadioSource.new("audio/mp3") - .setURL("mxc://glowers.club/CIwbaGcPmsbqvZtdILxJxdHN") - .setThumbnailURL("mxc://glowers.club/ITHVCToEENFZhXGKaYuHplFV", "image/jpg", "500x500")), + .setURI("mxc://glowers.club/CIwbaGcPmsbqvZtdILxJxdHN") + .addPreview("mxc://glowers.club/ITHVCToEENFZhXGKaYuHplFV", "image/jpg", "500x500")), RadioItem.new("tapeworms") .setMetadata("I Staple Tapeworms on my Penis", "SillyJenny9000", "https://youtu.be/v21iDJeWfVE") .setNiggadata("tapeworms", "570550d318f3c6dc5677b9b0") .addSource(RadioSource.new("audio/mp3") - .setURL("mxc://glowers.club/NnrVJeWXXzqEUDhDQazMDYrr") - .setThumbnailURL("mxc://glowers.club/jKmUwOLJMGPAhdJGusuWCJgQ", "image/jpg", "652x619")), + .setURI("mxc://glowers.club/NnrVJeWXXzqEUDhDQazMDYrr") + .addPreview("mxc://glowers.club/jKmUwOLJMGPAhdJGusuWCJgQ", "image/jpg", "652x619")), RadioItem.new("withoutcosby") .setMetadata("without cosby", "bong iguana", "https://soundcloud.com/bong-iguana/without-cosby") .setNiggadata("withoutcosby", "570550d318f3c6dc5677b9e9") .addSource(RadioSource.new("audio/mp3") - .setURL("mxc://glowers.club/ERjkVBvKLvTIBEhOsEkWHENM") - .setThumbnailURL("mxc://glowers.club/xgoxdfvMRtmobnPMTrdqsQic", "image/jpg", "500x500")), + .setURI("mxc://glowers.club/ERjkVBvKLvTIBEhOsEkWHENM") + .addPreview("mxc://glowers.club/xgoxdfvMRtmobnPMTrdqsQic", "image/jpg", "500x500")), RadioItem.new("niggatorial") .setMetadata("I'm The 2007 YouTube Tutorial", "▲A▲", "https://soundcloud.com/kraiqyttyj/im-the-2007-youtube-tutorial") .setNiggadata("tutorial", "570550d318f3c6dc5677b9d7") .addSource(RadioSource.new("audio/mp3") - .setURL("mxc://glowers.club/XZGliHHOkhcxCSUxKoIkgUlI") - .setThumbnailURL("mxc://glowers.club/nAaKRXuNBjltAYJbsLnjGusH", "image/jpg", "899x715")), + .setURI("mxc://glowers.club/XZGliHHOkhcxCSUxKoIkgUlI") + .addPreview("mxc://glowers.club/nAaKRXuNBjltAYJbsLnjGusH", "image/jpg", "899x715")), RadioItem.new("imposterd") .setMetadata("Among Us Eurobeat Remix", "maki ligon", "https://soundcloud.com/maki-ligon-deez-nutz/among-us-drip-eurobeat-remix") .setTags([ "sus" ]) .addSource(RadioSource.new("audio/mp3") - .setURL("x-gwm://include/imposterd.mp3") - .setThumbnailURL("x-gwm://include/crewmate.gif", "image/gif", "128x108")), + .setURI("x-gwm://include/imposterd.mp3") + .addPreview("x-gwm://include/crewmate.gif", "image/gif", "128x108")), RadioItem.new("dripmachine") .setMetadata("Amogus Drip Machine", "maki ligon", "https://soundcloud.com/maki-ligon-deez-nutz/amogus-drip-machine") .setTags([ "sus" ]) .addSource(RadioSource.new("audio/mp3") - .setURL("mxc://glowers.club/DyboACFryZTCDeIgHtcRaBpL") - .setThumbnailURL("mxc://glowers.club/VFehbVZaCVcNhQTYWuWRYTiM", "image/jpg", "500x500")), + .setURI("mxc://glowers.club/DyboACFryZTCDeIgHtcRaBpL") + .addPreview("mxc://glowers.club/VFehbVZaCVcNhQTYWuWRYTiM", "image/jpg", "500x500")), RadioItem.new("loneimposter") .setMetadata("Lone Impostor", "maki ligon", "https://youtu.be/QbIckU4sXBM") .setTags([ "sus" ]) .addSource(RadioSource.new("audio/mp3") - .setURL("mxc://glowers.club/oswdiINtTUUbQYEMEKpVmsHN") - .setThumbnailURL("mxc://glowers.club/jYlptPwURJXVMBNivxlBFPuP", "image/jpg", "1440x1440")), + .setURI("mxc://glowers.club/oswdiINtTUUbQYEMEKpVmsHN") + .addPreview("mxc://glowers.club/jYlptPwURJXVMBNivxlBFPuP", "image/jpg", "1440x1440")), RadioItem.new("amogusdrip") .setMetadata("Among Us Drip Theme Song", "Leonz", "https://youtu.be/grd-K33tOSM") .setTags([ "sus" ]) .addSource(RadioSource.new("audio/mp3") - .setURL("mxc://glowers.club/xQHxUgpRUMtIkiBaszXiGAvh") - .setThumbnailURL("mxc://glowers.club/erMHzidVOoqoWFXIxXAcozqW", "image/jpg", "512x512")), + .setURI("mxc://glowers.club/xQHxUgpRUMtIkiBaszXiGAvh") + .addPreview("mxc://glowers.club/erMHzidVOoqoWFXIxXAcozqW", "image/jpg", "512x512")), RadioItem.new("crewmate") .setMetadata("Among Us (Lofi Hip Hop Remix)", "Leonz", "https://youtu.be/gU39w8s54_Q") .setTags([ "sus" ]) .addSource(RadioSource.new("audio/mp3") - .setURL("mxc://glowers.club/txMHzslGxRyDmNVsUCObJRzc") - .setThumbnailURL("mxc://glowers.club/PfEBpatFHatQubohkgQThOor", "image/jpg", "632x632")), + .setURI("mxc://glowers.club/txMHzslGxRyDmNVsUCObJRzc") + .addPreview("mxc://glowers.club/PfEBpatFHatQubohkgQThOor", "image/jpg", "632x632")), RadioItem.new("GETOUTOFMYHEAD") .setMetadata("GETOUTOFMYHEAD", "placeboing", "https://youtu.be/Xnv38FnLkbM") .setTags([ "sus" ]) .addSource(RadioSource.new("video/mp4") - .setURL("mxc://glowers.club/sEtheeOyZlztUtQuHOzOJpOk") - .setThumbnailURL("mxc://glowers.club/bJveZSEIXFsnEKdjDvwmmENo", "image/jpg", "800x450")), + .setURI("mxc://glowers.club/sEtheeOyZlztUtQuHOzOJpOk") + .addPreview("mxc://glowers.club/bJveZSEIXFsnEKdjDvwmmENo", "image/jpg", "800x450")), RadioItem.new("gay") .setMetadata("I Am Gay", "Holland Boys", "https://youtu.be/cZs_nP1WufE") .setTags([ "gay" ]) .addSource(RadioSource.new("audio/mp3") - .setURL("mxc://glowers.club/FAaatrvlEjJFljvNHhDhcNGl") - .setThumbnailURL("mxc://glowers.club/KrefLQCybeCNwLIFZwzWVolF", "image/png", "489x512")), + .setURI("mxc://glowers.club/FAaatrvlEjJFljvNHhDhcNGl") + .addPreview("mxc://glowers.club/KrefLQCybeCNwLIFZwzWVolF", "image/png", "489x512")), RadioItem.new("floydtrix") .setMetadata("Clubbed to Death", "Rob Dougan", "https://youtu.be/pFS4zYWxzNA") .addSource(RadioSource.new("audio/mp3") - .setURL("mxc://glowers.club/YUqRzRddNWuXQaAlPPMpwvse") - .setThumbnailURL("mxc://glowers.club/mFyOeCDaBRhxZCXeeMxDmZhD", "image/jpg", "588x634")), + .setURI("mxc://glowers.club/YUqRzRddNWuXQaAlPPMpwvse") + .addPreview("mxc://glowers.club/mFyOeCDaBRhxZCXeeMxDmZhD", "image/jpg", "588x634")), RadioItem.new("hotline") .setMetadata("Gangster Party Line", "Brent Weinbach", "https://youtu.be/Cx1J2CzNnS8") .setNiggadata("hotline", undefined) .addTags([ "misc" ]) .addSource(RadioSource.new("video/mp4") - .setURL("mxc://glowers.club/gnZElBwskTnBXkeZPiINVtSB") - .setThumbnailURL("mxc://glowers.club/iPoGcvVbhmElZgaZuEdNQDBJ", "image/jpg", "480x356")), + .setURI("mxc://glowers.club/gnZElBwskTnBXkeZPiINVtSB") + .addPreview("mxc://glowers.club/iPoGcvVbhmElZgaZuEdNQDBJ", "image/jpg", "480x356")), RadioItem.new("bldm") .setMetadata("Black Lives (Don't) Matter", "Moonman") .setTags([ "moonman" ]) .addSource(RadioSource.new("audio/mp3") - .setURL("mxc://glowers.club/OXoYKzSBuKWHXcHDzZIaMfja") - .setThumbnailURL("mxc://glowers.club/SYLXjGHjuXzBnReqrfoRnuhg", "image/jpg", "1024x966")), + .setURI("mxc://glowers.club/OXoYKzSBuKWHXcHDzZIaMfja") + .addPreview("mxc://glowers.club/SYLXjGHjuXzBnReqrfoRnuhg", "image/jpg", "1024x966")), RadioItem.new("amogusfloyd") .setMetadata(undefined, undefined, "https://www.bitchute.com/video/PJXAu4xA4SUt/") .setTags([ "misc" ]) .addSource(RadioSource.new("audio/mp3") - .setURL("mxc://glowers.club/SzqNmhQOxaReaTmOegUItcHY") - .setThumbnailURL("mxc://glowers.club/aHWNIqMTUjXZRGZUqZCuOgbi", "image/jpg", "898x480") + .setURI("mxc://glowers.club/SzqNmhQOxaReaTmOegUItcHY") + .addPreview("mxc://glowers.club/aHWNIqMTUjXZRGZUqZCuOgbi", "image/jpg", "898x480") .setDisplayType(EDisplayType.LANDSCAPE)), RadioItem.new("whenblackissus") .setMetadata("Among Us theme song but it's in the style of Metallica's Black Album", "rex", "https://youtu.be/tA2Sr6GgbWo") .setTags([ "sus" ]) .addSource(RadioSource.new("audio/mp3") - .setURL("mxc://glowers.club/VDXDeYltzQOhTChQtmsZaybu") - .setThumbnailURL("mxc://glowers.club/JAWtHKTIefGJzYadLOUofaWl", "image/jpg", "1080x1080")), + .setURI("mxc://glowers.club/VDXDeYltzQOhTChQtmsZaybu") + .addPreview("mxc://glowers.club/JAWtHKTIefGJzYadLOUofaWl", "image/jpg", "1080x1080")), RadioItem.new("doot") .setMetadata("Knee Deep in the Doot", "Nick Ino", "https://youtu.be/hzPpWInAiOg") .addSource(RadioSource.new("audio/mp3") - .setURL("mxc://glowers.club/HvYByMgvFKONqIPmujCGaIIp") - .setThumbnailURL("mxc://glowers.club/dXELpQnsrrcwHuElSQHEPaRn", "image/jpg", "512x512")), + .setURI("mxc://glowers.club/HvYByMgvFKONqIPmujCGaIIp") + .addPreview("mxc://glowers.club/dXELpQnsrrcwHuElSQHEPaRn", "image/jpg", "512x512")), RadioItem.new("ywnbaw") .setMetadata("Professor proves SICKS are the best weapons", "Shadiversity", "https://youtu.be/mPnscZFUuog") .addTags([ "misc" ]) .addSource(RadioSource.new("video/mp4") - .setURL("mxc://glowers.club/qYCbeFblMeBUMDZEiuBWuFnX") - .setThumbnailURL("mxc://glowers.club/dDbuzhpAoewNQoKHCejeQqdk", "image/jpg", "800x450")), + .setURI("mxc://glowers.club/qYCbeFblMeBUMDZEiuBWuFnX") + .addPreview("mxc://glowers.club/dDbuzhpAoewNQoKHCejeQqdk", "image/jpg", "800x450")), RadioItem.new("feedandseed") .addTags([ "misc" ]) .addSource(RadioSource.new("video/mp4") - .setURL("mxc://glowers.club/vsMepElCpNKFgLltczQRjxfJ") - .setThumbnailURL("mxc://glowers.club/zUXbbLOCCxZoZDRIwVCzHFYC", "image/jpg", "654x480")), + .setURI("mxc://glowers.club/vsMepElCpNKFgLltczQRjxfJ") + .addPreview("mxc://glowers.club/zUXbbLOCCxZoZDRIwVCzHFYC", "image/jpg", "654x480")), RadioItem.new("yatta") .setMetadata("YATTA!", "HAPPATAI!", "https://youtu.be/rW6M8D41ZWU") .setNiggadata("yatta", "570550d318f3c6dc5677b9bc") .addSource(RadioSource.new("audio/mp3") - .setURL("mxc://glowers.club/oKXrDvGUNQJWzBsmwYwjsCZs") - .setThumbnailURL("mxc://glowers.club/dBJtIlaEcsZoflXYqPnihooO", "image/jpg", "374x374")) + .setURI("mxc://glowers.club/oKXrDvGUNQJWzBsmwYwjsCZs") + .addPreview("mxc://glowers.club/dBJtIlaEcsZoflXYqPnihooO", "image/jpg", "374x374")), + + RadioItem.new("alexjones") + .setMetadata("Alex Jones Remix: Renai Circulation", "Triple-Q", "https://youtu.be/ODZE5peUfWQ") + .setNiggadata("alexjones", "5796ca3646f17bf005a01be3") + .addSource(RadioSource.new("video/mp4") + .setURI("mxc://glowers.club/vADMHcSVAzikHdjSRXKsmllx") + .addPreview("mxc://glowers.club/igLcLQjIYWSzTCRAPDMxSAmh", "image/jpg", "853x480") + .addPreview("mxc://glowers.club/dcqgSxtEyYBQNpYLfpXkxADL", "image/jpg", "500x500", EDisplayType.SQUARE)) ].filter(Boolean).map(a => a.serialize()).sort((a,b) => a.id.localeCompare(b.id)) for (const item of mediaItems) { for (const index in item.sources) { - if (!item.sources[index].thumbnail_type) - console.warn(`W: No thumbnail type set for source ${index} of ${item.id}`) - if (!item.sources[index].thumbnail_size) - console.warn(`W: No thumbnail size set for source ${index} of ${item.id}`) + const source = item.sources[index] + + if (source.type.startsWith("video/") && !source.previews.some(item => item.display_type != EDisplayType.NATIVE)) + console.warn(`${item.tags?.includes("misc") ? "BAD" : "ERR"}: No audio fallback preview set for source ${index} of ${item.id}`) + + for (const p_index in source.previews) { + const preview = item.sources[index].previews[p_index] + if (!preview.type) + console.warn(`W: No type set for preview ${p_index} source ${index} of ${item.id}`) + if (!preview.size) + console.warn(`W: No size set for preview ${p_index} source ${index} of ${item.id}`) + } } } const radioObj = { - "version": 4, + "version": 5, "songs": mediaItems } +//console.info(require("util").inspect(mediaItems[0], { colors: true, depth: Infinity })) + fs.writeFileSync("./data/songs.json", JSON.stringify(radioObj)) //fs.writeFileSync("./data/songs.js", `glowersRadioSongsCallback(${JSON.stringify(radioObj)})`) //fs.writeFileSync("./data/songs.html", ``)