Add language and fetchAll query params to lyrics endpoint

This commit is contained in:
srgooglo 2025-06-24 19:58:27 +02:00
parent 6674867d28
commit f7e5209104

View File

@ -66,7 +66,7 @@ class LRCV1 {
export default async (req) => { export default async (req) => {
const { track_id } = req.params const { track_id } = req.params
let { translate_lang = "original" } = req.query let { language = "original", fetchAll = false } = req.query
let result = await TrackLyric.findOne({ let result = await TrackLyric.findOne({
track_id, track_id,
@ -76,24 +76,24 @@ export default async (req) => {
throw new OperationError(404, "Track lyric not found") throw new OperationError(404, "Track lyric not found")
} }
result.translated_lang = translate_lang result.translated_lang = language
result.available_langs = [] result.available_langs = []
if (typeof result.lrc === "object") { if (typeof result.lrc === "object") {
result.available_langs = Object.keys(result.lrc) result.available_langs = Object.keys(result.lrc)
if (!result.lrc[translate_lang]) { if (!result.lrc[language]) {
translate_lang = "original" language = "original"
} }
if (result.lrc[translate_lang]) { if (result.lrc[language]) {
if (typeof result.lrc[translate_lang] === "string") { if (typeof result.lrc[language] === "string") {
let { data } = await axios.get(result.lrc[translate_lang]) let { data } = await axios.get(result.lrc[language])
result.synced_lyrics = LRCV1.parseString(data) result.synced_lyrics = LRCV1.parseString(data)
result.synced_lyrics = LRCV1.setTimmings(result.synced_lyrics) result.synced_lyrics = LRCV1.setTimmings(result.synced_lyrics)
} else { } else {
result.synced_lyrics = result.lrc[translate_lang] result.synced_lyrics = result.lrc[language]
result.synced_lyrics = LRCV1.setTimmings(result.synced_lyrics) result.synced_lyrics = LRCV1.setTimmings(result.synced_lyrics)
} }
} }
@ -105,6 +105,10 @@ export default async (req) => {
) )
} }
if (!fetchAll) {
delete result.lrc
}
delete result.__v delete result.__v
return result return result