feat: 为歌曲同步功能添加元数据记录和日志
在前后端添加日志记录和元数据传递,包括歌曲名称、艺术家和专辑信息
This commit is contained in:
@@ -114,6 +114,7 @@ async function search(req, res) {
|
||||
.map(mapTunehubResult)
|
||||
.filter(song => song.songName.length > 0);
|
||||
|
||||
logger.info(`[search] Final songs array = ${JSON.stringify(songs, null, 2)}`);
|
||||
res.send({
|
||||
status: 0,
|
||||
data: {
|
||||
|
||||
@@ -52,7 +52,9 @@ async function createJob(req, res) {
|
||||
jobId = await unblockMusicWithSongId(uid, source, songId)
|
||||
} else if (jobType === JobType.SyncSongFromUrl || jobType === JobType.DownloadSongFromUrl) {
|
||||
const request = req.body;
|
||||
logger.info(`[createJob] Received jobType=${jobType}, request.body.urlJob=${JSON.stringify(request.urlJob, null, 2)}`);
|
||||
const url = request.urlJob && matchUrlFromStr(request.urlJob.url);
|
||||
logger.info(`[createJob] Extracted url=${url} from request.urlJob.url=${request.urlJob.url}`);
|
||||
|
||||
if (!url) {
|
||||
res.status(412).send({
|
||||
@@ -64,6 +66,7 @@ async function createJob(req, res) {
|
||||
|
||||
let meta = {};
|
||||
const songId = request.urlJob && request.urlJob.meta.songId ? request.urlJob.meta.songId : "";
|
||||
logger.info(`[createJob] songId=${songId}`);
|
||||
|
||||
// 先从 TuneHub 获取歌曲信息,避免显示原始 URL
|
||||
if (request.urlJob.meta && (request.urlJob.meta.songName !== "" && request.urlJob.meta.artist !== "")) {
|
||||
|
||||
@@ -12,18 +12,21 @@ export const qrLoginCheck = qrKey => get("/account/qrlogin-check", {qrKey});
|
||||
export const getAllPlaylist = data => get("/playlists", data);
|
||||
export const getPlaylistDetail = playlistId => get(`/playlists/netease/${playlistId}/songs`);
|
||||
export const getJobDetail = jobId => get(`/sync-jobs/${jobId}`);
|
||||
export const createSyncSongFromUrlJob = (url, songId = "") => {
|
||||
export const createSyncSongFromUrlJob = (url, songId = "", meta = {}) => {
|
||||
return post("/sync-jobs", {
|
||||
"jobType": "SyncSongFromUrl",
|
||||
"urlJob": {
|
||||
"url": url,
|
||||
"meta": {
|
||||
"songId": songId
|
||||
"songId": songId,
|
||||
"songName": meta.songName || "",
|
||||
"artist": meta.artist || "",
|
||||
"album": meta.album || ""
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
export const createDownloadSongFromUrlJob = (url, songId = "") => {
|
||||
export const createDownloadSongFromUrlJob = (url, songId = "", meta = {}) => {
|
||||
return post("/sync-jobs", {
|
||||
"jobType": "DownloadSongFromUrl",
|
||||
"urlJob": {
|
||||
|
||||
@@ -184,10 +184,18 @@ export default {
|
||||
}
|
||||
return "";
|
||||
},
|
||||
async uploadToCloud(pageUrl) {
|
||||
async uploadToCloud(item) {
|
||||
const pageUrl = this.getSourceUrl(item);
|
||||
const meta = {
|
||||
songName: item.songName || "",
|
||||
artist: item.artist || "",
|
||||
album: item.album || ""
|
||||
};
|
||||
console.log(`[SearchResultListForMobile] uploadToCloud: pageUrl=${pageUrl}, meta=${JSON.stringify(meta)}`);
|
||||
const ret = await createSyncSongFromUrlJob(
|
||||
pageUrl,
|
||||
this.suggestMatchSongId
|
||||
this.suggestMatchSongId,
|
||||
meta
|
||||
);
|
||||
console.log(ret);
|
||||
|
||||
@@ -232,7 +240,7 @@ export default {
|
||||
console.log(currentSong);
|
||||
switch (actionItem.action) {
|
||||
case ActionUpload:
|
||||
this.uploadToCloud(pageUrl);
|
||||
this.uploadToCloud(currentSong);
|
||||
break;
|
||||
case ActionDownloadToLocalService:
|
||||
this.downloadToLocalService(pageUrl);
|
||||
|
||||
@@ -295,9 +295,16 @@ export default {
|
||||
},
|
||||
async uploadToCloud(row) {
|
||||
const pageUrl = this.getSourceUrl(row);
|
||||
const meta = {
|
||||
songName: row.songName || "",
|
||||
artist: row.artist || "",
|
||||
album: row.album || ""
|
||||
};
|
||||
logger.info(`[SearchResultTable] uploadToCloud: pageUrl=${pageUrl}, meta=${JSON.stringify(meta)}`);
|
||||
const ret = await createSyncSongFromUrlJob(
|
||||
pageUrl,
|
||||
this.suggestMatchSongId
|
||||
this.suggestMatchSongId,
|
||||
meta
|
||||
);
|
||||
console.log(ret);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user