2022-11-12 23:08:28 -05:00
# glowers-radio
This repo contains backing information for Glowers Radio.
2022-12-13 02:33:53 -05:00
## Contributing
If you have a song in mind that would fit on Glowers Radio, you are free to create a PR or send in a diff for `generate.js` .
2022-12-13 02:46:58 -05:00
The living schema is documented [below ](#format ) and mostly maps 1:1 to `MediaItem` , you should also check the `MediaItem` for the
the media that is most similar to what you wish to add.
2022-12-13 02:33:53 -05:00
## Best Practices
- Use an alpha-numeric id. Don't use dashes or hyphens; Uppercase characters *may* be used when appropriate.
2023-01-07 20:25:11 -05:00
- Declare attribution info (track info) when available. If you do not know the original source, try to find it first.
- Attribution info **must** be accurate and not an artists rendition.
2022-12-13 02:33:53 -05:00
- Items that aren't primarily music should be tagged with `misc` .
- Use the `metadata-prefer-id` tag if the actual title would be too long, cubersome, or unrelated. i.e:
- `slamtris` : Slamtris - Quad City DJs vs Hirokazu Tanaka *(cumbersome)*
- `dngyamom` : Dynamite by BTS but it's Doin' Your Mom *(cumbersome)*
- `thisistheinfowar` : In the House, In a Heartbeat *(unrelated)*
- `alexjones` : Alex Jones Remix: Renai Circulation *(cumbersome)*
- `ywnbaw` : Professor proves SICKS are the best weapons *(unrelated)*
- `whenblackissus` : Among Us theme song but it's in the style of Metallica's Black Album *(long and cumbersome)*
- `niggatorial` : I'm The 2007 YouTube Tutorial *(cumbersome)*
- `honorary` : Erika *(unrelated)*
2022-12-13 02:46:58 -05:00
< br / >
- Use `image/png` , `image/jpg` , `image/gif` , `audio/mp3` , and `video/mp4` . Files *should* be under 10MB and be of reasonable or tolerable quality
- Try not to use reuploads, remasters, or edits, as the source; Unless the edit or remaster is the actual media.
2022-12-13 02:48:33 -05:00
- Don't use videos where audio alongside artwork would be functionally identical. Lyrics videos are ok
2022-12-13 02:46:58 -05:00
- Sources *should* contain codec information; if you are unsure of what correct codecs to declare, do not declare any or ask for help.
No codec declarations are better than incorrect codec declarations. See [MDN ](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/codecs_parameter#basic_syntax ) for details
- All content *should* be hosted on Glowers Club. If you do not Glow, then your sources will be reuploaded if your Item(s) are accepted
< br / >
- `video/` **must** have a thumbnail preview.
- `video/` *should* have a `EDisplayType.SQUARE` fallback for audioOnly, and for when the agent does not support the provided `video/` .
- Animated previews **must** always have a `image/gif` fallback.
- Avoid using `EDisplayType.LANDSCAPE` when possible.
- `EDisplayType.SQUARE` previews **must** be exactly `1:1` ; `EDisplayType.LANDSCAPE` previews *should* be exactly `16:9` , or **must** be a close equivalent
2023-01-07 20:25:11 -05:00
### `addTrackInfo`
`setMetadata` will be deprecated in favor of `addTrackInfo` to allow additional attribution information to be stored.
`addTrackInfo` is more verbose than `setMetadata` . Check the JSDoc blocks for `RadioMetadata.new`
`RadioMetadata` methods beginning with `b` are auto-generated from `BMetadataType` .
Avoid being *too autistic* with additional info, just note the main stuff. You don't have to add the Randy Marsh saying nigger clip
because it's used a single time in a ytpmv.
Support for raw `href` values will remain, however an appropriate `createURI` function should be used instead.
2022-11-12 23:08:28 -05:00
## Format
2022-11-12 23:10:11 -05:00
The `songs.json` format **is only intended for use for Glowers Radio** , and is effectively a living standard as a result. **Live data may change drastically without warning**
2022-11-12 23:08:28 -05:00
2022-12-07 19:29:16 -05:00
If you do wish to use this data for your own purposes, i.e: to make a custom player, you should be caching the songs list so your application has something to fallback to if a breaking change to the format is made.
2022-11-12 23:08:28 -05:00
```yaml
2022-12-07 19:29:16 -05:00
required: [ version, songs ]
2022-12-09 15:12:03 -05:00
$defs:
GWRadioURI:
type: uri
description: 'A URI that points to the source file. See `GWMediaPlayer.fromURIToAbsolute()` for how to convert to a URL'
2022-12-15 21:13:50 -05:00
MediaCodecs:
type: array
description: 'An array of codecs contained within the source file. Items should follow RFC6381'
items:
- type: string
2022-11-12 23:08:28 -05:00
properties:
2022-11-16 05:47:46 -05:00
version: { type: integer }
songs:
2022-11-12 23:08:28 -05:00
items:
2022-11-16 05:47:46 -05:00
required: [ id, sources ]
2022-11-12 23:08:28 -05:00
properties:
2022-11-16 05:47:46 -05:00
id:
type: string
tags:
2022-12-09 15:12:03 -05:00
description: 'A list of tags used for filtering.'
2022-11-16 05:47:46 -05:00
type: array
2022-12-09 15:12:03 -05:00
items:
- const: sus
description: >-
Media information will render in the Among Us Font.
In imposter mode, only songs tagged with sus will be in shuffle
2022-12-09 15:18:15 -05:00
2022-12-09 15:12:03 -05:00
- const: niggers
description: >-
Media that was originally available through the now-defunct nigge.rs online radio.
Tagged items may contain the original _nigid and/or _nigkey as metadata
$seeAlso:
- '#/properties/songs/items/properties/metadata/properties/_nigid'
- '#/properties/songs/items/properties/metadata/properties/_nigkey'
2022-12-09 15:18:15 -05:00
2022-12-09 15:12:03 -05:00
- const: splash-song
2022-12-09 15:18:15 -05:00
description: 'Media that can play on the Glowers Club splash page.'
2022-12-09 15:12:03 -05:00
- const: misc
description: 'Media that does not significantly contain music.'
2022-12-09 15:18:15 -05:00
2022-12-09 15:12:03 -05:00
- const: moonman
description: 'Moonman songs'
2022-12-09 15:18:15 -05:00
2022-12-09 17:29:25 -05:00
- const: metadata-prefer-id
description: >-
Use the Media id instead of the metadata title for MediaSession.
Primarily for media where the source title does not match the assigned id
2022-12-09 15:12:03 -05:00
- regex: '^radio\-media\-style\-[a-z\-]+'
description: >-
2022-12-09 15:19:49 -05:00
Used to add or remove styling for particular Media, such as to remove the
2022-12-09 15:18:15 -05:00
Album Art box or disable background blur.
- type: string
description: 'Tags may also be arbitrary'
2022-12-09 15:12:03 -05:00
2022-11-16 05:47:46 -05:00
metadata:
required: [ title, artist ]
properties:
title: { type: string }
artist: { type: string }
2022-12-07 19:29:16 -05:00
href:
2023-01-07 20:25:11 -05:00
$ref: "#/$defs/GWRadioURI"
description: 'A URI where the original source can be found, if known. Link may be dead'
2022-12-07 19:29:16 -05:00
_nigid:
2022-12-09 15:12:03 -05:00
$seeAlso: '#/properties/songs/items/properties/tags/items/1'
description: 'The original song id from nigge.rs.'
2022-12-07 19:29:16 -05:00
type: string
_nigkey:
2022-12-09 15:12:03 -05:00
$seeAlso: '#/properties/songs/items/properties/tags/items/1'
description: 'Content of _id from the original nigge.rs song entry.'
2022-12-07 19:29:16 -05:00
type: string
2022-11-16 05:47:46 -05:00
sources:
type: array
items:
- required: [ type, url ]
properties:
type: { type: string, format: mimetype }
2022-12-15 21:13:50 -05:00
codecs: { "$ref": "#/$defs/MediaCodecs" }
2022-12-09 15:12:03 -05:00
uri: { "$ref": "#/$defs/GWRadioURI" }
2022-12-07 19:29:16 -05:00
previews:
description: >-
This is an array so GWMediaPlayer can better display videos being played as audio only.
The first Item is how the MediaItem *should* be displayed, other Items are alternative versions the player may use.
type: array
items:
- properties:
display_type:
description: 'Used to determine how the media should be displayed. See GWMediaPlayer.EDisplayType'
type: string
type: { type: string, format: mimetype }
2022-12-15 21:13:50 -05:00
codecs: { "$ref": "#/$defs/MediaCodecs" }
uri: { "$ref": "#/$defs/GWRadioURI" }
2022-12-07 19:29:16 -05:00
size: { type: string }
2022-11-12 23:08:28 -05:00
```
2022-12-09 15:12:03 -05:00
2023-01-07 20:25:11 -05:00