feat: Add new API

- Add a new API generate_lyrics.
- Update the documentation.
- Modify the API version.
This commit is contained in:
blueeon
2024-03-31 16:44:07 +08:00
parent 721bfecb77
commit b3be1185a9
8 changed files with 224 additions and 93 deletions
+21
View File
@@ -233,6 +233,27 @@ class SunoApi {
}
}
/**
* Generates lyrics based on a given prompt.
* @param prompt The prompt for generating lyrics.
* @returns The generated lyrics text.
*/
public async generateLyrics(prompt: string): Promise<string> {
await this.keepAlive(false);
// Initiate lyrics generation
const generateResponse = await this.client.post(`${SunoApi.BASE_URL}/api/generate/lyrics/`, { prompt });
const generateId = generateResponse.data.id;
// Poll for lyrics completion
let lyricsResponse = await this.client.get(`${SunoApi.BASE_URL}/api/generate/lyrics/${generateId}`);
while (lyricsResponse?.data?.status !== 'complete') {
await sleep(2); // Wait for 2 seconds before polling again
lyricsResponse = await this.client.get(`${SunoApi.BASE_URL}/api/generate/lyrics/${generateId}`);
}
// Return the generated lyrics text
return lyricsResponse.data;
}
/**
* Processes the lyrics (prompt) from the audio metadata into a more readable format.