@mjba/lyrics
Version:
A TypeScript library for fetching song lyrics from Musixmatch
75 lines (72 loc) • 2.09 kB
TypeScript
interface Track {
track_id: number;
track_name: string;
artist_name: string;
album_name: string;
track_length: number;
track_isrc?: string;
track_rating?: number;
}
interface SongInfo {
title: string;
artist: string;
album?: string;
duration?: number;
}
interface LyricsResponse {
success: boolean;
lyrics?: string;
songInfo?: SongInfo;
error?: string;
syncedLyrics?: SyncedLyric[];
hasTimestamps?: boolean;
}
interface SyncedLyric {
text: string;
time: {
total: number;
minutes: number;
seconds: number;
ms: number;
};
}
declare class LyricsClient {
private ROOT_URL;
private token;
private parseSubtitleToSyncedLyrics;
private parseRichSyncToSyncedLyrics;
private get;
private getToken;
/**
* Get synced lyrics with timestamps by ISRC code
* @param isrc - International Standard Recording Code
* @returns Promise<LyricsResponse>
*/
getSyncedLyricsByISRC(isrc: string): Promise<LyricsResponse>;
/**
* Search for track and get synced lyrics with timestamps
* @param query - Search query (artist and track name)
* @returns Promise<LyricsResponse>
*/
searchAndGetSyncedLyrics(query: string): Promise<LyricsResponse>;
/**
* Get lyrics by ISRC code
* @param isrc - International Standard Recording Code
* @returns Promise<LyricsResponse>
*/
getLyricsByISRC(isrc: string): Promise<LyricsResponse>;
/**
* Search for track and get lyrics
* @param query - Search query (artist and track name)
* @returns Promise<LyricsResponse>
*/
searchAndGetLyrics(query: string): Promise<LyricsResponse>;
/**
* Get track information by ISRC without lyrics
* @param isrc - International Standard Recording Code
* @returns Promise<Track>
*/
getTrackByISRC(isrc: string): Promise<Track>;
}
declare const lyricsClient: LyricsClient;
export { LyricsClient, type LyricsResponse, type SongInfo, type SyncedLyric, type Track, lyricsClient };