32 lines
1.6 KiB
TypeScript
32 lines
1.6 KiB
TypeScript
import { Soundcloud, SoundcloudTrack, SoundcloudPlaylist } from 'soundcloud.ts';
|
|
import { ExtractorPlugin, ResolveOptions, Song, Playlist } from 'distube';
|
|
|
|
declare enum SearchType {
|
|
Track = "track",
|
|
Playlist = "playlist"
|
|
}
|
|
interface SoundCloudPluginOptions {
|
|
clientId?: string;
|
|
oauthToken?: string;
|
|
}
|
|
declare class SoundCloudPlugin extends ExtractorPlugin {
|
|
soundcloud: Soundcloud;
|
|
constructor(options?: SoundCloudPluginOptions);
|
|
search<T>(query: string, type?: SearchType.Track, limit?: number, options?: ResolveOptions<T>): Promise<Song<T>[]>;
|
|
search<T>(query: string, type: SearchType.Playlist, limit?: number, options?: ResolveOptions<T>): Promise<Playlist<T>[]>;
|
|
search<T>(query: string, type?: SearchType, limit?: number, options?: ResolveOptions<T>): Promise<Song<T>[] | Playlist<T>[]>;
|
|
validate(url: string): boolean;
|
|
resolve<T>(url: string, options: ResolveOptions<T>): Promise<SoundCloudPlaylist<T> | SoundCloudSong<T>>;
|
|
getRelatedSongs(song: SoundCloudSong<undefined>): Promise<SoundCloudSong<unknown>[]>;
|
|
getStreamURL<T>(song: SoundCloudSong<T>): Promise<string>;
|
|
searchSong<T>(query: string, options: ResolveOptions<T>): Promise<Song<T>>;
|
|
}
|
|
declare class SoundCloudSong<T> extends Song<T> {
|
|
constructor(plugin: SoundCloudPlugin, info: SoundcloudTrack, options?: ResolveOptions<T>);
|
|
}
|
|
declare class SoundCloudPlaylist<T> extends Playlist<T> {
|
|
constructor(plugin: SoundCloudPlugin, info: SoundcloudPlaylist, options?: ResolveOptions<T>);
|
|
}
|
|
|
|
export { SearchType, SoundCloudPlugin, type SoundCloudPluginOptions, SoundCloudPlugin as default };
|