Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
98 changes: 81 additions & 17 deletions packages/sdk/src/sdk/api/tracks/TrackUploadHelper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,51 @@ export class TrackUploadHelper extends BaseAPI {
return id
}

public transformTrackUploadMetadata(
inputMetadata: CreateTrackRequestBody | UpdateTrackRequestBody,
userId: number
) {
public transformTrackUploadMetadata<
// TrackMetadata is a less strict type
// only requiring the fields used in this function.
// This supports both track/playlist uploads and edits
TrackMetadata extends Pick<
PlaylistTrackMetadata,
'isStreamGated' | 'streamConditions' | 'isUnlisted' | 'fieldVisibility'
>
>(inputMetadata: TrackMetadata, userId: number) {
const metadata = {
...inputMetadata,
ownerId: userId
}

const isStreamGated = metadata.isStreamGated
const isUsdcGated = 'usdc_purchase' in (metadata.streamConditions ?? {})
const isUnlisted = metadata.isUnlisted

// If track is stream gated and not usdc purchase gated, set remixes to false
if (isStreamGated && !isUsdcGated && metadata.fieldVisibility) {
metadata.fieldVisibility.remixes = false
}

// If track is public, set required visibility fields to true
if (!isUnlisted) {
metadata.fieldVisibility = {
...metadata.fieldVisibility,
genre: true,
mood: true,
tags: true,
share: true,
playCount: true
}
}
return metadata
}

public transformTrackUploadMetadataV2<
T extends CreateTrackRequestBody | UpdateTrackRequestBody
>(inputMetadata: T, userId: number) {
const metadata: T = {
...inputMetadata,
ownerId: userId
}

const isStreamGated = metadata.streamConditions !== undefined
const isUsdcGated = 'usdc_purchase' in (metadata.streamConditions ?? {})
const isUnlisted = metadata.isUnlisted
Expand All @@ -57,8 +93,10 @@ export class TrackUploadHelper extends BaseAPI {
return metadata
}

public populateTrackMetadataWithUploadResponse(
trackMetadata: CreateTrackRequestBody | UpdateTrackRequestBody,
public populateTrackMetadataWithUploadResponseV2<
T extends CreateTrackRequestBody | UpdateTrackRequestBody
>(
trackMetadata: T,
audioResponse?: UploadResponse,
coverArtResponse?: UploadResponse
) {
Expand Down Expand Up @@ -96,18 +134,44 @@ export class TrackUploadHelper extends BaseAPI {
return updated
}

public extractMediorumUploadOptions(metadata: PlaylistTrackMetadata) {
const uploadOptions: { [key: string]: string } = {}
if (
metadata.previewStartSeconds !== undefined &&
metadata.previewStartSeconds !== null
) {
uploadOptions.previewStartSeconds =
metadata.previewStartSeconds.toString()
public populateTrackMetadataWithUploadResponse(
trackMetadata: Partial<PlaylistTrackMetadata>,
audioResponse?: UploadResponse,
coverArtResponse?: UploadResponse
) {
let updated: Partial<PlaylistTrackMetadata> & { coverArtSizes?: string } = {
...trackMetadata
}
if (metadata.placementHosts) {
uploadOptions.placement_hosts = metadata.placementHosts
if (audioResponse) {
updated = {
...updated,
trackCid: audioResponse.results['320'],
previewCid:
trackMetadata.previewStartSeconds !== undefined &&
trackMetadata.previewStartSeconds !== null
? audioResponse.results[
`320_preview|${trackMetadata.previewStartSeconds}`
]
: trackMetadata.previewCid,
origFileCid: audioResponse.orig_file_cid,
origFilename: audioResponse.orig_filename || trackMetadata.origFilename,
audioUploadId: audioResponse.id,
duration: parseInt(audioResponse?.probe?.format?.duration ?? '0', 10),
bpm: audioResponse.audio_analysis_results?.bpm
? audioResponse.audio_analysis_results.bpm
: trackMetadata.bpm,
musicalKey: audioResponse.audio_analysis_results?.key
? audioResponse.audio_analysis_results.key
: trackMetadata.musicalKey,
audioAnalysisErrorCount: audioResponse.audio_analysis_error_count || 0
}
}
return uploadOptions
if (coverArtResponse) {
updated = {
...updated,
coverArtSizes: coverArtResponse.orig_file_cid
}
}
return updated
}
}
Loading
Loading