diff --git a/generate.js b/generate.js index 0fa173a..b0d85a0 100755 --- a/generate.js +++ b/generate.js @@ -27,10 +27,11 @@ const notNullElse = (a, fallback) => a != null && a != undefined ? a : fallback * @params {string} id * @returns {RadioItem} */ -const RadioItem = function (id) { +const RadioItem = function (id, miscInfo) { this.id = id this.metadata = undefined this.info = undefined + this.misc = miscInfo || undefined this.tags = undefined this.sources = [] return this @@ -63,13 +64,23 @@ RadioItem.prototype.setMetadata = function (title, artist, href, extra) { * @params {RadioMetadata} metadata * @returns {RadioItem} */ -RadioItem.prototype.addTrackInfo = function (metadata) { +RadioItem.prototype.addItemInfo = function (metadata) { if (!this.info) this.info = [] this.info.push(metadata) return this } +/** + * @public + * @params {RadioMiscInfo} miscInfo + * @returns {RadioItem} + */ +RadioItem.prototype.setMiscInfo = function (miscInfo) { + this.misc = miscInfo + return this +} + /** * @public * @params {string[]} tags @@ -121,6 +132,7 @@ RadioItem.prototype.serialize = function (index) { ], obj => ({ index, ...obj, + "misc": self.misc ? self.misc.serialize() : undefined, "info": self.info?.length ? self.info.map(info => info.serialize()) : undefined, "sources": self.sources.map(source => source.serialize()) })) @@ -405,7 +417,10 @@ const BMetadataType = { "VIDEO": 0b10, "ORIGINAL": 0b100, "ALT": 0b1000, - "OFFICIAL": 0b10000 + "OFFICIAL": 0b10000, + "EXPLICIT": 0b100000, + "PREFERED": 0b1000000, + "PSEUDONYM": 0b10000000 } for (const key in BMetadataType) { @@ -486,6 +501,50 @@ RadioMetadata.prototype.serialize = function () { ]) } + +/** + * @public + * @constructor + * @params {string|undefined} title + * @params {string|undefined} artist + * @params {URL|string|undefined} [href] href + * @params {string} [extra] extra Playback effects. i.e: Pitch, speed + * @returns {RadioMetadata} + */ +const RadioMiscInfo = function (value) { + this.miscInfo = value || 0 + return this +} + +/** + * @public + * @params {number|undefined} value + * @returns {RadioPlaybackInfo} + */ +RadioMiscInfo.new = value => new RadioMiscInfo(value) + +/** + * @public + * @readonly + */ +const BMiscInfo = { + "EXPLICIT": 0b1 +} + +for (const key in BMiscInfo) { + RadioMiscInfo.prototype[`b${key[0]}${key.slice(1).toLowerCase()}`] = function () { + this.miscInfo = (this.info || 0) | BMiscInfo[key] + return this + } +} + + +/** + * @public + * @returns {number|undefined} + */ +RadioMiscInfo.prototype.serialize = function () { return this.miscInfo || undefined; } + /** * @public * @constructor @@ -522,78 +581,78 @@ RadioPlaybackInfo.prototype.serialize = function () { const mediaItems = [ RadioItem.new("nightinjunitaki") - .setMetadata("Night In Junitaki", "Wünsche", "https://soundcloud.com/samuelwunsche/night-in-junitaki") + .addItemInfo(RadioMetadata.newLA("Night In Junitaki", "Wünsche", RadioMetadata.createSoundcloudURI("night-in-junitaki", "samuelwunsche")).bOfficial()) .addTags([ "splash-song" ]) .addSource(RadioSource.new("audio/mp3", [ "mp3" ]) .setURI("x-gwm://wiki/night_in_junitaki_-_waves.mp3") .addPreview("mxc://glowers.club/HCiiIVMOekjPZtiEaexDdUsD", "image/jpg", "400x400")), RadioItem.new("goodbyeautumn") - .setMetadata("Goodbye Autumn", "Tomppabeats", "https://tomppabeats.bandcamp.com/track/goodbye-autumn") + .addItemInfo(RadioMetadata.newLA("Goodbye Autumn", "Tomppabeats", RadioMetadata.createBandcampURI("goodbye-autumn", "tomppabeats")).bOfficial()) .addTags([ "splash-song" ]) .addSource(RadioSource.new("audio/mp3", [ "mp3" ]) .setURI("x-gwm://wiki/goodbye_autumn.mp3") .addPreview("mxc://glowers.club/JslhZSsDpgtrnmWhSqYMEUDL", "image/jpg", "500x500")), RadioItem.new("balmy") - .setMetadata("Balmy", "90sFlav", "https://90sflav.bandcamp.com/track/balmy") + .addItemInfo(RadioMetadata.newLA("Balmy", "90sFlav", RadioMetadata.createBandcampURI("balmy", "90sflav")).bOfficial()) .addTags([ "splash-song" ]) .addSource(RadioSource.new("audio/mp3", [ "mp3" ]) .setURI("x-gwm://wiki/balmy90sblav.mp3") .addPreview("mxc://glowers.club/kDNCBjvQxfPvtJVmfEMmcdov", "image/jpg", "999x999")), RadioItem.new("springletter") - .setMetadata("Spring Letter", "90sFlav", "https://90sflav.bandcamp.com/track/spring-letter") + .addItemInfo(RadioMetadata.newLA("Spring Letter", "90sFlav", RadioMetadata.createBandcampURI("spring-letter", "90sflav")).bOfficial()) .addTags([ "splash-song" ]) .addSource(RadioSource.new("audio/mp3", [ "mp3" ]) .setURI("x-gwm://wiki/spring_letter.mp3") .addPreview("mxc://glowers.club/wTLwzrymoDeNGdJLEpDoEBtZ", "image/jpg", "500x500")), RadioItem.new("weep") - .setMetadata("Weep", "90sFlav", "https://90sflav.bandcamp.com/track/weep") + .addItemInfo(RadioMetadata.newLA("Weep", "90sFlav", RadioMetadata.createBandcampURI("weep", "90sflav")).bOfficial()) .addTags([ "splash-song" ]) .addSource(RadioSource.new("audio/mp3", [ "mp3" ]) .setURI("x-gwm://wiki/weep.mp3") .addPreview("mxc://glowers.club/jIkXGOSECsPPyJTvgrxPhRoq", "image/jpg", "500x500")), RadioItem.new("whenimetyou") - .setMetadata("When I Met You", "90sFlav", "https://90sflav.bandcamp.com/track/when-i-met-you") + .addItemInfo(RadioMetadata.newLA("When I Met You", "90sFlav", RadioMetadata.createBandcampURI("when-i-met-you", "90sflav")).bOfficial()) .addTags([ "splash-song" ]) .addSource(RadioSource.new("audio/mp3", [ "mp3" ]) .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", "https://90sflav.bandcamp.com/track/seven-of-nine") + .addItemInfo(RadioMetadata.newLA("Seven of Nine", "90sFlav", RadioMetadata.createBandcampURI("seven-of-nine", "90sflav")).bOfficial()) .addTags([ "splash-song" ]) .addSource(RadioSource.new("audio/mp3", [ "mp3" ]) .setURI("x-gwm://wiki/seven_of_nine.mp3") .addPreview("mxc://glowers.club/kDNCBjvQxfPvtJVmfEMmcdov", "image/jpg", "999x999")), RadioItem.new("callme") - .setMetadata("Call Me", "90sFlav", "https://90sflav.bandcamp.com/track/call-me") + .addItemInfo(RadioMetadata.newLA("Call Me", "90sFlav", RadioMetadata.createBandcampURI("call-me", "90sflav")).bOfficial()) .addTags([ "splash-song" ]) .addSource(RadioSource.new("audio/mp3", [ "mp3" ]) .setURI("x-gwm://wiki/call_me.mp3") .addPreview("mxc://glowers.club/kDNCBjvQxfPvtJVmfEMmcdov", "image/jpg", "999x999")), RadioItem.new("midnightsession") - .setMetadata("Midnight Session", "90sFlav", "https://90sflav.bandcamp.com/track/-") + .addItemInfo(RadioMetadata.newLA("Midnight Session", "90sFlav", RadioMetadata.createBandcampURI("-", "90sflav")).bOfficial()) .addTags([ "splash-song" ]) .addSource(RadioSource.new("audio/mp3", [ "mp3" ]) .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") + .addItemInfo(RadioMetadata.newLA("South Dakota", "Keeloh", RadioMetadata.createSoundcloudURI("southdakota", "keelohproducer")).bOfficial()) .addTags([ "splash-song" ]) .addSource(RadioSource.new("audio/mp3", [ "mp3" ]) .setURI("x-gwm://wiki/southdakota.mp3") .addPreview("mxc://glowers.club/FJfFhscJavurBvoEuRbykpmM", "image/jpg", "500x500")), RadioItem.new("dobson") - .addTrackInfo(RadioMetadata.newLA("Without Me", "Eminem", RadioMetadata.createYouTubeURI("YVkUvmDQ3HY")).bOriginal().bOfficial()) - .addTrackInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(15477279)).bOriginal().bOfficial().bAlt()) + .addItemInfo(RadioMetadata.newLA("Without Me", "Eminem", RadioMetadata.createYouTubeURI("YVkUvmDQ3HY")).bOriginal().bOfficial()) + .addItemInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(15477279)).bOriginal().bOfficial().bAlt()) .addSource(RadioSource.new("video/mp4", [ "avc1.64000D", "mp4a.40.2" ]) .setURI("mxc://glowers.club/mRtnfcoHYkyAOXSkYvrnbZgX") .addPreview("mxc://glowers.club/eHKVfIITgdRKERhVOPSTDQAc", "image/jpg", "432x426")), @@ -601,9 +660,9 @@ const mediaItems = [ // FIXME: Original audio source found, not remix source or video source RadioItem.new("poljacked") //.setMetadata("BLACK BLADE", "Seyit Akbas", "https://youtu.be/6RnNXLZ2rfw", "1.15%, pitched up") - .addTrackInfo(RadioMetadata.newLV(null, null, RadioMetadata.createBooruSoyURI(23224))) - .addTrackInfo(RadioMetadata.newLA("NEON BLADE", "MoonDeity", RadioMetadata.createYouTubeURI("Mu965dWgMMQ"), "1.315%, pitched up, bass boosted").bOriginal().bOfficial()) - .addTrackInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(1627535463)).bOriginal().bOfficial().bAlt()) + .addItemInfo(RadioMetadata.newLV(null, null, RadioMetadata.createBooruSoyURI(23224))) + .addItemInfo(RadioMetadata.newLA("NEON BLADE", "MoonDeity", RadioMetadata.createYouTubeURI("Mu965dWgMMQ"), "1.315%, pitched up, bass boosted").bOriginal().bOfficial()) + .addItemInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(1627535463)).bOriginal().bOfficial().bAlt()) .addSource(RadioSource.new("video/mp4", [ "avc1.64001E", "mp4a.40.2" ]) .setURI("mxc://glowers.club/stlNnyEIUVGluyhpPSGhtjJg") .addPreview("mxc://glowers.club/BczfFtojBhwMxTNjoZfhemam", "image/jpg", "638x360") @@ -634,9 +693,9 @@ const mediaItems = [ .addPreview("mxc://glowers.club/esDPBgpoTvTtqekHAQJRwqtK", "image/jpg", "480x272")), RadioItem.new("ifuckinglovescience") - .addTrackInfo(RadioMetadata.newLV(null, null, RadioMetadata.createBooruSoyURI(20571))) - .addTrackInfo(RadioMetadata.newLA("I FUCKING LOVE SCIENCE", "Hank Green", RadioMetadata.createYouTubeURI("RECuQaaGGfA")).bOfficial()) - .addTrackInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(868150396)).bOfficial().bAlt()) + .addItemInfo(RadioMetadata.newLV(null, null, RadioMetadata.createBooruSoyURI(20571))) + .addItemInfo(RadioMetadata.newLA("I FUCKING LOVE SCIENCE", "Hank Green", RadioMetadata.createYouTubeURI("RECuQaaGGfA")).bOfficial()) + .addItemInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(868150396)).bOfficial().bAlt()) .addSource(RadioSource.new("video/mp4", [ "avc1.4D4029", "mp4a.40.2" ]) .setURI("mxc://glowers.club/tLnDwRvJDckOIopncgUfodAn") .addPreview("mxc://glowers.club/burAaUYSveyoVMHrijAsAxlL", "image/jpg", "768x432")) @@ -649,19 +708,23 @@ const mediaItems = [ .addPreview("mxc://glowers.club/aAYxVtwfHuIqXzYkrVwHZDjl", "image/jpg", "500x500")), RadioItem.new("dootnukem") + .addItemInfo(RadioMetadata.newLA("Doot Nukem", "Sylva", RadioMetadata.createYouTubeURI("cHJQ6LqZ4ks")).bOfficial()) + .addItemInfo(RadioMetadata.newLA("Grabbag (Duke Nukem 3D Main Menu Theme)", "Lee Jackson", RadioMetadata.createYouTubeURI("GGt5PgednCo")).bOriginal()) .setMetadata("Doot Nukem", "Sylva", "https://youtu.be/cHJQ6LqZ4ks") .addSource(RadioSource.new("audio/mp3", [ "mp3" ]) .setURI("mxc://glowers.club/xsuBJwyAUwuDoASbmqjZWrLO") - .addPreview("mxc://glowers.club/ymWgXucYRzhsgdiecjBkFvmz", "image/jpg", "1600x1800", EDisplayType.STRETCH)), + .addPreview("mxc://glowers.club/BDcGZnyBusBBpfbMkeoSAHWf", "image/jpg", "400x400")), + // TODO: No video attribution RadioItem.new("hyperborea") - .setMetadata("Somebody That I Used to Know", "VelvetCasca") + .addItemInfo(RadioMetadata.newLA("Gotye - WokeUpLikeThis", "BLACCMASS", RadioMetadata.createYouTubeURI("TLsLd22mhOA")).bOriginal().bOfficial()) .addSource(RadioSource.new("video/mp4", [ "avc1.4D401F", "mp4a.40.2" ]) .setURI("mxc://glowers.club/egAyPBuGNFPYyvnMWMxySLiX") .addPreview("mxc://glowers.club/dOxJvUWRlGqRRxJdpDRZyeko", "image/jpg", "640x360")), RadioItem.new("feizhou") - .setMetadata("Without the Communist Party, There Would Be No New China", "Brother Hao", "https://youtu.be/5tCMI0uKbBE") + .addItemInfo(RadioMetadata.newLAV("没有共产党就没有新中国", "郝歌", RadioMetadata.createYouTubeURI("5tCMI0uKbBE"))) + .addItemInfo(RadioMetadata.newLA("没有共产党就没有新中国", "曹火星", RadioMetadata.createYouTubeURI("72tiPR12fLA")).bOriginal()) .addSource(RadioSource.new("video/mp4", [ "avc1.42C015", "mp4a.40.2" ]) .setURI("mxc://glowers.club/fVKJZgWpIHRmilhZLboFXOIK") .addPreview("mxc://glowers.club/EuYQZnqLjRGPMocgqGqtKFpJ", "image/jpg", "366x240")) @@ -1085,9 +1148,9 @@ const mediaItems = [ .addPreview("mxc://glowers.club/qnAjqhGYzBLrEmlhzbxreoUC", "image/jpg", "500x500")), RadioItem.new("piebotnik") - .addTrackInfo(RadioMetadata.newLAV("dr robotnik bakes a pie", "KnightOfGames", RadioMetadata.createYouTubeURI("jqKVLZ9wA24")).bOfficial()) - .addTrackInfo(RadioMetadata.newLAV("In HoNoR oF oUr MoSt FuNnY tIkToK", "jaydencroes", RadioMetadata.createTikTokURI("6803451075920776454", "jaydencroes")).setFor(0).bOriginal().bOfficial()) - .addTrackInfo(RadioMetadata.newLA("Dr. Robotnik's Theme", "中村正人", RadioMetadata.createYouTubeURI("KbhX7XKgkDU")).setFor(1).bOriginal()) + .addItemInfo(RadioMetadata.newLAV("dr robotnik bakes a pie", "KnightOfGames", RadioMetadata.createYouTubeURI("jqKVLZ9wA24")).bOfficial()) + .addItemInfo(RadioMetadata.newLAV("In HoNoR oF oUr MoSt FuNnY tIkToK", "jaydencroes", RadioMetadata.createTikTokURI("6803451075920776454", "jaydencroes")).setFor(0).bOriginal().bOfficial()) + .addItemInfo(RadioMetadata.newLA("Dr. Robotnik's Theme", "中村正人", RadioMetadata.createYouTubeURI("KbhX7XKgkDU")).setFor(1).bOriginal()) .addTags([ "ylyl" ]) .addSource(RadioSource.new("video/mp4", [ "avc1.4D4028", "mp4a.40.2" ]) .setURI("mxc://glowers.club/YUjleEpsnUnjnQPscgAzVPzX") @@ -1158,7 +1221,7 @@ const mediaItems = [ .addPreview("mxc://glowers.club/gGvSqctfUJWHEYxYfbZEwQpn", "image/jpg", "416x416")), RadioItem.new("wiphop") - .addTrackInfo(RadioMetadata.newLA("[SP] WIP HOP", "CodeZombie", RadioMetadata.createSoundcloudURI("wip-hop", "codezombie")).bOfficial()) + .addItemInfo(RadioMetadata.newLA("[SP] WIP HOP", "CodeZombie", RadioMetadata.createSoundcloudURI("wip-hop", "codezombie")).bOfficial()) .addTags([ "splash-song" ]) .addSource(RadioSource.new("audio/mp3", [ "mp3" ]) .setURI("mxc://glowers.club/CCsidQsdYksctdyCnlvfTDxx") @@ -1193,60 +1256,60 @@ const mediaItems = [ // TODO: album art edit sucks lol RadioItem.new("partyrockapple") - .addTrackInfo(RadioMetadata.newLA("Party Rock Apple!!", "Triple-Q", RadioMetadata.createBandcampURI("party-rock-apple", "triple-q")).bOfficial()) - .addTrackInfo(RadioMetadata.newLA("Party Rock Anthem", "LMFAO", RadioMetadata.createYouTubeURI("KQ6zr6kCPj8")).setFor(0).bOriginal().bOfficial()) - .addTrackInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(1440636627)).setFor(0).bOriginal().bOfficial().bAlt()) - .addTrackInfo(RadioMetadata.newLA("Bad Apple!!", "nomico", RadioMetadata.createNicoNicoURI("sm8628149")).setFor(1).bOriginal()) - .addTrackInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(1440636627)).setFor(1).bOriginal().bOfficial().bAlt()) + .addItemInfo(RadioMetadata.newLA("Party Rock Apple!!", "Triple-Q", RadioMetadata.createBandcampURI("party-rock-apple", "triple-q")).bOfficial()) + .addItemInfo(RadioMetadata.newLA("Party Rock Anthem", "LMFAO", RadioMetadata.createYouTubeURI("KQ6zr6kCPj8")).setFor(0).bOriginal().bOfficial()) + .addItemInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(1440636627)).setFor(0).bOriginal().bOfficial().bAlt()) + .addItemInfo(RadioMetadata.newLA("Bad Apple!!", "nomico", RadioMetadata.createNicoNicoURI("sm8628149")).setFor(1).bOriginal()) + .addItemInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(1440636627)).setFor(1).bOriginal().bOfficial().bAlt()) .addSource(RadioSource.new("audio/mp3", [ "mp3" ]) .setURI("mxc://glowers.club/ngNYSFAkLNDIMwlGsnVmwDpS") .addPreview("mxc://glowers.club/QemTpdTrUYfKEoaWgrkUChIz", "image/jpg", "500x500")), RadioItem.new("fnaf") .setMetadata("gangnam style joke", "Kirino Kōsaka", "https://soundcloud.com/kirinokosaka/gangnam-style-joke-1") - .addTrackInfo(RadioMetadata.newLA("gangnam style joke", "Kirino Kōsaka", RadioMetadata.createSoundcloudURI("gangnam-style-joke-1", "kirinokosaka")).bOfficial()) - .addTrackInfo(RadioMetadata.newLA("Les Toreadors Carmen", "Scott Cawthon", RadioMetadata.createYouTubeURI("GZOOx40rE3k")).setFor(0).bOriginal()) - .addTrackInfo(RadioMetadata.newLA("Gas Pedal (feat. Iamsu!)", "Sage The Gemini", RadioMetadata.createYouTubeURI("X8LUd51IuiA")).setFor(1).bOriginal().bOfficial()) - .addTrackInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(1434900852)).setFor(1).bOriginal().bOfficial().bAlt()) + .addItemInfo(RadioMetadata.newLA("gangnam style joke", "Kirino Kōsaka", RadioMetadata.createSoundcloudURI("gangnam-style-joke-1", "kirinokosaka")).bOfficial()) + .addItemInfo(RadioMetadata.newLA("Les Toreadors Carmen", "Scott Cawthon", RadioMetadata.createYouTubeURI("GZOOx40rE3k")).setFor(0).bOriginal()) + .addItemInfo(RadioMetadata.newLA("Gas Pedal (feat. Iamsu!)", "Sage The Gemini", RadioMetadata.createYouTubeURI("X8LUd51IuiA")).setFor(1).bOriginal().bOfficial()) + .addItemInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(1434900852)).setFor(1).bOriginal().bOfficial().bAlt()) .addSource(RadioSource.new("audio/mp3", [ "mp3" ]) .setURI("mxc://glowers.club/bmzxkzwFHChruYIjszvDrdRj") .addPreview("mxc://glowers.club/TkvoCbwQQQAwOzKwaFARDmRH", "image/jpg", "500x500")), RadioItem.new("mail") - .addTrackInfo(RadioMetadata.newLA("AOLNATION - Mail", "Personal Pong", RadioMetadata.createSoundcloudURI("aolnation-mail", "personalpong")).bOfficial()) - .addTrackInfo(RadioMetadata.newLA("Sail", "AWOLNATION", RadioMetadata.createYouTubeURI("tgIqecROs5M")).bOriginal().bOfficial()) - .addTrackInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(422478211)).bOriginal().bOfficial().bAlt()) + .addItemInfo(RadioMetadata.newLA("AOLNATION - Mail", "Personal Pong", RadioMetadata.createSoundcloudURI("aolnation-mail", "personalpong")).bOfficial()) + .addItemInfo(RadioMetadata.newLA("Sail", "AWOLNATION", RadioMetadata.createYouTubeURI("tgIqecROs5M")).bOriginal().bOfficial()) + .addItemInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(422478211)).bOriginal().bOfficial().bAlt()) .addSource(RadioSource.new("audio/mp3", [ "mp3" ]) .setURI("mxc://glowers.club/HEDaNdMsVFzIgYDkymkxnhob") .setPlaybackInfo(RadioPlaybackInfo.new().setPlaybackVolume(.4)) .addPreview("mxc://glowers.club/vBvnVioYcHeIGtvHRAaWWCab", "image/jpg", "500x500")), RadioItem.new("thisislazytown") - .addTrackInfo(RadioMetadata.newLA("This Is Lazy Town", "Soundclown Crimes Against Humanity", RadioMetadata.createSoundcloudURI("this-is-lazy-town", "thesoundclowncriminal"))) - .addTrackInfo(RadioMetadata.newLA("We Are Number One", "Stefán Karl Stefánsson", RadioMetadata.createYouTubeURI("PfYnvDL0Qcw")).setFor(0).bOriginal().bOfficial()) - .addTrackInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(1650060971)).setFor(0).bOriginal().bOfficial().bAlt()) - .addTrackInfo(RadioMetadata.newLA("This Is America", "Childish Gambino", RadioMetadata.createYouTubeURI("VYOjWnS4cMY")).setFor(1).bOriginal().bOfficial()) - .addTrackInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(1379046390)).setFor(1).bOriginal().bOfficial().bAlt()) + .addItemInfo(RadioMetadata.newLA("This Is Lazy Town", "Soundclown Crimes Against Humanity", RadioMetadata.createSoundcloudURI("this-is-lazy-town", "thesoundclowncriminal"))) + .addItemInfo(RadioMetadata.newLA("We Are Number One", "Stefán Karl Stefánsson", RadioMetadata.createYouTubeURI("PfYnvDL0Qcw")).setFor(0).bOriginal().bOfficial()) + .addItemInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(1650060971)).setFor(0).bOriginal().bOfficial().bAlt()) + .addItemInfo(RadioMetadata.newLA("This Is America", "Childish Gambino", RadioMetadata.createYouTubeURI("VYOjWnS4cMY")).setFor(1).bOriginal().bOfficial()) + .addItemInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(1379046390)).setFor(1).bOriginal().bOfficial().bAlt()) .addSource(RadioSource.new("audio/mp3", [ "mp3" ]) .setURI("mxc://glowers.club/XKaBjJLglqeAgkkPgEclMBIS") .addPreview("mxc://glowers.club/KcFqpISqthZSOFhntXAhkWIr", "image/jpg", "500x500")), // FIXME: No official source for Al-Sawarim. Artist listed on Apple Music but songs are unavailable in Europe RadioItem.new("isisman") - .addTrackInfo(RadioMetadata.newLA("ISISman", "Triple-Q", RadioMetadata.createBandcampURI("isisman", "triple-q")).bOfficial()) - .addTrackInfo(RadioMetadata.newLA("Gentleman", "PSY", RadioMetadata.createYouTubeURI("ASO_zypdnsQ")).setFor(0).bOriginal().bOfficial()) - .addTrackInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(1452841625)).setFor(0).bOriginal().bOfficial().bAlt()) - .addTrackInfo(RadioMetadata.newLA("Saleel al-Sawarim", "Abu Yasir", RadioMetadata.createInternetArchiveURI("saleel_al-sawarim")).setFor(1).bOriginal()) + .addItemInfo(RadioMetadata.newLA("ISISman", "Triple-Q", RadioMetadata.createBandcampURI("isisman", "triple-q")).bOfficial()) + .addItemInfo(RadioMetadata.newLA("Gentleman", "PSY", RadioMetadata.createYouTubeURI("ASO_zypdnsQ")).setFor(0).bOriginal().bOfficial()) + .addItemInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(1452841625)).setFor(0).bOriginal().bOfficial().bAlt()) + .addItemInfo(RadioMetadata.newLA("Saleel al-Sawarim", "Abu Yasir", RadioMetadata.createInternetArchiveURI("saleel_al-sawarim")).setFor(1).bOriginal()) .addSource(RadioSource.new("audio/mp3", [ "mp3" ]) .setURI("mxc://glowers.club/pvVRMPsnBzCadKCSaZdMmluy") .addPreview("mxc://glowers.club/zYqsUaZgAmqNDWymTPhdGJRi", "image/jpg", "500x500")), RadioItem.new("takyonmachine") - .addTrackInfo(RadioMetadata.newLAV("Wintergrips - Takyon Machine (music instrument using a very angry man)", "Uncle Ned", RadioMetadata.createYouTubeURI("gSQyPdYz4f4")).bOfficial()) - .addTrackInfo(RadioMetadata.newLA("Marble Machine", "Wintergatan", RadioMetadata.createYouTubeURI("IvUU8joBb1Q")).setFor(0).bOriginal().bOfficial()) - .addTrackInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(1319433713)).setFor(0).bOriginal().bOfficial().bAlt()) - .addTrackInfo(RadioMetadata.newLA("Takyon (Death Yon)", "Death Grips", RadioMetadata.createYouTubeURI("Htl3XWUhUOM")).setFor(1).bOriginal().bOfficial()) - .addTrackInfo(RadioMetadata.newLA(null, null, RadioMetadata.createInternetArchiveURI("DeathGrips-ExMilitaryMixtape")).setFor(1).bOriginal().bOfficial().bAlt()) + .addItemInfo(RadioMetadata.newLAV("Wintergrips - Takyon Machine (music instrument using a very angry man)", "Uncle Ned", RadioMetadata.createYouTubeURI("gSQyPdYz4f4")).bOfficial()) + .addItemInfo(RadioMetadata.newLA("Marble Machine", "Wintergatan", RadioMetadata.createYouTubeURI("IvUU8joBb1Q")).setFor(0).bOriginal().bOfficial()) + .addItemInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(1319433713)).setFor(0).bOriginal().bOfficial().bAlt()) + .addItemInfo(RadioMetadata.newLA("Takyon (Death Yon)", "Death Grips", RadioMetadata.createYouTubeURI("Htl3XWUhUOM")).setFor(1).bOriginal().bOfficial()) + .addItemInfo(RadioMetadata.newLA(null, null, RadioMetadata.createInternetArchiveURI("DeathGrips-ExMilitaryMixtape")).setFor(1).bOriginal().bOfficial().bAlt()) .addTags([ "metadata-prefer-id" ]) .addSource(RadioSource.new("video/mp4", [ "avc1.4D4029", "mp4a.40.2" ]) .setURI("mxc://glowers.club/khtMKBJAxrJgOQclpdzHDTzp") @@ -1256,10 +1319,10 @@ const mediaItems = [ .addPreview("mxc://glowers.club/VcwimKRasxlYLJMqYtJpOJGi", "image/jpg", "500x500")), RadioItem.new("ghostpieght") - .addTrackInfo(RadioMetadata.newLAV("Ghost Pieght", "uncrumpled", RadioMetadata.createYouTubeURI("SDQ-Vvdqa3s")).bOfficial()) - .addTrackInfo(RadioMetadata.newLAV("In HoNoR oF oUr MoSt FuNnY tIkToK", "jaydencroes", RadioMetadata.createTikTokURI("6803451075920776454", "jaydencroes")).setFor(0).bOriginal().bOfficial()) - .addTrackInfo(RadioMetadata.newLA("Ghost Fight", "Toby Fox", RadioMetadata.createBandcampURI("ghost-fight-2", "tobyfox")).setFor(1).bOriginal().bOfficial()) - .addTrackInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(1119807147)).setFor(1).bOriginal().bOfficial().bAlt()) + .addItemInfo(RadioMetadata.newLAV("Ghost Pieght", "uncrumpled", RadioMetadata.createYouTubeURI("SDQ-Vvdqa3s")).bOfficial()) + .addItemInfo(RadioMetadata.newLAV("In HoNoR oF oUr MoSt FuNnY tIkToK", "jaydencroes", RadioMetadata.createTikTokURI("6803451075920776454", "jaydencroes")).setFor(0).bOriginal().bOfficial()) + .addItemInfo(RadioMetadata.newLA("Ghost Fight", "Toby Fox", RadioMetadata.createBandcampURI("ghost-fight-2", "tobyfox")).setFor(1).bOriginal().bOfficial()) + .addItemInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(1119807147)).setFor(1).bOriginal().bOfficial().bAlt()) .addTags([ "ylyl" ]) .addSource(RadioSource.new("video/mp4", [ "avc1.4D4029", "mp4a.40.2" ]) .setURI("mxc://glowers.club/bVJrnYxFEUzZnebnClncWYxK") @@ -1269,43 +1332,46 @@ const mediaItems = [ .addPreview("mxc://glowers.club/OcyarqkcuWucgkXOGtcgpJAa", "image/jpg", "250x250")), RadioItem.new("moonbase") - .addTrackInfo(RadioMetadata.newLA("MOONBASE BABY (ft. Hatsune Miku)", "KnightOfGames", RadioMetadata.createYouTubeURI("MIxowl5YuaQ")).bOfficial()) - .addTrackInfo(RadioMetadata.newLA("INDUSTRY BABY", "Lil Nas X", RadioMetadata.createYouTubeURI("UTHLKHL_whs")).bOriginal().bOfficial()) - .addTrackInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(1576552565)).bOriginal().bOfficial().bAlt()) + .setMiscInfo(RadioMiscInfo.new().bExplicit()) + .addItemInfo(RadioMetadata.newLA("MOONBASE BABY (ft. Hatsune Miku)", "KnightOfGames", RadioMetadata.createYouTubeURI("MIxowl5YuaQ")).bOfficial().bExplicit()) + .addItemInfo(RadioMetadata.newLA("INDUSTRY BABY", "Lil Nas X", RadioMetadata.createYouTubeURI("UTHLKHL_whs")).bOriginal().bOfficial().bExplicit()) + .addItemInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(1576552565)).bOriginal().bOfficial().bExplicit().bAlt()) .addSource(RadioSource.new("audio/mp3", [ "mp3" ]) .setURI("mxc://glowers.club/AybVVfwhrAOCWTkGtMeIxkdB") .addPreview("mxc://glowers.club/NuOKRVCYsxywWAsmRdoSVJfX", "image/jpg", "500x500")), RadioItem.new("blsdm") - .addTrackInfo(RadioMetadata.newLA("Black Lives (Still Don't) Matter", "Moonman")) + .setMiscInfo(RadioMiscInfo.new().bExplicit()) + .addItemInfo(RadioMetadata.newLA("Black Lives (Still Don't) Matter", "Moonman").bExplicit().bPseudonym()) .addSource(RadioSource.new("audio/mp3", [ "mp3" ]) .setURI("mxc://glowers.club/GfcCntGLSZsYkkzzkaoJrUWx") .addPreview("mxc://glowers.club/yyWJVkClXhWIFqgayFFtZZDJ", "image/jpg", "500x500")), RadioItem.new("stronger") - .addTrackInfo(RadioMetadata.newLA("♂ Stonebank - How strong you are ♂", "duyui", RadioMetadata.createYouTubeURI("MIxowl5YuaQ")).bOfficial()) - .addTrackInfo(RadioMetadata.newLA("Stronger", "Stonebank", RadioMetadata.createYouTubeURI("I1NuCWfYeYc")).bOriginal().bOfficial()) - .addTrackInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(951790852)).bOriginal().bOfficial().bAlt()) + .addItemInfo(RadioMetadata.newLA("♂ Stonebank - How strong you are ♂", "duyui", RadioMetadata.createYouTubeURI("MIxowl5YuaQ")).bOfficial()) + .addItemInfo(RadioMetadata.newLA("Stronger", "Stonebank", RadioMetadata.createYouTubeURI("I1NuCWfYeYc")).bOriginal().bOfficial()) + .addItemInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(951790852)).bOriginal().bOfficial().bAlt()) .addTags([ "gachi" ]) .addSource(RadioSource.new("audio/mp3", [ "mp3" ]) .setURI("mxc://glowers.club/COBFDSucwknvESlGcXQthuMN") .addPreview("mxc://glowers.club/QnxgSLfTrHUJLeqreUVmCQhO", "image/jpg", "500x500")), RadioItem.new("cbt") - .addTrackInfo(RadioMetadata.newLA("unfinished/abandoned ytpmv projects 2 (feb 2020 - dec 2022)", "KnightOfGames", RadioMetadata.createYouTubeURI("d8FT7CpYMgQ"), "0:00 to 1:59").bOfficial()) - .addTrackInfo(RadioMetadata.newLA("One-Winged Angel (Final Fantasy VII)", "Nobuo Uematsu", RadioMetadata.createYouTubeURI("zkZGFNCS6iQ")).setFor(0).bOriginal().bOfficial()) - .addTrackInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(1439125559)).setFor(0).bOriginal().bOfficial().bAlt()) - .addTrackInfo(RadioMetadata.newLA("CocknBallTorture.ogg", "Alabaster Constantine III", RadioMetadata.createWikipediaURI("File:CocknBallTorture.ogg")).setFor(1).bOriginal().bOfficial()) + .setMiscInfo(RadioMiscInfo.new().bExplicit()) + .addItemInfo(RadioMetadata.newLA("unfinished/abandoned ytpmv projects 2 (feb 2020 - dec 2022)", "KnightOfGames", RadioMetadata.createYouTubeURI("d8FT7CpYMgQ"), "0:00 to 1:59").bOfficial()) + .addItemInfo(RadioMetadata.newLA("One-Winged Angel (Final Fantasy VII)", "Nobuo Uematsu", RadioMetadata.createYouTubeURI("zkZGFNCS6iQ")).setFor(0).bOriginal().bOfficial()) + .addItemInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(1439125559)).setFor(0).bOriginal().bOfficial().bAlt()) + .addItemInfo(RadioMetadata.newLA("CocknBallTorture.ogg", "Alabaster Constantine III", RadioMetadata.createWikipediaURI("File:CocknBallTorture.ogg")).setFor(1).bOriginal().bOfficial()) .addTags([ "metadata-prefer-id" ]) .addSource(RadioSource.new("audio/mp3", [ "mp3" ]) .setURI("mxc://glowers.club/wkZaRVKkHqBCHpjYVQzKvsZs") .addPreview("mxc://glowers.club/KgrZIZJKvEnWPWnDukTKaRqR", "image/jpg", "500x500")), RadioItem.new("fu") - .addTrackInfo(RadioMetadata.newLAV("unfinished/abandoned ytpmv projects 2 (feb 2020 - dec 2022)", "KnightOfGames", RadioMetadata.createYouTubeURI("d8FT7CpYMgQ"), "3:07 to 3:27").bOfficial()) - .addTrackInfo(RadioMetadata.newLAV("Darkwing Duck (Turbografx 16) - Angry Video Game Nerd (AVGN)", "Cinemassacre", RadioMetadata.createYouTubeURI("x3cewR_sMYI"), "10:40 to 10:54").setFor(0).bOriginal().bOfficial()) - .addTrackInfo(RadioMetadata.newLA("Mtc", "S3RL", RadioMetadata.createYouTubeURI("bO-NaEj2dQ0")).setFor(1).bOriginal().bOfficial()) - .addTrackInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(500173662)).setFor(1).bOriginal().bOfficial().bAlt()) + .addItemInfo(RadioMetadata.newLAV("unfinished/abandoned ytpmv projects 2 (feb 2020 - dec 2022)", "KnightOfGames", RadioMetadata.createYouTubeURI("d8FT7CpYMgQ"), "3:07 to 3:27").bOfficial()) + .addItemInfo(RadioMetadata.newLAV("Darkwing Duck (Turbografx 16) - Angry Video Game Nerd (AVGN)", "Cinemassacre", RadioMetadata.createYouTubeURI("x3cewR_sMYI"), "10:40 to 10:54").setFor(0).bOriginal().bOfficial()) + .addItemInfo(RadioMetadata.newLA("Mtc", "S3RL", RadioMetadata.createYouTubeURI("bO-NaEj2dQ0")).setFor(1).bOriginal().bOfficial()) + .addItemInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(500173662)).setFor(1).bOriginal().bOfficial().bAlt()) .addTags([ "metadata-prefer-id" ]) .addSource(RadioSource.new("video/mp4", [ "avc1.4D4029", "mp4a.40.2" ]) .setURI("mxc://glowers.club/BAGYQxmJGQdjKYnUfufHnvDc") @@ -1315,10 +1381,10 @@ const mediaItems = [ .addPreview("mxc://glowers.club/skHzOJjiHKtFrzeBeVUZnsfh", "image/jpg", "500x500")), RadioItem.new("diamondsword") - .addTrackInfo(RadioMetadata.newLAV("unfinished/abandoned ytpmv projects 2 (feb 2020 - dec 2022)", "KnightOfGames", RadioMetadata.createYouTubeURI("d8FT7CpYMgQ"), "3:30 to 3:57").bOfficial()) - .addTrackInfo(RadioMetadata.newLAV("I Can Swing My Sword! (feat. Terabrite)", "Tobuscus", RadioMetadata.createYouTubeURI("eN7dYDYfvVg")).setFor(0).bOriginal().bOfficial()) - .addTrackInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(518379277)).setFor(0).bOriginal().bOfficial().bAlt()) - .addTrackInfo(RadioMetadata.newLA("Track 26 (Plantation)", "天谷大輔", RadioMetadata.createYouTubeURI("aHtWKbR_P-c")).setFor(1).bOriginal()) + .addItemInfo(RadioMetadata.newLAV("unfinished/abandoned ytpmv projects 2 (feb 2020 - dec 2022)", "KnightOfGames", RadioMetadata.createYouTubeURI("d8FT7CpYMgQ"), "3:30 to 3:57").bOfficial()) + .addItemInfo(RadioMetadata.newLAV("I Can Swing My Sword! (feat. Terabrite)", "Tobuscus", RadioMetadata.createYouTubeURI("eN7dYDYfvVg")).setFor(0).bOriginal().bOfficial()) + .addItemInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(518379277)).setFor(0).bOriginal().bOfficial().bAlt()) + .addItemInfo(RadioMetadata.newLA("Track 26 (Plantation)", "天谷大輔", RadioMetadata.createYouTubeURI("aHtWKbR_P-c")).setFor(1).bOriginal()) .addTags([ "metadata-prefer-id" ]) .addSource(RadioSource.new("video/mp4", [ "avc1.4D4029", "mp4a.40.2" ]) .setURI("mxc://glowers.club/LpzkeoSVxfFBPYCcVIRawREk") @@ -1327,6 +1393,108 @@ const mediaItems = [ .setURI("mxc://glowers.club/qsxMSogWbxDJOTpWetgcyqfs") .addPreview("mxc://glowers.club/vmwNdqdALTzZlcZgpgXzoBmN", "image/jpg", "500x500")), + RadioItem.new("NIGGER") + .setMiscInfo(RadioMiscInfo.new().bExplicit()) + .addItemInfo(RadioMetadata.newLAV("offensive 音mad", "KrazedDonut", RadioMetadata.createYouTubeURI("glDecH2ALUo")).bOfficial()) + .addItemInfo(RadioMetadata.newLAV("With Apologies to Jesse Jackson (S11E1)", "South Park", RadioMetadata.createYouTubeURI("3YC1_RUuzWg")).setFor(0).bOriginal().bExplicit()) + .addItemInfo(RadioMetadata.newLA("【疾走アレンジ】砕月~ぺったんファイヤー☆", "さわわ@疾走の人", RadioMetadata.createNicoNicoURI("sm19473562")).setFor(1).bOriginal().bOfficial()) + .addSource(RadioSource.new("video/mp4", [ "avc1.4D4029", "mp4a.40.2" ]) + .setURI("mxc://glowers.club/kZgNCAbaJycuebFjrGjWRTEX") + .addPreview("mxc://glowers.club/SBNLmftPiqAThhqYEosbQBzH", "image/jpg", "800x450")) + .addSource(RadioSource.new("audio/mp3", [ "mp3" ]) + .setURI("mxc://glowers.club/BifXjxnFEpJqoPBlEIUeJebD") + .addPreview("mxc://glowers.club/ZCOzqccZAuiEaYpUnkWMmDti", "image/jpg", "450x450")), + + RadioItem.new("shutupkyle") + .addItemInfo(RadioMetadata.newLA("Peter Beats Up Kyle Vocoded to Crab Rave", "Amplify", RadioMetadata.createYouTubeURI("6RXNzSbCZ5U")).bOfficial()) + .addItemInfo(RadioMetadata.newLV(null, "Family Guy", RadioMetadata.createYouTubeURI("0TBlyr7gUBc")).setFor(0).bOriginal()) + .addTags([ "misc" ]) + .addSource(RadioSource.new("video/mp4", [ "avc1.4D4029", "mp4a.40.2" ]) + .setURI("mxc://glowers.club/oJHYSoVkcvwfbRzuEOsjkzfN") + .addPreview("mxc://glowers.club/dlCqoJJRzhlSBBYuYhyCkTKP", "image/jpg", "480x360")) + .addSource(RadioSource.new("audio/mp3", [ "mp3" ]) + .setURI("mxc://glowers.club/NTyheUZmvVEEumjfAAWSMNPp") + .addPreview("mxc://glowers.club/JirPlcPtkKUKAgxFfxzUYkhQ", "image/jpg", "259x259")), + + RadioItem.new("emergencypie") + .addItemInfo(RadioMetadata.newLAV("funny pie ytpmv 2", "KrazedDonut", RadioMetadata.createYouTubeURI("IpW1lHLN-SQ")).bOfficial()) + .addItemInfo(RadioMetadata.newLAV("In HoNoR oF oUr MoSt FuNnY tIkToK", "jaydencroes", RadioMetadata.createTikTokURI("6803451075920776454", "jaydencroes")).setFor(0).bOriginal().bOfficial()) + .addItemInfo(RadioMetadata.newLA("Stage 4-2 (Emergency Avoidance)", "増子司", RadioMetadata.createYouTubeURI("CFdW4abh69U")).setFor(1).bOriginal()) + .addSource(RadioSource.new("video/mp4", [ "avc1.4D4029", "mp4a.40.2" ]) + .setURI("mxc://glowers.club/VFwITHQRDUeHeqWShuSQvVOR") + .addPreview("mxc://glowers.club/OwnYCvMWJOZVmNbBZRPjcRtY", "image/jpg", "800x450")) + .addSource(RadioSource.new("audio/mp3", [ "mp3" ]) + .setURI("mxc://glowers.club/OAchunTPIXjGSJMeAwJUYJlx") + .addPreview("mxc://glowers.club/VlLkWDBhkHwtdzyihjssmHoL", "image/jpg", "350x350")), + + RadioItem.new("sexed") + .addItemInfo(RadioMetadata.newLAV("sex ed ytpmv", "KrazedDonut", RadioMetadata.createYouTubeURI("XM4VcOKvg1U")).bOfficial()) + .addItemInfo(RadioMetadata.newLAV("No Laughing Part 2 (S2E19)", "Beavis and Butt-Head", RadioMetadata.createYouTubeURI("7hfKrBd34bE")).setFor(0).bOriginal()) + .addItemInfo(RadioMetadata.newLA("Treasure Trove Cove", "Grant Kirkhope", RadioMetadata.createYouTubeURI("5DQfnj33-QU")).setFor(1).bOriginal()) + .addSource(RadioSource.new("video/mp4", [ "avc1.4D4029", "mp4a.40.2" ]) + .setURI("mxc://glowers.club/RteFUtxPuMscWlROFgwTuHSM") + .addPreview("mxc://glowers.club/HXFwEJIBzhvTscjXjeqKOHBR", "image/jpg", "793x600")) + .addSource(RadioSource.new("audio/mp3", [ "mp3" ]) + .setURI("mxc://glowers.club/XdiNyKBZgMFnhTsYBscroXWQ") + .addPreview("mxc://glowers.club/RPkayZSiHWFIFgslxZDtACij", "image/jpg", "500x500")), + + RadioItem.new("eternalsummer") + .addItemInfo(RadioMetadata.newLAV("Goodbye Vine, Hello TikTok", "NoahThePro", RadioMetadata.createYouTubeURI("lxIp370KaWw")).bOfficial()) + .addItemInfo(RadioMetadata.newLAV("In HoNoR oF oUr MoSt FuNnY tIkToK", "jaydencroes", RadioMetadata.createTikTokURI("6803451075920776454", "jaydencroes")).setFor(0).bOriginal().bOfficial()) + .addItemInfo(RadioMetadata.newLA("Goodbye Summer, Hello Winter", "FantoMenK", RadioMetadata.createYouTubeURI("6pKDsdzODv0")).setFor(1).bOriginal().bOfficial()) + .addItemInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(426984905)).setFor(1).bOriginal().bOfficial().bAlt()) + .addSource(RadioSource.new("video/mp4", [ "avc1.4D4029", "mp4a.40.2" ]) + .setURI("mxc://glowers.club/BbQvjOiIVsLGmuhPadpWJccr") + .addPreview("mxc://glowers.club/MtgDrXUhQNnoZFRlHbfJrtCO", "image/jpg", "800x450")) + .addSource(RadioSource.new("audio/mp3", [ "mp3" ]) + .setURI("mxc://glowers.club/ErRgdlBDaOLxSBblNCoGNboe") + .addPreview("mxc://glowers.club/QvSUtxdTfIgogJJNfNrSTgVw", "image/jpg", "500x500")), + + RadioItem.new("stereopie") + .addItemInfo(RadioMetadata.newLAV("TikToks that I committed tax fraud with (TRY NOT TO LAUGH!)", "LNG", RadioMetadata.createYouTubeURI("kpPzCEpN3No")).bOfficial()) + .addItemInfo(RadioMetadata.newLAV("In HoNoR oF oUr MoSt FuNnY tIkToK", "jaydencroes", RadioMetadata.createTikTokURI("6803451075920776454", "jaydencroes")).setFor(0).bOriginal().bOfficial()) + .addItemInfo(RadioMetadata.newLA("Stereo Love", "Edward Maya", RadioMetadata.createYouTubeURI("p-Z3YrHJ1sU")).setFor(1).bOriginal().bOfficial()) + .addItemInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(351996354)).setFor(1).bOriginal().bOfficial().bAlt()) + .addSource(RadioSource.new("video/mp4", [ "avc1.4D4029", "mp4a.40.2" ]) + .setURI("mxc://glowers.club/HiBIQpUfmijfOylsPdSrkdlj") + .addPreview("mxc://glowers.club/RHReavQybpDlkAhZBEYqZPkF", "image/jpg", "800x450")) + .addSource(RadioSource.new("audio/mp3", [ "mp3" ]) + .setURI("mxc://glowers.club/DGCmxthQsYFXdDfcXMbwwlkf") + .addPreview("mxc://glowers.club/KlymZPPhXopZXmmoFrnBUxHp", "image/jpg", "500x500")), + + RadioItem.new("echtermination") + .addItemInfo(RadioMetadata.newLAV("Jontober 19th: echTERMINATION", "KrazedDonut", RadioMetadata.createYouTubeURI("sgdJLXUeaIM")).bOfficial()) + .addItemInfo(RadioMetadata.newLAV("Area 26A (Extermination)", "安井洋介", RadioMetadata.createYouTubeURI("w_j2u9A_1P0")).bOriginal()) + .addSource(RadioSource.new("video/mp4", [ "avc1.4D4029", "mp4a.40.2" ]) + .setURI("mxc://glowers.club/ZQqbMlxGMElwFcspNRQEMPlk") + .addPreview("mxc://glowers.club/hugzqYBVrLCiuuzRsuJUbfMn", "image/jpg", "800x450")) + .addSource(RadioSource.new("audio/mp3", [ "mp3" ]) + .setURI("mxc://glowers.club/qdQhnOJlyrwVrACNaKFQmBAb") + .addPreview("mxc://glowers.club/UwhhKcIhyuKTUXGqECMvpUpF", "image/jpg", "500x500")), + + RadioItem.new("jonumiru") + .addItemInfo(RadioMetadata.newLAV("Jontober 30th - JONUMIRU", "JoeCrapsArt", RadioMetadata.createYouTubeURI("o_cdvj8z8AY")).bOfficial()) + .addItemInfo(RadioMetadata.newLAV("チルミルチルノ", "Conagusuri", RadioMetadata.createInternetArchiveURI("chirumiru-cirno")).bOriginal()) + .addSource(RadioSource.new("video/mp4", [ "avc1.4D4029", "mp4a.40.2" ]) + .setURI("mxc://glowers.club/LQzEXCCYoQrpZxnlHliWAyJG") + .addPreview("mxc://glowers.club/rFxzkmcazQFzIuTiwZOWlVOP", "image/jpg", "800x600")) + .addSource(RadioSource.new("audio/mp3", [ "mp3" ]) + .setURI("mxc://glowers.club/drGNuFgYuOLGFOcTdGbplHjg") + .addPreview("mxc://glowers.club/WAMOSUPXcaBvgAmlpWbBQleO", "image/jpg", "500x500")), + + RadioItem.new("rickbuster") + .addItemInfo(RadioMetadata.newLAV("rick buster", "KrazedDonut", RadioMetadata.createYouTubeURI("JsZw5aNZoas")).bOfficial()) + .addItemInfo(RadioMetadata.newLAV("Never Gonna Give You Up", "Rick Astley", RadioMetadata.createYouTubeURI("dQw4w9WgXcQ")).setFor(0).bOriginal().bOfficial()) + .addItemInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(1558534271)).setFor(0).bOriginal().bOfficial().bAlt()) + .addItemInfo(RadioMetadata.newLA("Rude Buster", "Toby Fox", RadioMetadata.createYouTubeURI("GPL5Hkl11IQ")).setFor(1).bOriginal().bOfficial()) + .addItemInfo(RadioMetadata.newLA(null, null, RadioMetadata.createAppleMusicURI(1443475721)).setFor(1).bOriginal().bOfficial().bAlt()) + .addSource(RadioSource.new("video/mp4", [ "avc1.4D4029", "mp4a.40.2" ]) + .setURI("mxc://glowers.club/QvTUdwqkAhCkyUKmawmeyulU") + .addPreview("mxc://glowers.club/WQnVFfEGtkPPZfHQnceGewvH", "image/jpg", "800x600")) + .addSource(RadioSource.new("audio/mp3", [ "mp3" ]) + .setURI("mxc://glowers.club/FgYLPZllWHGsjXOafXTKZEWl") + .addPreview("mxc://glowers.club/pzlFVETfNbFvCvpoafFZJZPv", "image/jpg", "250x250")), + ].filter(Boolean).map((a,i) => a.serialize(i)).sort((a,b) => a.id.localeCompare(b.id)) const lintCodecWarnings = {