-
Notifications
You must be signed in to change notification settings - Fork 13
/
AudioManager.ts
42 lines (36 loc) · 1.42 KB
/
AudioManager.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import { AudioAnalysis } from '../../interfaces/Spotify/AudioAnalysis';
import { AudioFeatures } from '../../interfaces/Spotify/AudioFeatures';
import { Manager } from '../Manager';
export class AudioManager extends Manager {
/**
* @description Get audio features for a track.
* @param {string} id The ID of the track.
* @returns {Promise<AudioFeatures>} Returns a promise with a {@link AudioFeatures}.
*/
async feature(id: string): Promise<AudioFeatures> {
const res = await this.http.get(`/audio-features/${id}`);
return res.data as AudioFeatures;
}
/**
* @description Get audio features for muliples tracks.
* @param {string[]} trackIds The IDs of the tracks.
* @returns {Promise<AudioFeatures[]>} Returns a promise with a {@link AudioFeatures}.
*/
async features(trackIds: string[]): Promise<AudioFeatures[]> {
const res = await this.http.get('/audio-features', {
query: {
ids: trackIds.join(',')
}
});
return res.data.audio_features as AudioFeatures[];
}
/**
* @description Get a detailed audio analysis for a single track identified by its unique Spotify ID.
* @param {string} id The ID of the track.
* @returns {Promise<AudioAnalysis>} Returns a promise with a {@link AudioAnalysis}.
*/
async analysis(id: string): Promise<AudioAnalysis> {
const res = await this.http.get(`/audio-analysis/${id}`);
return res.data as AudioAnalysis;
}
}