style: auto-fix linting issues
This commit is contained in:
parent
30b2e7d445
commit
7e6375919d
3 changed files with 69 additions and 27 deletions
60
js/api.js
60
js/api.js
|
|
@ -1429,32 +1429,39 @@ export class LosslessAPI {
|
||||||
const coverBlobToEmbed = await prefetchPromises.coverFetch;
|
const coverBlobToEmbed = await prefetchPromises.coverFetch;
|
||||||
const extraFiles = [];
|
const extraFiles = [];
|
||||||
const ffmpegMetadataArgs = [];
|
const ffmpegMetadataArgs = [];
|
||||||
|
|
||||||
if (coverBlobToEmbed) {
|
if (coverBlobToEmbed) {
|
||||||
const coverBuffer = await coverBlobToEmbed.arrayBuffer();
|
const coverBuffer = await coverBlobToEmbed.arrayBuffer();
|
||||||
const coverExt = getMimeType(new Uint8Array(coverBuffer)) === 'image/png' ? 'png' : 'jpg';
|
const coverExt = getMimeType(new Uint8Array(coverBuffer)) === 'image/png' ? 'png' : 'jpg';
|
||||||
const coverName = `cover.${coverExt}`;
|
const coverName = `cover.${coverExt}`;
|
||||||
extraFiles.push({
|
extraFiles.push({
|
||||||
name: coverName,
|
name: coverName,
|
||||||
data: coverBuffer
|
data: coverBuffer,
|
||||||
});
|
});
|
||||||
ffmpegMetadataArgs.push('-i', coverName);
|
ffmpegMetadataArgs.push('-i', coverName);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (track) {
|
if (track) {
|
||||||
ffmpegMetadataArgs.push(
|
ffmpegMetadataArgs.push(
|
||||||
'-metadata', `title=${getTrackTitle(track)}`,
|
'-metadata',
|
||||||
'-metadata', `artist=${getFullArtistString(track)}`,
|
`title=${getTrackTitle(track)}`,
|
||||||
'-metadata', `album=${track.album?.title || ''}`,
|
'-metadata',
|
||||||
'-metadata', `album_artist=${track.album?.artist?.name || track.artist?.name || ''}`
|
`artist=${getFullArtistString(track)}`,
|
||||||
|
'-metadata',
|
||||||
|
`album=${track.album?.title || ''}`,
|
||||||
|
'-metadata',
|
||||||
|
`album_artist=${track.album?.artist?.name || track.artist?.name || ''}`
|
||||||
);
|
);
|
||||||
|
|
||||||
const trackNum = track.trackNumber;
|
const trackNum = track.trackNumber;
|
||||||
if (trackNum) {
|
if (trackNum) {
|
||||||
const totalTracks = track.album?.numberOfTracks;
|
const totalTracks = track.album?.numberOfTracks;
|
||||||
ffmpegMetadataArgs.push('-metadata', `track=${trackNum}${totalTracks ? `/${totalTracks}` : ''}`);
|
ffmpegMetadataArgs.push(
|
||||||
|
'-metadata',
|
||||||
|
`track=${trackNum}${totalTracks ? `/${totalTracks}` : ''}`
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const discNum = track.volumeNumber || track.discNumber;
|
const discNum = track.volumeNumber || track.discNumber;
|
||||||
if (discNum) {
|
if (discNum) {
|
||||||
ffmpegMetadataArgs.push('-metadata', `disc=${discNum}`);
|
ffmpegMetadataArgs.push('-metadata', `disc=${discNum}`);
|
||||||
|
|
@ -1473,7 +1480,16 @@ export class LosslessAPI {
|
||||||
try {
|
try {
|
||||||
const args = [...ffmpegMetadataArgs, ...format.ffmpegArgs];
|
const args = [...ffmpegMetadataArgs, ...format.ffmpegArgs];
|
||||||
if (coverBlobToEmbed) {
|
if (coverBlobToEmbed) {
|
||||||
args.push('-map', '0:a', '-map', '1:v', '-c:v', 'copy', '-disposition:v:0', 'attached_pic');
|
args.push(
|
||||||
|
'-map',
|
||||||
|
'0:a',
|
||||||
|
'-map',
|
||||||
|
'1:v',
|
||||||
|
'-c:v',
|
||||||
|
'copy',
|
||||||
|
'-disposition:v:0',
|
||||||
|
'attached_pic'
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
blob = await ffmpeg(
|
blob = await ffmpeg(
|
||||||
|
|
@ -1501,12 +1517,21 @@ export class LosslessAPI {
|
||||||
try {
|
try {
|
||||||
const containerType = losslessContainerSettings.getContainer();
|
const containerType = losslessContainerSettings.getContainer();
|
||||||
const containerFmt = getContainerFormat(containerType);
|
const containerFmt = getContainerFormat(containerType);
|
||||||
|
|
||||||
if (containerFmt && containerType !== 'nochange') {
|
if (containerFmt && containerType !== 'nochange') {
|
||||||
if (await containerFmt.needsTranscode(blob)) {
|
if (await containerFmt.needsTranscode(blob)) {
|
||||||
const args = [...ffmpegMetadataArgs, ...containerFmt.ffmpegArgs];
|
const args = [...ffmpegMetadataArgs, ...containerFmt.ffmpegArgs];
|
||||||
if (coverBlobToEmbed) {
|
if (coverBlobToEmbed) {
|
||||||
args.push('-map', '0:a', '-map', '1:v', '-c:v', 'copy', '-disposition:v:0', 'attached_pic');
|
args.push(
|
||||||
|
'-map',
|
||||||
|
'0:a',
|
||||||
|
'-map',
|
||||||
|
'1:v',
|
||||||
|
'-c:v',
|
||||||
|
'copy',
|
||||||
|
'-disposition:v:0',
|
||||||
|
'attached_pic'
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
blob = await ffmpeg(
|
blob = await ffmpeg(
|
||||||
|
|
@ -1526,10 +1551,17 @@ export class LosslessAPI {
|
||||||
if (actualExtension === 'm4a' || actualExtension === 'mp4') {
|
if (actualExtension === 'm4a' || actualExtension === 'mp4') {
|
||||||
try {
|
try {
|
||||||
const ffmpegArgs = [...ffmpegMetadataArgs];
|
const ffmpegArgs = [...ffmpegMetadataArgs];
|
||||||
|
|
||||||
ffmpegArgs.push('-map', '0:a');
|
ffmpegArgs.push('-map', '0:a');
|
||||||
if (coverBlobToEmbed) {
|
if (coverBlobToEmbed) {
|
||||||
ffmpegArgs.push('-map', '1:v', '-c:v', 'copy', '-disposition:v:0', 'attached_pic');
|
ffmpegArgs.push(
|
||||||
|
'-map',
|
||||||
|
'1:v',
|
||||||
|
'-c:v',
|
||||||
|
'copy',
|
||||||
|
'-disposition:v:0',
|
||||||
|
'attached_pic'
|
||||||
|
);
|
||||||
}
|
}
|
||||||
ffmpegArgs.push('-c:a', 'copy', '-movflags', '+faststart', '-strict', '-2');
|
ffmpegArgs.push('-c:a', 'copy', '-movflags', '+faststart', '-strict', '-2');
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -423,32 +423,36 @@ async function downloadTrackBlob(
|
||||||
const coverBlobToEmbed = await prefetchPromises.coverFetch;
|
const coverBlobToEmbed = await prefetchPromises.coverFetch;
|
||||||
const extraFiles = [];
|
const extraFiles = [];
|
||||||
const ffmpegMetadataArgs = [];
|
const ffmpegMetadataArgs = [];
|
||||||
|
|
||||||
if (coverBlobToEmbed) {
|
if (coverBlobToEmbed) {
|
||||||
const coverBuffer = await coverBlobToEmbed.arrayBuffer();
|
const coverBuffer = await coverBlobToEmbed.arrayBuffer();
|
||||||
const coverExt = getMimeType(new Uint8Array(coverBuffer)) === 'image/png' ? 'png' : 'jpg';
|
const coverExt = getMimeType(new Uint8Array(coverBuffer)) === 'image/png' ? 'png' : 'jpg';
|
||||||
const coverName = `cover.${coverExt}`;
|
const coverName = `cover.${coverExt}`;
|
||||||
extraFiles.push({
|
extraFiles.push({
|
||||||
name: coverName,
|
name: coverName,
|
||||||
data: coverBuffer
|
data: coverBuffer,
|
||||||
});
|
});
|
||||||
ffmpegMetadataArgs.push('-i', coverName);
|
ffmpegMetadataArgs.push('-i', coverName);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (enrichedTrack) {
|
if (enrichedTrack) {
|
||||||
ffmpegMetadataArgs.push(
|
ffmpegMetadataArgs.push(
|
||||||
'-metadata', `title=${getTrackTitle(enrichedTrack)}`,
|
'-metadata',
|
||||||
'-metadata', `artist=${getFullArtistString(enrichedTrack)}`,
|
`title=${getTrackTitle(enrichedTrack)}`,
|
||||||
'-metadata', `album=${enrichedTrack.album?.title || ''}`,
|
'-metadata',
|
||||||
'-metadata', `album_artist=${enrichedTrack.album?.artist?.name || enrichedTrack.artist?.name || ''}`
|
`artist=${getFullArtistString(enrichedTrack)}`,
|
||||||
|
'-metadata',
|
||||||
|
`album=${enrichedTrack.album?.title || ''}`,
|
||||||
|
'-metadata',
|
||||||
|
`album_artist=${enrichedTrack.album?.artist?.name || enrichedTrack.artist?.name || ''}`
|
||||||
);
|
);
|
||||||
|
|
||||||
const trackNum = enrichedTrack.trackNumber;
|
const trackNum = enrichedTrack.trackNumber;
|
||||||
if (trackNum) {
|
if (trackNum) {
|
||||||
const totalTracks = enrichedTrack.album?.numberOfTracks;
|
const totalTracks = enrichedTrack.album?.numberOfTracks;
|
||||||
ffmpegMetadataArgs.push('-metadata', `track=${trackNum}${totalTracks ? `/${totalTracks}` : ''}`);
|
ffmpegMetadataArgs.push('-metadata', `track=${trackNum}${totalTracks ? `/${totalTracks}` : ''}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
const discNum = enrichedTrack.volumeNumber || enrichedTrack.discNumber;
|
const discNum = enrichedTrack.volumeNumber || enrichedTrack.discNumber;
|
||||||
if (discNum) {
|
if (discNum) {
|
||||||
ffmpegMetadataArgs.push('-metadata', `disc=${discNum}`);
|
ffmpegMetadataArgs.push('-metadata', `disc=${discNum}`);
|
||||||
|
|
@ -485,7 +489,7 @@ async function downloadTrackBlob(
|
||||||
try {
|
try {
|
||||||
const containerType = losslessContainerSettings.getContainer();
|
const containerType = losslessContainerSettings.getContainer();
|
||||||
const containerFmt = getContainerFormat(containerType);
|
const containerFmt = getContainerFormat(containerType);
|
||||||
|
|
||||||
if (containerFmt && containerType !== 'nochange') {
|
if (containerFmt && containerType !== 'nochange') {
|
||||||
if (await containerFmt.needsTranscode(blob)) {
|
if (await containerFmt.needsTranscode(blob)) {
|
||||||
const args = [...ffmpegMetadataArgs, ...containerFmt.ffmpegArgs];
|
const args = [...ffmpegMetadataArgs, ...containerFmt.ffmpegArgs];
|
||||||
|
|
@ -510,7 +514,7 @@ async function downloadTrackBlob(
|
||||||
if (actualExtension === 'm4a' || actualExtension === 'mp4') {
|
if (actualExtension === 'm4a' || actualExtension === 'mp4') {
|
||||||
try {
|
try {
|
||||||
const ffmpegArgs = [...ffmpegMetadataArgs];
|
const ffmpegArgs = [...ffmpegMetadataArgs];
|
||||||
|
|
||||||
ffmpegArgs.push('-map', '0:a');
|
ffmpegArgs.push('-map', '0:a');
|
||||||
if (coverBlobToEmbed) {
|
if (coverBlobToEmbed) {
|
||||||
ffmpegArgs.push('-map', '1:v', '-c:v', 'copy', '-disposition:v:0', 'attached_pic');
|
ffmpegArgs.push('-map', '1:v', '-c:v', 'copy', '-disposition:v:0', 'attached_pic');
|
||||||
|
|
|
||||||
|
|
@ -139,11 +139,17 @@ self.onmessage = async (e) => {
|
||||||
|
|
||||||
self.postMessage({ type: 'complete', blob: outputBlob });
|
self.postMessage({ type: 'complete', blob: outputBlob });
|
||||||
} finally {
|
} finally {
|
||||||
try { if (audioData) await ffmpeg.deleteFile('input'); } catch {}
|
try {
|
||||||
|
if (audioData) await ffmpeg.deleteFile('input');
|
||||||
|
} catch {}
|
||||||
for (const file of extraFiles) {
|
for (const file of extraFiles) {
|
||||||
try { await ffmpeg.deleteFile(file.name); } catch {}
|
try {
|
||||||
|
await ffmpeg.deleteFile(file.name);
|
||||||
|
} catch {}
|
||||||
}
|
}
|
||||||
try { await ffmpeg.deleteFile(output.name); } catch {}
|
try {
|
||||||
|
await ffmpeg.deleteFile(output.name);
|
||||||
|
} catch {}
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
self.postMessage({ type: 'error', message: error.message });
|
self.postMessage({ type: 'error', message: error.message });
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue