rsshub
Version:
Make RSS Great Again!
41 lines (40 loc) • 1.58 kB
JavaScript
import { t as rofetch } from "./ofetch-W1aeTHCo.mjs";
import { t as config } from "./config-Bpyy15zS.mjs";
import { t as parseDate } from "./parse-date-CjhZE69i.mjs";
import { t as ConfigNotFoundError } from "./config-not-found-fQ5mxvDU.mjs";
//#region lib/routes/last.fm/loved.ts
const route = {
path: "/loved/:user",
categories: ["multimedia"],
example: "/last.fm/loved/yeFoenix",
parameters: { user: "Last.fm 用户名" },
features: { requireConfig: [{
name: "LASTFM_API_KEY",
optional: false,
description: "Last.fm API key"
}] },
radar: [{ source: ["www.last.fm/user/:user", "www.last.fm/user/:user/*"] }],
name: "用户 Love 记录",
maintainers: ["hoilc"],
handler
};
async function handler(ctx) {
if (!config.lastfm?.api_key) throw new ConfigNotFoundError("Last.fm RSS is disabled due to the lack of <a href=\"https://docs.rsshub.app/deploy/config#route-specific-configurations\">relevant config</a>");
const { user } = ctx.req.param();
const apiKey = config.lastfm.api_key;
const data = await rofetch(`https://ws.audioscrobbler.com/2.0/?method=user.getlovedtracks&user=${user}&api_key=${apiKey}&format=json`);
const list = data.lovedtracks.track;
return {
title: `Loved Tracks by ${data.lovedtracks["@attr"].user} - Last.fm`,
link: `https://www.last.fm/user/${user}/loved`,
item: list.map((item) => ({
title: `${item.name} - ${item.artist.name}`,
author: item.artist.name,
description: `<img src="${item.image.at(-1)["#text"]}" />`,
pubDate: parseDate(item.date.uts * 1e3),
link: item.url
}))
};
}
//#endregion
export { route };