mirror of
https://github.com/navidrome/navidrome.git
synced 2026-05-03 06:51:16 +00:00
* feat: add Path to TrackInfo struct * refactor: improve naming to follow the rest of the code * test: add tests * fix: actually check for filesystem permission * refactor: remove library logic from specific plugins * refactor: move hasFilesystemPermission to a Manifest method * test(plugins): add unit tests for hasLibraryFilesystemAccess method Signed-off-by: Deluan <deluan@navidrome.org> * refactor(plugins): remove hasFilesystemPerm field and use manifest for filesystem permission checks Signed-off-by: Deluan <deluan@navidrome.org> * refactor(plugins): streamline library filesystem access checks in lyrics and scrobbler adapters Signed-off-by: Deluan <deluan@navidrome.org> --------- Signed-off-by: Deluan <deluan@navidrome.org> Co-authored-by: Deluan <deluan@navidrome.org>
147 lines
5.9 KiB
YAML
147 lines
5.9 KiB
YAML
version: v1-draft
|
|
exports:
|
|
nd_scrobbler_is_authorized:
|
|
description: IsAuthorized checks if a user is authorized to scrobble to this service.
|
|
input:
|
|
$ref: '#/components/schemas/IsAuthorizedRequest'
|
|
contentType: application/json
|
|
output:
|
|
type: boolean
|
|
contentType: application/json
|
|
nd_scrobbler_now_playing:
|
|
description: NowPlaying sends a now playing notification to the scrobbling service.
|
|
input:
|
|
$ref: '#/components/schemas/NowPlayingRequest'
|
|
contentType: application/json
|
|
nd_scrobbler_scrobble:
|
|
description: Scrobble submits a completed scrobble to the scrobbling service.
|
|
input:
|
|
$ref: '#/components/schemas/ScrobbleRequest'
|
|
contentType: application/json
|
|
components:
|
|
schemas:
|
|
ArtistRef:
|
|
description: ArtistRef is a reference to an artist with name and optional MBID.
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: ID is the internal Navidrome artist ID (if known).
|
|
name:
|
|
type: string
|
|
description: Name is the artist name.
|
|
mbid:
|
|
type: string
|
|
description: MBID is the MusicBrainz ID for the artist.
|
|
required:
|
|
- name
|
|
IsAuthorizedRequest:
|
|
description: IsAuthorizedRequest is the request for authorization check.
|
|
properties:
|
|
username:
|
|
type: string
|
|
description: Username is the username of the user.
|
|
required:
|
|
- username
|
|
NowPlayingRequest:
|
|
description: NowPlayingRequest is the request for now playing notification.
|
|
properties:
|
|
username:
|
|
type: string
|
|
description: Username is the username of the user.
|
|
track:
|
|
$ref: '#/components/schemas/TrackInfo'
|
|
description: Track is the track currently playing.
|
|
position:
|
|
type: integer
|
|
format: int32
|
|
description: Position is the current playback position in seconds.
|
|
required:
|
|
- username
|
|
- track
|
|
- position
|
|
ScrobbleRequest:
|
|
description: ScrobbleRequest is the request for submitting a scrobble.
|
|
properties:
|
|
username:
|
|
type: string
|
|
description: Username is the username of the user.
|
|
track:
|
|
$ref: '#/components/schemas/TrackInfo'
|
|
description: Track is the track that was played.
|
|
timestamp:
|
|
type: integer
|
|
format: int64
|
|
description: Timestamp is the Unix timestamp when the track started playing.
|
|
required:
|
|
- username
|
|
- track
|
|
- timestamp
|
|
TrackInfo:
|
|
description: TrackInfo contains track metadata.
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: ID is the internal Navidrome track ID.
|
|
title:
|
|
type: string
|
|
description: Title is the track title.
|
|
album:
|
|
type: string
|
|
description: Album is the album name.
|
|
artist:
|
|
type: string
|
|
description: Artist is the formatted artist name for display (e.g., "Artist1 • Artist2").
|
|
albumArtist:
|
|
type: string
|
|
description: AlbumArtist is the formatted album artist name for display.
|
|
artists:
|
|
type: array
|
|
description: Artists is the list of track artists.
|
|
items:
|
|
$ref: '#/components/schemas/ArtistRef'
|
|
albumArtists:
|
|
type: array
|
|
description: AlbumArtists is the list of album artists.
|
|
items:
|
|
$ref: '#/components/schemas/ArtistRef'
|
|
duration:
|
|
type: number
|
|
format: float
|
|
description: Duration is the track duration in seconds.
|
|
trackNumber:
|
|
type: integer
|
|
format: int32
|
|
description: TrackNumber is the track number on the album.
|
|
discNumber:
|
|
type: integer
|
|
format: int32
|
|
description: DiscNumber is the disc number.
|
|
mbzRecordingId:
|
|
type: string
|
|
description: MBZRecordingID is the MusicBrainz recording ID.
|
|
mbzAlbumId:
|
|
type: string
|
|
description: MBZAlbumID is the MusicBrainz album/release ID.
|
|
mbzReleaseGroupId:
|
|
type: string
|
|
description: MBZReleaseGroupID is the MusicBrainz release group ID.
|
|
mbzReleaseTrackId:
|
|
type: string
|
|
description: MBZReleaseTrackID is the MusicBrainz release track ID.
|
|
path:
|
|
type: string
|
|
description: |-
|
|
Path is the full path to the track file, relative to the library root.
|
|
Only included if the plugin has library permission with filesystem access for the track's library.
|
|
required:
|
|
- id
|
|
- title
|
|
- album
|
|
- artist
|
|
- albumArtist
|
|
- artists
|
|
- albumArtists
|
|
- duration
|
|
- trackNumber
|
|
- discNumber
|