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