2025-05-21 18:55:23 +00:00

160 lines
6.1 KiB
Plaintext

---
id: music
title: MusicModel
sidebar_label: MusicModel
---
## MusicModel
The `MusicModel` class provides static methods for interacting with music-related data. It encapsulates various getters and setters for tracks, releases, library management, and search functionalities.
**Class Overview:**
The `MusicModel` class acts as a facade, providing a simplified interface to access and manipulate music data through its nested `Getters` and `Setters` classes.
### Static Properties
* `Getters`: An object containing static getter methods for retrieving music data.
* `Setters`: An object containing static setter methods for modifying music data.
### Track Related Methods
* `getAllTracks( { user_id, limit, page } )`
* Retrieves tracks for a given user.
* Parameters:
* `user_id`: *String* The ID of the user.
* `limit`: *Number* The number of tracks to retrieve per page.
* `page`: *Number* The page number to retrieve.
* Returns: *Promise[object]*
* `getTrackData(id: String, options: Object)`
* Retrieves data for a specific track.
* Parameters:
* `id`: *String* The ID of the track.
* `options`: *Object* Additional options for the request.
* Returns: *Promise[object]*
* `putTrack(track)`
* Creates/Updates a track.
* Parameters:
* `track`: *Object* The track object to create/update.
* Returns: *Promise[object]*
### Lyrics Related Methods
* `getTrackLyrics(id: String, options = { preferTranslation: false })`
* Retrieves lyrics for a specific track.
* Parameters:
* `id`: *String* The ID of the track.
* `options`: *Object*
* `preferTranslation`: *Boolean* If true, attempts to retrieve lyrics in the user's preferred language.
* Returns: *Promise[object]*
* `putTrackLyrics(track_id, data)`
* Updates lyrics for a specific track.
* Parameters:
* `track_id`: *String* The ID of the track.
* `data`: *Object* The lyrics data to update.
* Returns: *Promise[object]*
### Release Related Methods
* `getMyReleases({ limit, offset, keywords })`
* Retrieves the user's releases.
* Parameters:
* `limit`: *Number* The number of releases to retrieve.
* `offset`: *Number* The offset to start retrieving from.
* `keywords`: *String* Keywords to search for.
* Returns: *Promise[object]*
* `getAllReleases({ user_id, limit, page })`
* Retrieves releases for a given user.
* Parameters:
* `user_id`: *String* The ID of the user.
* `limit`: *Number* The number of releases to retrieve per page.
* `page`: *Number* The page number to retrieve.
* Returns: *Promise[object]*
* `getReleaseData(id: String)`
* Retrieves data for a specific release.
* Parameters:
* `id`: *String* The ID of the release.
* Returns: *Promise[object]*
* `putRelease(release)`
* Creates/Updates a release.
* Parameters:
* `release`: *Object* The release object to create/update.
* Returns: *Promise[object]*
* `deleteRelease(release_id)`
* Deletes a release.
* Parameters:
* `release_id`: *String* The ID of the release to delete.
* Returns: *Promise[object]*
### Library Related Methods
* `getMyLibrary({ limit = 100, offset = 0, order = "desc", kind })`
* Retrieves the user's music library.
* Parameters:
* `limit`: *Number* The number of items to retrieve.
* `offset`: *Number* The offset to start retrieving from.
* `order`: *String* The order to sort the items in ("asc" or "desc").
* `kind`: *String* Filter the library by kind (e.g., "track", "release").
* Returns: *Promise[object]*
* `toggleItemFavorite(type, item_id, to)`
* Toggles the favorite status of an item in the library.
* Parameters:
* `type`: *String* The type of item ("track", "release", etc.).
* `item_id`: *String* The ID of the item.
* `to`: *Boolean* Whether to add to favorites (true) or remove (false).
* Returns: *Promise[object]*
* `isItemFavorited(type, item_id)`
* Checks if an item is favorited in the library.
* Parameters:
* `type`: *String* The type of item ("track", "release", etc.).
* `item_id`: *String* The ID of the item.
* Returns: *Promise[object]*
### Other Methods
* `getRecentyPlayed(params)`
* Retrieves recently played tracks.
* Parameters:
* `params`: *Object* Additional parameters for the request.
* Returns: *Promise[object]*
* `search({ keywords, limit, offset })`
* Searches for music items.
* Parameters:
* `keywords`: *String* The search keywords.
* `limit`: *Number* The number of results to return.
* `offset`: *Number* The offset to start the search from.
* Returns: *Promise[object]*
### Aliases
* `toggleItemFavourite`: Alias for `toggleItemFavorite`.
* `isItemFavourited`: Alias for `isItemFavorited`.
### API Reference
* `getAllTracks( { user_id: String, limit: Number, page: Number } )`: *Promise[object]*
* `getTrackData(id: String, options: Object)`: *Promise[object]*
* `putTrack(track: Object)`: *Promise[object]*
* `getTrackLyrics(id: String, options: Object)`: *Promise[object]*
* `putTrackLyrics(track_id: String, data: Object)`: *Promise[object]*
* `getMyReleases({ limit: Number, offset: Number, keywords: String })`: *Promise[object]*
* `getAllReleases({ user_id: String, limit: Number, page: Number })`: *Promise[object]*
* `getReleaseData(id: String)`: *Promise[object]*
* `putRelease(release: Object)`: *Promise[object]*
* `deleteRelease(release_id: String)`: *Promise[object]*
* `getMyLibrary({ limit: Number, offset: Number, order: String, kind: String })`: *Promise[object]*
* `toggleItemFavorite(type: String, item_id: String, to: Boolean)`: *Promise[object]*
* `isItemFavorited(type: String, item_id: String)`: *Promise[object]*
* `getRecentyPlayed(params: Object)`: *Promise[object]*
* `search({ keywords: String, limit: Number, offset: Number })`: *Promise[object]*