npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

svelte-spotify-web-playback

v1.0.3

Published

Svelte Wrapper for Spotify Web Playback SDK

Downloads

35

Readme

Svelte Spotify Web Playback

npm npm

A simple svelte wrapper for Spotify web playback. Lets you focus on building your own player and not needing to worry about the underlying logic/authorizations needed to get things running.

Features

Installation

npm install -D svelte-spotify-web-playback

Requiments

  • A Client ID which can be obtained from Spotify Dashboard
  • Authenticated users must have a valid Spotify Premium subscription.
  • A supported web browser running on the user's device

When creating an Client ID, remember to add correct callback urls to your application. This wrapper will default to it's current url as the callback url. Example when developing, you probaly will host the player on https://localhost:3000/ -> you should have this url in callbacks.

Simple usage

This simple version will render the basic player with few controls.

<script>
  import { WebPlayback } from 'svelte-spotify-web-playback';
  const client_id = 'your_client_id';
</script>

<WebPlayback {client_id} />

Default Player

Customization

You propably want to customize your player - this is done via slots. You can use slots directly or pass it to your custom elements. (Suggesting the latter, keeps things tidy)

<script>
  import { WebPlayback } from 'svelte-spotify-web-playback';
  import CustomPlayer from './src/my_custom_player.svelte';
  const client_id = 'your_client_id';
  let wrapper; // Reference to our wrapper element.
</script>

<WebPlayback 
  {client_id} 
  name="My Spotify Player" 
  volume={0.5} 
  bind:this={wrapper}
>
  <!-- Direct usage -->
  <div slot="login">
      <button on:click={() => wrapper.login()}>Login with Spotify</button>
  </div>
  <!-- Custom element usage -->
  <CustomPlayer slot="player" let:player let:state {player} {state} />
</WebPlayback>

Wrapper element

Functions

| function | description | | ------ | ------ | | login() | Login saved user, or redirect to give access to the app. | | selectDevice() | Select this player active | | logout() | Logs current user out. User needs to give access again. |

Props

| name | default value | type | description| | ------ | ------ | ------ | ------ | | client_id | (required) | string | | | name | Svelte Web Player | string | Name of your player in Spotify Connect | | volume | 0.5 |number | Initial volume of the player | | scopes | ['user-read-playback-state','streaming','user-read-private','user-modify-playback-state','user-read-email'] |string[] | Scopes for your player. | | redirect_uri | current window url |string | The url where your player is located. |

Slots

| name | props | | ------ | ------ | | error | { error:{ type: string, message: string } } | | login | - | | loading | - | | waiting | - | | player | { player: WebPlaybackPlayer, state: WebPlaybackState } | | logout | - | | all | { player: WebPlaybackPlayer, state: WebPlaybackState, error: { type: string, message: string }, internal: InternalStatus } |

Slot "all" is ment for users who want to heavily modify the flow of the player. It will expose the internal state to the user. However, it will disable all other slots - you will need to handle different states manually.

Examples

TODO:

  • Source of the basic player: Here