mirror of
https://github.com/ragestudio/comty.git
synced 2025-06-09 10:34:17 +00:00
fix 500 when no metadata provided
This commit is contained in:
parent
aa5209d225
commit
78d0ec0e30
@ -6,113 +6,115 @@ import axios from "axios"
|
||||
import ModifyTrack from "./modify"
|
||||
|
||||
export default async (payload = {}) => {
|
||||
requiredFields(["title", "source", "user_id"], payload)
|
||||
requiredFields(["title", "source", "user_id"], payload)
|
||||
|
||||
let stream = null
|
||||
let headers = null
|
||||
let stream = null
|
||||
let headers = null
|
||||
|
||||
if (typeof payload._id === "string") {
|
||||
return await ModifyTrack(payload._id, payload)
|
||||
}
|
||||
if (typeof payload._id === "string") {
|
||||
return await ModifyTrack(payload._id, payload)
|
||||
}
|
||||
|
||||
let metadata = Object()
|
||||
let metadata = Object()
|
||||
|
||||
try {
|
||||
const sourceStream = await axios({
|
||||
url: payload.source,
|
||||
method: "GET",
|
||||
responseType: "stream",
|
||||
})
|
||||
try {
|
||||
const sourceStream = await axios({
|
||||
url: payload.source,
|
||||
method: "GET",
|
||||
responseType: "stream",
|
||||
})
|
||||
|
||||
stream = sourceStream.data
|
||||
headers = sourceStream.headers
|
||||
stream = sourceStream.data
|
||||
headers = sourceStream.headers
|
||||
|
||||
const streamMetadata = await MusicMetadata.parseStream(stream, {
|
||||
mimeType: headers["content-type"],
|
||||
})
|
||||
const streamMetadata = await MusicMetadata.parseStream(stream, {
|
||||
mimeType: headers["content-type"],
|
||||
})
|
||||
|
||||
metadata = {
|
||||
...metadata,
|
||||
format: streamMetadata.format.codec,
|
||||
channels: streamMetadata.format.numberOfChannels,
|
||||
sampleRate: streamMetadata.format.sampleRate,
|
||||
bits: streamMetadata.format.bitsPerSample,
|
||||
lossless: streamMetadata.format.lossless,
|
||||
duration: streamMetadata.format.duration,
|
||||
metadata = {
|
||||
...metadata,
|
||||
format: streamMetadata.format.codec,
|
||||
channels: streamMetadata.format.numberOfChannels,
|
||||
sampleRate: streamMetadata.format.sampleRate,
|
||||
bits: streamMetadata.format.bitsPerSample,
|
||||
lossless: streamMetadata.format.lossless,
|
||||
duration: streamMetadata.format.duration,
|
||||
|
||||
title: streamMetadata.common.title,
|
||||
artists: streamMetadata.common.artists,
|
||||
album: streamMetadata.common.album,
|
||||
}
|
||||
} catch (error) {
|
||||
// sowy :(
|
||||
}
|
||||
title: streamMetadata.common.title,
|
||||
artists: streamMetadata.common.artists,
|
||||
album: streamMetadata.common.album,
|
||||
}
|
||||
} catch (error) {
|
||||
// sowy :(
|
||||
}
|
||||
|
||||
if (typeof payload.metadata === "object") {
|
||||
metadata = {
|
||||
...metadata,
|
||||
...payload.metadata,
|
||||
}
|
||||
}
|
||||
if (typeof payload.metadata === "object") {
|
||||
metadata = {
|
||||
...metadata,
|
||||
...payload.metadata,
|
||||
}
|
||||
}
|
||||
|
||||
metadata.format = metadata.format.toUpperCase()
|
||||
if (metadata.format) {
|
||||
metadata.format = metadata.format.toUpperCase()
|
||||
}
|
||||
|
||||
if (
|
||||
metadata.format === "FLAC" ||
|
||||
metadata.format === "WAV" ||
|
||||
metadata.format === "ALAC"
|
||||
) {
|
||||
metadata.lossless = true
|
||||
}
|
||||
if (
|
||||
metadata.format === "FLAC" ||
|
||||
metadata.format === "WAV" ||
|
||||
metadata.format === "ALAC"
|
||||
) {
|
||||
metadata.lossless = true
|
||||
}
|
||||
|
||||
const obj = {
|
||||
title: payload.title,
|
||||
album: payload.album,
|
||||
cover: payload.cover,
|
||||
artists: [],
|
||||
source: payload.source,
|
||||
metadata: metadata,
|
||||
lyrics_enabled: payload.lyrics_enabled,
|
||||
}
|
||||
const obj = {
|
||||
title: payload.title,
|
||||
album: payload.album,
|
||||
cover: payload.cover,
|
||||
artists: [],
|
||||
source: payload.source,
|
||||
metadata: metadata,
|
||||
lyrics_enabled: payload.lyrics_enabled,
|
||||
}
|
||||
|
||||
if (Array.isArray(payload.artists)) {
|
||||
obj.artists = payload.artists
|
||||
}
|
||||
if (Array.isArray(payload.artists)) {
|
||||
obj.artists = payload.artists
|
||||
}
|
||||
|
||||
if (typeof payload.artists === "string") {
|
||||
obj.artists.push(payload.artists)
|
||||
}
|
||||
if (typeof payload.artists === "string") {
|
||||
obj.artists.push(payload.artists)
|
||||
}
|
||||
|
||||
if (typeof payload.artist === "string") {
|
||||
obj.artists.push(payload.artist)
|
||||
}
|
||||
if (typeof payload.artist === "string") {
|
||||
obj.artists.push(payload.artist)
|
||||
}
|
||||
|
||||
if (obj.artists.length === 0 || !obj.artists) {
|
||||
obj.artists = metadata.artists
|
||||
}
|
||||
if (obj.artists.length === 0 || !obj.artists) {
|
||||
obj.artists = metadata.artists
|
||||
}
|
||||
|
||||
let track = null
|
||||
let track = null
|
||||
|
||||
if (payload._id) {
|
||||
track = await Track.findById(payload._id)
|
||||
if (payload._id) {
|
||||
track = await Track.findById(payload._id)
|
||||
|
||||
if (!track) {
|
||||
throw new OperationError(404, "Track not found, cannot update")
|
||||
}
|
||||
if (!track) {
|
||||
throw new OperationError(404, "Track not found, cannot update")
|
||||
}
|
||||
|
||||
throw new OperationError(501, "Not implemented")
|
||||
} else {
|
||||
track = new Track({
|
||||
...obj,
|
||||
publisher: {
|
||||
user_id: payload.user_id,
|
||||
}
|
||||
})
|
||||
throw new OperationError(501, "Not implemented")
|
||||
} else {
|
||||
track = new Track({
|
||||
...obj,
|
||||
publisher: {
|
||||
user_id: payload.user_id,
|
||||
},
|
||||
})
|
||||
|
||||
await track.save()
|
||||
}
|
||||
await track.save()
|
||||
}
|
||||
|
||||
track = track.toObject()
|
||||
track = track.toObject()
|
||||
|
||||
return track
|
||||
}
|
||||
return track
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user