glowers-radio/data/schema.yaml

73 lines
2.5 KiB
YAML

required: [ version, songs ]
$defs:
GWRadioURI:
type: string
description: 'A URI that points to the source file. See `GWMediaPlayer.fromURIToAbsolute()` for how to convert to a URL'
MediaCodec:
type: string
MediaCodecs:
type: array
description: 'An array of codecs contained within the source file. Items should follow RFC6381'
items:
- $ref: "#/$defs/MediaCodec"
properties:
version: { type: integer }
songs:
items:
required: [ id, sources ]
properties:
index:
type: integer
description: 'Original song index'
id:
type: string
metadata:
properties:
title: { type: string }
artist: { type: string }
href:
$ref: "#/$defs/GWRadioURI"
description: 'A URI where the original source can be found, if known. Link may be dead'
_nigid:
description: 'The original song id from nigge.rs.'
type: string
_nigkey:
description: 'Content of _id from the original nigge.rs song entry.'
type: string
misc:
type: integer
description: 'Media bitflags. See BMiscInfo'
tags:
description: 'A list of tags used for filtering.'
type: array
items:
anyOf:
- const: moonman
- const: metadata-prefer-id
- regex: '^radio\-media\-style\-[a-z\-]+'
- type: string
sources:
type: array
items:
- required: [ type, uri ]
properties:
type: { type: string, format: mimetype }
codecs: { "$ref": "#/$defs/MediaCodecs" }
uri: { "$ref": "#/$defs/GWRadioURI" }
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:
type: integer
description: 'Used to determine how the media should be displayed. See EDisplayType'
type: { "$ref": "#/$defs/MediaCodec" }
codecs: { "$ref": "#/$defs/MediaCodecs" }
uri: { "$ref": "#/$defs/GWRadioURI" }
size: { type: string }