-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
10 changed files
with
406 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
/// <reference types="node" /> | ||
import EventEmitter from "events"; | ||
import { TokenHandler } from "./tokenHandler"; | ||
import { PositionHolder } from "./positionHolder"; | ||
import { ConstructorConfig, Token, CanvazResponse, LyricsResponse } from "./types"; | ||
import { PlayerEvent, PlayerEventTypes, TokenScope } from "./types"; | ||
export declare function safe_execution(_: unknown, propertyKey: string, descriptor: TypedPropertyDescriptor<any>): TypedPropertyDescriptor<any>; | ||
export declare abstract class GenericPlayer { | ||
protected tokenHandler: TokenHandler; | ||
protected _positionHolder: PositionHolder; | ||
eventEmitter: EventEmitter; | ||
protected playerInstance: PlayerNativeObject | undefined; | ||
protected _volume: number; | ||
protected device_id: string; | ||
protected _isInitialized: boolean; | ||
get isInitialized(): boolean; | ||
protected abstract onPlayerInitialized(): void; | ||
private validateConfig; | ||
constructor(config: ConstructorConfig, playerConstructMethod?: "create_player" | "create_player_spirc"); | ||
private player_event_callback; | ||
private registerListeners; | ||
on: <T extends PlayerEventTypes>(event: T, callback: (event: PlayerEvent<T>) => void) => EventEmitter; | ||
off: <T extends PlayerEventTypes>(event: T, callback: (event: PlayerEvent<T>) => void) => EventEmitter; | ||
addListener<T extends PlayerEventTypes>(event: T, callback: (event: PlayerEvent<T>) => void): EventEmitter; | ||
removeListener<T extends PlayerEventTypes>(event: T, callback: (event: PlayerEvent<T>) => void): EventEmitter; | ||
once<T extends PlayerEventTypes>(event: T, callback: (event: PlayerEvent<T>) => void): EventEmitter; | ||
removeAllListeners(): void; | ||
getDeviceId(): string; | ||
protected validateUri(val: string): [string | undefined, string | undefined]; | ||
abstract setVolume(volume: number, raw?: boolean): Promise<void>; | ||
abstract load(trackURIs: string | string[], autoPlay?: boolean, startPosition?: number): Promise<void>; | ||
abstract getToken(...scopes: TokenScope[]): Promise<Token | undefined>; | ||
abstract getVolume(raw?: boolean): number; | ||
abstract seek(posMs: number): Promise<void>; | ||
abstract close(): Promise<void>; | ||
abstract getCurrentPosition(): number; | ||
abstract getCanvas(track: string): Promise<CanvazResponse | undefined>; | ||
abstract getLyrics(track: string): Promise<LyricsResponse | undefined>; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
export * from "./spirc"; | ||
export * from "./player"; | ||
export * from "./types"; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
import { TokenScope } from "./types"; | ||
import { GenericPlayer } from "./genericPlayer"; | ||
export declare class SpotifyPlayer extends GenericPlayer { | ||
protected onPlayerInitialized(): void; | ||
/** | ||
* Set player state to play | ||
*/ | ||
play(): Promise<void>; | ||
/** | ||
* Set player state to paused | ||
*/ | ||
pause(): Promise<void>; | ||
/** | ||
* Seek current song to position | ||
* @param posMs position in milliseconds | ||
*/ | ||
seek(posMs: number): Promise<void>; | ||
/** | ||
* Clear all listeners and close player | ||
*/ | ||
close(): Promise<void>; | ||
/** | ||
* Get current position of player | ||
* @returns current position in milliseconds | ||
*/ | ||
getCurrentPosition(): number; | ||
/** | ||
* Set volume in percentage or uint16 | ||
* @param volume: Volume in percentage or uint16 | ||
* @param raw if true, volume is set in uint16. Otherwise percentage. (Default: false) | ||
*/ | ||
setVolume(volume: number, raw?: boolean): Promise<void>; | ||
/** | ||
* Returns volume in percentage or uint16 | ||
* @param raw If true, returns volume in uint16. Otherwise percentage | ||
* @returns volume in percentage or uint16 | ||
*/ | ||
getVolume(raw?: boolean): number; | ||
/** | ||
* Loads a track by Spotify URI or URL | ||
* @param trackURI spotify URI or URL of track to be loaded. (Eg. spotify:track:4PTG3Z6ehGkBFwjybzWkR8) | ||
* @param autoplay if true, track will start playing immediately after being loaded. (Default: false) | ||
*/ | ||
load(trackURIs: string | string[], autoPlay?: boolean, startPosition?: number): Promise<void>; | ||
/** | ||
* Get spotify access token for logged in account | ||
* @param scopes scopes to get token for. (https://developer.spotify.com/documentation/general/guides/authorization/scopes/) | ||
* @returns token | ||
*/ | ||
getToken(...scopes: TokenScope[]): Promise<any>; | ||
/** | ||
* Returns spotify canvas URL for track | ||
* @param track track URI or URL to get canvas for | ||
* @returns Spotify canvas public URL | ||
*/ | ||
getCanvas(track: string): Promise<import("./types").CanvazResponse | undefined>; | ||
/** | ||
* Get lyrics for spotify track | ||
* @param track Spotify track URI or URL | ||
* @returns | ||
*/ | ||
getLyrics(track: string): Promise<any>; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
export declare class PositionHolder { | ||
position: number; | ||
private positionListener; | ||
private updateInterval; | ||
callback?: (time: number) => void; | ||
constructor(updateInterval?: number); | ||
setListener(): void; | ||
clearListener(): void; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
import { ConstructorConfig, LyricsResponse, Token } from "./types"; | ||
import { TokenScope } from "./types"; | ||
import { GenericPlayer } from "./genericPlayer"; | ||
/** | ||
* Wrapper for librespot SPIRC player | ||
*/ | ||
export declare class SpotifyPlayerSpirc extends GenericPlayer { | ||
protected onPlayerInitialized(): void; | ||
constructor(config: ConstructorConfig); | ||
/** | ||
* Set player state to play | ||
*/ | ||
play(): Promise<void>; | ||
/** | ||
* Set player state to paused | ||
*/ | ||
pause(): Promise<void>; | ||
/** | ||
* Seek current song to position | ||
* @param posMs position in milliseconds | ||
*/ | ||
seek(posMs: number): Promise<void>; | ||
/** | ||
* Clear all listeners and close player | ||
*/ | ||
close(): Promise<void>; | ||
/** | ||
* Get current position of player | ||
* @returns current position in milliseconds | ||
*/ | ||
getCurrentPosition(): number; | ||
/** | ||
* Set volume in percentage or uint16 | ||
* @param volume: Volume in percentage or uint16 | ||
* @param raw if true, volume is set in uint16. Otherwise percentage. (Default: false) | ||
*/ | ||
setVolume(volume: number, raw?: boolean): Promise<void>; | ||
/** | ||
* Returns volume in percentage or uint16 | ||
* @param raw If true, returns volume in uint16. Otherwise percentage | ||
* @returns volume in percentage or uint16 | ||
*/ | ||
getVolume(raw?: boolean): number; | ||
/** | ||
* Loads a track by Spotify URI or URL | ||
* @param trackURI spotify URI or URL of track to be loaded. (Eg. spotify:track:4PTG3Z6ehGkBFwjybzWkR8) | ||
* @param autoplay if true, track will start playing immediately after being loaded. (Default: false) | ||
*/ | ||
load(trackURI: string, autoplay?: boolean): Promise<void>; | ||
/** | ||
* Adds track to queue | ||
* @param trackURI spotify URI or URL of track to be added to queue. (Eg. spotify:track:4PTG3Z6ehGkBFwjybzWkR8) | ||
*/ | ||
addToQueue(trackURI: string): Promise<void>; | ||
/** | ||
* Get spotify access token for logged in account | ||
* @param scopes scopes to get token for. (https://developer.spotify.com/documentation/general/guides/authorization/scopes/) | ||
* @returns token | ||
*/ | ||
getToken(...scopes: TokenScope[]): Promise<Token>; | ||
/** | ||
* Returns spotify canvas URL for track | ||
* @param track track URI or URL to get canvas for | ||
* @returns Spotify canvas public URL | ||
*/ | ||
getCanvas(track: string): Promise<import("./types").CanvazResponse | undefined>; | ||
/** | ||
* Get lyrics for spotify track | ||
* @param track Spotify track URI or URL | ||
* @returns | ||
*/ | ||
getLyrics(track: string): Promise<LyricsResponse | undefined>; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
import { Token, TokenScope } from "./types"; | ||
export declare class TokenHandler { | ||
private tokenMap; | ||
private filePath?; | ||
private readFilePromise; | ||
constructor(filePath?: string); | ||
private dumpFile; | ||
private readFile; | ||
addToken(token: Token): Promise<void>; | ||
getToken(scopes: TokenScope[]): Promise<Token | undefined>; | ||
} |
Oops, something went wrong.