doc(plugins/music): update
This commit is contained in:
@@ -1,125 +1,182 @@
|
|||||||
### 🎼 Music plugin
|
<!--header-->
|
||||||
|
|
||||||
The *music* plugin lets you display :
|
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<td align="center">
|
<tr><th colspan="2"><h3>🎼 Music plugin</h3></th></tr>
|
||||||
<details open><summary>Random tracks from a playlist</summary>
|
<tr><td colspan="2" align="center"><p>This plugin can display top and recently listened music tracks or from a random playlist.</p>
|
||||||
<img src="https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.music.playlist.svg">
|
<p>Different music providers are supported.</p>
|
||||||
</details>
|
</td></tr>
|
||||||
<details open><summary>Recently listened</summary>
|
<tr>
|
||||||
<img src="https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.music.recent.svg">
|
<th rowspan="3">Supported features<br><sub><a href="metadata.yml">→ Full specification</a></sub></th>
|
||||||
</details>
|
<td><a href="/source/templates/classic"><code>📗 Classic template</code></a></td>
|
||||||
<img width="900" height="1" alt="">
|
</tr>
|
||||||
</td>
|
<tr>
|
||||||
|
<td><code>👤 Users</code> <code>👥 Organizations</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><code>🗝️ plugin_music_token</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2" align="center">
|
||||||
|
<details open><summary>Random tracks from a playlist</summary><img src="https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.music.playlist.svg" alt=""></img></details>
|
||||||
|
<details open><summary>Recently listened</summary><img src="https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.music.recent.svg" alt=""></img></details>
|
||||||
|
<img width="900" height="1" alt="">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
<!--/header-->
|
||||||
|
|
||||||
It can work in the following modes:
|
#### ➡️ Available options
|
||||||
|
|
||||||
### Playlist mode
|
<!--options-->
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td align="center" nowrap="nowrap">Type</i></td><td align="center" nowrap="nowrap">Description</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap"><code>plugin_music</code></td>
|
||||||
|
<td rowspan="2"><p>Enable music plugin</p>
|
||||||
|
<img width="900" height="1" alt=""></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap"><b>type:</b> <code>boolean</code>
|
||||||
|
<br>
|
||||||
|
<b>default:</b> no<br></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap"><code>plugin_music_provider</code></td>
|
||||||
|
<td rowspan="2"><p>Music provider</p>
|
||||||
|
<ul>
|
||||||
|
<li><code>apple</code>: Apple Music</li>
|
||||||
|
<li><code>spotify</code>: Spotify</li>
|
||||||
|
<li><code>lastfm</code>: Last.fm</li>
|
||||||
|
<li><code>youtube</code>: YouTube Music</li>
|
||||||
|
</ul>
|
||||||
|
<p>This setting is optional when using <code>plugin_music_mode: playlist</code> (provider will be auto-detected from <code>plugin_music_playlist</code> URL)</p>
|
||||||
|
<img width="900" height="1" alt=""></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap"><b>type:</b> <code>string</code>
|
||||||
|
<br>
|
||||||
|
<b>allowed values:</b><ul><li>apple</li><li>spotify</li><li>lastfm</li><li>youtube</li></ul></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap"><code>plugin_music_token</code></td>
|
||||||
|
<td rowspan="2"><p>Music provider token</p>
|
||||||
|
<p>Below is the expected token format for each provider:</p>
|
||||||
|
<ul>
|
||||||
|
<li><code>apple</code>: <em>(not supported)</em></li>
|
||||||
|
<li><code>spotify</code>: "client_id, client_secret, refresh_token"</li>
|
||||||
|
<li><code>lastfm</code>: "api_key"</li>
|
||||||
|
<li><code>youtube</code>: "cookie"</li>
|
||||||
|
</ul>
|
||||||
|
<img width="900" height="1" alt=""></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap">🔐 Token<br>
|
||||||
|
<b>type:</b> <code>token</code>
|
||||||
|
<br></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap"><code>plugin_music_mode</code></td>
|
||||||
|
<td rowspan="2"><p>Display mode</p>
|
||||||
|
<ul>
|
||||||
|
<li><code>playlist</code>: display random tracks from an URL playlist</li>
|
||||||
|
<li><code>recent</code>: display recently listened tracks</li>
|
||||||
|
<li><code>top</code>: display top listened artists/tracks</li>
|
||||||
|
</ul>
|
||||||
|
<p>If <code>plugin_music_playlist</code> is specifed, the default value is <code>playlist</code>, else it is <code>recent</code></p>
|
||||||
|
<img width="900" height="1" alt=""></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap"><b>type:</b> <code>string</code>
|
||||||
|
<br>
|
||||||
|
<b>allowed values:</b><ul><li>playlist</li><li>recent</li><li>top</li></ul></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap"><code>plugin_music_playlist</code></td>
|
||||||
|
<td rowspan="2"><p>Playlist URL</p>
|
||||||
|
<p>It must be from an "embed url" (i.e. music player iframes that can be integrated in other websites)</p>
|
||||||
|
<img width="900" height="1" alt=""></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap"><b>type:</b> <code>string</code>
|
||||||
|
<br></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap"><code>plugin_music_limit</code></td>
|
||||||
|
<td rowspan="2"><p>Display limit</p>
|
||||||
|
<img width="900" height="1" alt=""></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap"><b>type:</b> <code>number</code>
|
||||||
|
<i>(1 ≤
|
||||||
|
𝑥
|
||||||
|
≤ 100)</i>
|
||||||
|
<br>
|
||||||
|
<b>default:</b> 4<br></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap"><code>plugin_music_played_at</code></td>
|
||||||
|
<td rowspan="2"><p>Recently played - Toggle last played timestamp display</p>
|
||||||
|
<img width="900" height="1" alt=""></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap"><b>type:</b> <code>boolean</code>
|
||||||
|
<br>
|
||||||
|
<b>default:</b> no<br></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap"><code>plugin_music_time_range</code></td>
|
||||||
|
<td rowspan="2"><p>Top tracks - Time range for <code>top</code> mode</p>
|
||||||
|
<ul>
|
||||||
|
<li><code>short</code>: 4 weeks</li>
|
||||||
|
<li><code>medium</code>: 6 months</li>
|
||||||
|
<li><code>long</code>: several years</li>
|
||||||
|
</ul>
|
||||||
|
<img width="900" height="1" alt=""></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap"><b>type:</b> <code>string</code>
|
||||||
|
<br>
|
||||||
|
<b>default:</b> short<br>
|
||||||
|
<b>allowed values:</b><ul><li>short</li><li>medium</li><li>long</li></ul></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap"><code>plugin_music_top_type</code></td>
|
||||||
|
<td rowspan="2"><p>Top tracks - Display type</p>
|
||||||
|
<ul>
|
||||||
|
<li><code>tracks</code>: display track</li>
|
||||||
|
<li><code>artists</code>: display artists</li>
|
||||||
|
</ul>
|
||||||
|
<img width="900" height="1" alt=""></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap"><b>type:</b> <code>string</code>
|
||||||
|
<br>
|
||||||
|
<b>default:</b> tracks<br>
|
||||||
|
<b>allowed values:</b><ul><li>tracks</li><li>artists</li></ul></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap"><code>plugin_music_user</code></td>
|
||||||
|
<td rowspan="2"><p>Music provider username</p>
|
||||||
|
<img width="900" height="1" alt=""></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td nowrap="nowrap"><b>type:</b> <code>string</code>
|
||||||
|
<br>
|
||||||
|
<b>default:</b> <code>→ User login</code><br></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--/options-->
|
||||||
|
|
||||||
Select randomly a few tracks from a given playlist to share your favorites tracks with your visitors.
|
## 🎺 Configuring music provider
|
||||||
|
|
||||||
Select a music provider below for instructions.
|
|
||||||
|
|
||||||
<details>
|
|
||||||
<summary>Apple Music</summary>
|
|
||||||
|
|
||||||
Extract the *embed* URL of the playlist you want to share.
|
|
||||||
|
|
||||||
To do so, connect to [music.apple.com](https://music.apple.com/) and select the playlist you want to share.
|
|
||||||
From `...` menu, select `Share` and `Copy embed code`.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
Extract the source link from the code pasted in your clipboard:
|
|
||||||
```html
|
|
||||||
<iframe allow="" frameborder="" height="" style="" sandbox="" src="https://embed.music.apple.com/**/playlist/********"></iframe>
|
|
||||||
```
|
|
||||||
|
|
||||||
And use this value in `plugin_music_playlist` option.
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
<details>
|
|
||||||
<summary>Spotify</summary>
|
|
||||||
|
|
||||||
Extract the *embed* URL of the playlist you want to share.
|
|
||||||
|
|
||||||
To do so, Open Spotify and select the playlist you want to share.
|
|
||||||
From `...` menu, select `Share` and `Copy embed code`.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
Extract the source link from the code pasted in your clipboard:
|
|
||||||
```html
|
|
||||||
<iframe src="https://open.spotify.com/embed/playlist/********" width="" height="" frameborder="0" allowtransparency="" allow=""></iframe>
|
|
||||||
```
|
|
||||||
|
|
||||||
And use this value in `plugin_music_playlist` option.
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
<details>
|
|
||||||
<summary>Last.fm</summary>
|
|
||||||
|
|
||||||
This mode is not supported for now.
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
<details>
|
|
||||||
<summary>YouTube Music</summary>
|
|
||||||
|
|
||||||
Extract the *playlist* URL of the playlist you want to share.
|
|
||||||
|
|
||||||
To do so, Open YouTube Music and select the playlist you want to share.
|
|
||||||
|
|
||||||
Extract the source link from copying it from the address bar:
|
|
||||||
```
|
|
||||||
https://music.youtube.com/playlist?list=********
|
|
||||||
```
|
|
||||||
|
|
||||||
And use this value in `plugin_music_playlist` option.
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
#### ℹ️ Examples workflows
|
|
||||||
|
|
||||||
[➡️ Available options for this plugin](metadata.yml)
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- uses: lowlighter/metrics@latest
|
|
||||||
with:
|
|
||||||
# ... other options
|
|
||||||
plugin_music: yes
|
|
||||||
plugin_music_limit: 4 # Limit to 4 entries
|
|
||||||
plugin_music_playlist: https://******** # Use extracted playlist link
|
|
||||||
# plugin_music_provider: (will be guessed through plugin_music_playlist)
|
|
||||||
# plugin_music_mode: (will be set to "playlist" when plugin_music_playlist is provided)
|
|
||||||
```
|
|
||||||
|
|
||||||
### Recently played & top modes
|
|
||||||
|
|
||||||
- **Recently played**: Display tracks you have played recently.
|
|
||||||
- **Top**: Display your top artists/tracks for a certain time period.
|
|
||||||
|
|
||||||
Select a music provider below for additional instructions.
|
Select a music provider below for additional instructions.
|
||||||
|
|
||||||
<details>
|
## 🎙️ Spotify
|
||||||
<summary>Apple Music</summary>
|
|
||||||
|
|
||||||
This mode is not supported for now.
|
### 🗝️ Obtaining a token
|
||||||
|
|
||||||
I tried to find a way with *smart playlists*, *shortcuts* and other stuff but could not figure a workaround to do it without paying the $99 fee for the developer program.
|
Spotify does not have *personal tokens*, so it makes the process a bit longer because it is required to follow the [authorization workflow](https://developer.spotify.com/documentation/general/guides/authorization-guide/)... Follow the instructions below for a *TL;DR* to obtain a `refresh_token`.
|
||||||
|
|
||||||
So unfortunately this isn't available for now.
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
<details>
|
|
||||||
<summary>Spotify</summary>
|
|
||||||
|
|
||||||
Spotify does not have *personal tokens*, so it makes the process a bit longer because you're required to follow the [authorization workflow](https://developer.spotify.com/documentation/general/guides/authorization-guide/)... Follow the instructions below for a *TL;DR* to obtain a `refresh_token`.
|
|
||||||
|
|
||||||
Sign in to the [developer dashboard](https://developer.spotify.com/dashboard/) and create a new app.
|
Sign in to the [developer dashboard](https://developer.spotify.com/dashboard/) and create a new app.
|
||||||
Keep your `client_id` and `client_secret` and let this tab open for now.
|
Keep your `client_id` and `client_secret` and let this tab open for now.
|
||||||
@@ -134,7 +191,7 @@ Forge the authorization url with your `client_id` and the encoded `redirect_uri`
|
|||||||
https://accounts.spotify.com/authorize?client_id=********&response_type=code&scope=user-read-recently-played%20user-top-read&redirect_uri=https%3A%2F%2Flocalhost
|
https://accounts.spotify.com/authorize?client_id=********&response_type=code&scope=user-read-recently-played%20user-top-read&redirect_uri=https%3A%2F%2Flocalhost
|
||||||
```
|
```
|
||||||
|
|
||||||
When prompted, authorize your application.
|
When prompted, authorize application.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -142,7 +199,7 @@ Once redirected to `redirect_uri`, extract the generated authorization `code` fr
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
Go back to your developer dashboard tab, and open the web console of your browser to paste the following JavaScript code, with your own `client_id`, `client_secret`, authorization `code` and `redirect_uri`.
|
Go back to developer dashboard tab, and open the web console of your browser to paste the following JavaScript code, with your own `client_id`, `client_secret`, authorization `code` and `redirect_uri`.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
(async () => {
|
(async () => {
|
||||||
@@ -173,25 +230,43 @@ It should return a JSON response with the following content:
|
|||||||
|
|
||||||
Register your `client_id`, `client_secret` and `refresh_token` in secrets to finish setup.
|
Register your `client_id`, `client_secret` and `refresh_token` in secrets to finish setup.
|
||||||
|
|
||||||
</details>
|
### 🔗 Get an embed playlist url for `plugin_music_playlist`
|
||||||
|
|
||||||
<details>
|
Connect to [spotify.com](https://www.spotify.com) and select the playlist you want to share.
|
||||||
<summary>Last.fm</summary>
|
From `...` menu, select `Share` and `Copy embed code`.
|
||||||
|
|
||||||
Obtain a Last.fm API key.
|

|
||||||
|
|
||||||
To do so, you can simply [create an API account](https://www.last.fm/api/account/create) or [use an existing one](https://www.last.fm/api/accounts).
|
Extract the source link from the code pasted in your clipboard:
|
||||||
|
```html
|
||||||
|
<iframe src="https://open.spotify.com/embed/playlist/********" width="" height="" frameborder="0" allowtransparency="" allow=""></iframe>
|
||||||
|
```
|
||||||
|
|
||||||
Register your API key to finish setup.
|
## 🍎 Apple Music
|
||||||
|
|
||||||
</details>
|
### 🗝️ Obtaining a token
|
||||||
|
|
||||||
<details>
|
*(Not available)*
|
||||||
<summary>YouTube Music</summary>
|
|
||||||
|
|
||||||
Extract your YouTube Music cookies.
|
> 😥 Unfortunately I wasn't able to find a workaround to avoid paying the $99 fee for the developer program, even using workarounds like *smart playlists*, *shortcuts* and other stuff. However if you really want this feature, you could [sponsor me](github.com/sponsors/lowlighter) and I could eventually invest in a developper account with enough money, implement it and also eventually offer service on the shared instance
|
||||||
|
|
||||||
To do so, open [YouTube Music](https://music.youtube.com) (whilst logged in) on any modern browser
|
### 🔗 Get an embed playlist url for `plugin_music_playlist`
|
||||||
|
|
||||||
|
Connect to [music.apple.com](https://music.apple.com/) and select the playlist you want to share.
|
||||||
|
From `...` menu, select `Share` and `Copy embed code`.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Extract the source link from the code pasted in your clipboard:
|
||||||
|
```html
|
||||||
|
<iframe allow="" frameborder="" height="" style="" sandbox="" src="https://embed.music.apple.com/**/playlist/********"></iframe>
|
||||||
|
```
|
||||||
|
|
||||||
|
## ⏯️ Youtube Music
|
||||||
|
|
||||||
|
### 🗝️ Obtaining a token
|
||||||
|
|
||||||
|
Login to [YouTube Music](https://music.youtube.com) on any modern browser.
|
||||||
|
|
||||||
Open the developer tools (Ctrl-Shift-I) and select the “Network” tab
|
Open the developer tools (Ctrl-Shift-I) and select the “Network” tab
|
||||||
|
|
||||||
@@ -203,125 +278,28 @@ Click on the Name of any matching request. In the “Headers” tab, scroll to t
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
</details>
|
### 🔗 Get an embed playlist url for `plugin_music_playlist`
|
||||||
|
|
||||||
#### ➡️ Available options
|
Extract the *playlist* URL of the playlist you want to share.
|
||||||
|
|
||||||
<!--options-->
|
Connect to [music.youtube.com](https://music.youtube.com) and select the playlist you want to share.
|
||||||
<table>
|
|
||||||
<tr>
|
|
||||||
<td align="center" nowrap="nowrap">Type</i></td><td align="center" nowrap="nowrap">Description</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap"><code>plugin_music</code></td>
|
|
||||||
<td rowspan="2"><p>Display your music tracks</p>
|
|
||||||
<img width="900" height="1" alt=""></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap"><b>type:</b> <code>boolean</code>
|
|
||||||
<br>
|
|
||||||
<b>default:</b> no<br></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap"><code>plugin_music_provider</code></td>
|
|
||||||
<td rowspan="2"><p>Music provider</p>
|
|
||||||
<img width="900" height="1" alt=""></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap"><b>type:</b> <code>string</code>
|
|
||||||
<br>
|
|
||||||
<b>allowed values:</b><ul><li>apple</li><li>spotify</li><li>lastfm</li><li>youtube</li></ul></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap"><code>plugin_music_token</code></td>
|
|
||||||
<td rowspan="2"><p>Music provider personal token</p>
|
|
||||||
<img width="900" height="1" alt=""></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap">🔐 Token<br>
|
|
||||||
<b>type:</b> <code>token</code>
|
|
||||||
<br></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap"><code>plugin_music_mode</code></td>
|
|
||||||
<td rowspan="2"><p>Plugin mode</p>
|
|
||||||
<img width="900" height="1" alt=""></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap"><b>type:</b> <code>string</code>
|
|
||||||
<br>
|
|
||||||
<b>allowed values:</b><ul><li>playlist</li><li>recent</li><li>top</li></ul></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap"><code>plugin_music_playlist</code></td>
|
|
||||||
<td rowspan="2"><p>Embed playlist url</p>
|
|
||||||
<img width="900" height="1" alt=""></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap"><b>type:</b> <code>string</code>
|
|
||||||
<br></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap"><code>plugin_music_limit</code></td>
|
|
||||||
<td rowspan="2"><p>Maximum number of tracks to display</p>
|
|
||||||
<img width="900" height="1" alt=""></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap"><b>type:</b> <code>number</code>
|
|
||||||
<i>(1 ≤
|
|
||||||
𝑥
|
|
||||||
≤ 100)</i>
|
|
||||||
<br>
|
|
||||||
<b>default:</b> 4<br></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap"><code>plugin_music_played_at</code></td>
|
|
||||||
<td rowspan="2"><p>Display when the track was played</p>
|
|
||||||
<img width="900" height="1" alt=""></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap"><b>type:</b> <code>boolean</code>
|
|
||||||
<br>
|
|
||||||
<b>default:</b> no<br></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap"><code>plugin_music_time_range</code></td>
|
|
||||||
<td rowspan="2"><p>Time period for top mode</p>
|
|
||||||
<img width="900" height="1" alt=""></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap"><b>type:</b> <code>string</code>
|
|
||||||
<br>
|
|
||||||
<b>default:</b> short<br>
|
|
||||||
<b>allowed values:</b><ul><li>short</li><li>medium</li><li>long</li></ul></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap"><code>plugin_music_top_type</code></td>
|
|
||||||
<td rowspan="2"><p>Whether to show tracks or artists in top mode</p>
|
|
||||||
<img width="900" height="1" alt=""></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap"><b>type:</b> <code>string</code>
|
|
||||||
<br>
|
|
||||||
<b>default:</b> tracks<br>
|
|
||||||
<b>allowed values:</b><ul><li>tracks</li><li>artists</li></ul></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap"><code>plugin_music_user</code></td>
|
|
||||||
<td rowspan="2"><p>Music provider username</p>
|
|
||||||
<img width="900" height="1" alt=""></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td nowrap="nowrap"><b>type:</b> <code>string</code>
|
|
||||||
<br>
|
|
||||||
<b>default:</b> <code>→ User login</code><br></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
<!--/options-->
|
|
||||||
|
|
||||||
*[→ Full specification](metadata.yml)*
|
Extract the source link from the code pasted in your clipboard:
|
||||||
|
```
|
||||||
|
https://music.youtube.com/playlist?list=********
|
||||||
|
```
|
||||||
|
|
||||||
#### ℹ️ Examples workflows
|
## 📻 Last.fm
|
||||||
|
|
||||||
|
### 🗝️ Obtaining a token
|
||||||
|
|
||||||
|
[Create an API account](https://www.last.fm/api/account/create) or [use an existing one](https://www.last.fm/api/accounts) to obtain a Last.fm API key.
|
||||||
|
|
||||||
|
### 🔗 Get an embed playlist url for `plugin_music_playlist`
|
||||||
|
|
||||||
|
*(Not available)*
|
||||||
|
|
||||||
|
## ℹ️ Examples workflows
|
||||||
|
|
||||||
<!--examples-->
|
<!--examples-->
|
||||||
```yaml
|
```yaml
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
name: "🎼 Music plugin"
|
name: "🎼 Music plugin"
|
||||||
category: social
|
category: social
|
||||||
|
description: |
|
||||||
|
This plugin can display top and recently listened music tracks or from a random playlist.
|
||||||
|
|
||||||
|
Different music providers are supported.
|
||||||
|
examples:
|
||||||
|
+random tracks from a playlist: https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.music.playlist.svg
|
||||||
|
+recently listened: https://github.com/lowlighter/metrics/blob/examples/metrics.plugin.music.recent.svg
|
||||||
index: 2
|
index: 2
|
||||||
supports:
|
supports:
|
||||||
- user
|
- user
|
||||||
@@ -7,87 +14,100 @@ supports:
|
|||||||
scopes: []
|
scopes: []
|
||||||
inputs:
|
inputs:
|
||||||
|
|
||||||
# Enable or disable plugin
|
|
||||||
plugin_music:
|
plugin_music:
|
||||||
description: Display your music tracks
|
description: Enable music plugin
|
||||||
type: boolean
|
type: boolean
|
||||||
default: no
|
default: no
|
||||||
|
|
||||||
# Name of music provider
|
|
||||||
# This is optional for "playlist" mode (it can be deduced automatically from "plugin_music_playlist" url)
|
|
||||||
# This is required in other modes
|
|
||||||
plugin_music_provider:
|
plugin_music_provider:
|
||||||
description: Music provider
|
description: |
|
||||||
|
Music provider
|
||||||
|
- `apple`: Apple Music
|
||||||
|
- `spotify`: Spotify
|
||||||
|
- `lastfm`: Last.fm
|
||||||
|
- `youtube`: YouTube Music
|
||||||
|
|
||||||
|
This setting is optional when using `plugin_music_mode: playlist` (provider will be auto-detected from `plugin_music_playlist` URL)
|
||||||
type: string
|
type: string
|
||||||
default: ""
|
default: ""
|
||||||
values:
|
values:
|
||||||
- apple # Apple Music
|
- apple
|
||||||
- spotify # Spotify
|
- spotify
|
||||||
- lastfm # Last.fm
|
- lastfm
|
||||||
- youtube # YouTube
|
- youtube
|
||||||
|
|
||||||
# Music provider token
|
|
||||||
# This may be required depending on music provider used and plugin mode
|
|
||||||
# - "apple" : not required
|
|
||||||
# - "spotify" : required for "recent" or "top" mode, format is "client_id, client_secret, refresh_token"
|
|
||||||
# - "lastfm" : required, format is "api_key"
|
|
||||||
# - "youtube" : required for "recent" mode, format is "cookie"
|
|
||||||
plugin_music_token:
|
plugin_music_token:
|
||||||
description: Music provider personal token
|
description: |
|
||||||
|
Music provider token
|
||||||
|
|
||||||
|
Below is the expected token format for each provider:
|
||||||
|
- `apple`: *(not supported)*
|
||||||
|
- `spotify`: "client_id, client_secret, refresh_token"
|
||||||
|
- `lastfm`: "api_key"
|
||||||
|
- `youtube`: "cookie"
|
||||||
type: token
|
type: token
|
||||||
default: ""
|
default: ""
|
||||||
|
|
||||||
# Plugin mode
|
|
||||||
plugin_music_mode:
|
plugin_music_mode:
|
||||||
description: Plugin mode
|
description: |
|
||||||
type: string
|
Display mode
|
||||||
default: "" # Defaults to "recent" or to "playlist" if "plugin_music_playlist" is specified
|
- `playlist`: display random tracks from an URL playlist
|
||||||
values:
|
- `recent`: display recently listened tracks
|
||||||
- playlist # Display tracks from an embed playlist randomly
|
- `top`: display top listened artists/tracks
|
||||||
- recent # Display recently listened tracks
|
|
||||||
- top # Display top listened artists/tracks
|
If `plugin_music_playlist` is specifed, the default value is `playlist`, else it is `recent`
|
||||||
|
type: string
|
||||||
|
default: ""
|
||||||
|
values:
|
||||||
|
- playlist
|
||||||
|
- recent
|
||||||
|
- top
|
||||||
|
|
||||||
# Embed playlist url (i.e. url used by music player iframes)
|
|
||||||
plugin_music_playlist:
|
plugin_music_playlist:
|
||||||
description: Embed playlist url
|
description: |
|
||||||
|
Playlist URL
|
||||||
|
|
||||||
|
It must be from an "embed url" (i.e. music player iframes that can be integrated in other websites)
|
||||||
type: string
|
type: string
|
||||||
default: ""
|
default: ""
|
||||||
example: https://embed.music.apple.com/--/playlist/--------/--------
|
example: https://embed.music.apple.com/--/playlist/--------/--------
|
||||||
|
|
||||||
# Number of music tracks to display
|
|
||||||
plugin_music_limit:
|
plugin_music_limit:
|
||||||
description: Maximum number of tracks to display
|
description: Display limit
|
||||||
type: number
|
type: number
|
||||||
default: 4
|
default: 4
|
||||||
min: 1
|
min: 1
|
||||||
max: 100
|
max: 100
|
||||||
|
|
||||||
# Display when track was last played
|
|
||||||
plugin_music_played_at:
|
plugin_music_played_at:
|
||||||
description: Display when the track was played
|
description: Recently played - Toggle last played timestamp display
|
||||||
type: boolean
|
type: boolean
|
||||||
default: no
|
default: no
|
||||||
|
|
||||||
# Time range for "top" mode
|
|
||||||
plugin_music_time_range:
|
plugin_music_time_range:
|
||||||
description: Time period for top mode
|
description: |
|
||||||
|
Top tracks - Time range for `top` mode
|
||||||
|
- `short`: 4 weeks
|
||||||
|
- `medium`: 6 months
|
||||||
|
- `long`: several years
|
||||||
type: string
|
type: string
|
||||||
default: short # Defaults to "short" (4 weeks)
|
default: short
|
||||||
values:
|
values:
|
||||||
- short # Top artists/tracks from past 4 weeks
|
- short
|
||||||
- medium # Top artists/tracks from past 6 months
|
- medium
|
||||||
- long # Top artists/tracks from several years
|
- long
|
||||||
|
|
||||||
# Option for "top" mode to select tracks or artists
|
|
||||||
plugin_music_top_type:
|
plugin_music_top_type:
|
||||||
description: Whether to show tracks or artists in top mode
|
description: |
|
||||||
|
Top tracks - Display type
|
||||||
|
- `tracks`: display track
|
||||||
|
- `artists`: display artists
|
||||||
type: string
|
type: string
|
||||||
default: tracks
|
default: tracks
|
||||||
values:
|
values:
|
||||||
- tracks
|
- tracks
|
||||||
- artists
|
- artists
|
||||||
|
|
||||||
# Username on music provider service
|
|
||||||
plugin_music_user:
|
plugin_music_user:
|
||||||
description: Music provider username
|
description: Music provider username
|
||||||
type: string
|
type: string
|
||||||
|
|||||||
Reference in New Issue
Block a user