Merge branch 'main' of github.com:monochrome-music/monochrome

This commit is contained in:
Samidy 2026-03-10 10:44:55 +03:00
commit 92f8d4ef61
2 changed files with 53 additions and 25 deletions

View file

@ -278,7 +278,15 @@ function removeBulkDownloadTask(notifEl) {
}, 300); }, 300);
} }
async function downloadTrackBlob(track, quality, api, lyricsManager = null, signal = null, onProgress = null, coverBlob = null) { async function downloadTrackBlob(
track,
quality,
api,
lyricsManager = null,
signal = null,
onProgress = null,
coverBlob = null
) {
let enrichedTrack = { let enrichedTrack = {
...track, ...track,
artist: track.artist || (track.artists && track.artists.length > 0 ? track.artists[0] : null), artist: track.artist || (track.artists && track.artists.length > 0 ? track.artists[0] : null),
@ -566,9 +574,17 @@ async function bulkDownloadToZipStream(
updateBulkDownloadProgress(notification, i, tracks.length, trackTitle); updateBulkDownloadProgress(notification, i, tracks.length, trackTitle);
try { try {
const { blob, extension } = await downloadTrackBlob(track, quality, api, null, signal, (p) => { const { blob, extension } = await downloadTrackBlob(
updateBulkDownloadProgress(notification, i, tracks.length, trackTitle, p); track,
}, coverBlob); quality,
api,
null,
signal,
(p) => {
updateBulkDownloadProgress(notification, i, tracks.length, trackTitle, p);
},
coverBlob
);
const filename = buildTrackFilename(track, quality, extension); const filename = buildTrackFilename(track, quality, extension);
const discNumber = discLayout.resolveDiscNumber(i); const discNumber = discLayout.resolveDiscNumber(i);
yield { yield {
@ -710,9 +726,17 @@ async function bulkDownloadToZipBlob(
updateBulkDownloadProgress(notification, i, tracks.length, trackTitle); updateBulkDownloadProgress(notification, i, tracks.length, trackTitle);
try { try {
const { blob, extension } = await downloadTrackBlob(track, quality, api, null, signal, (p) => { const { blob, extension } = await downloadTrackBlob(
updateBulkDownloadProgress(notification, i, tracks.length, trackTitle, p); track,
}, coverBlob); quality,
api,
null,
signal,
(p) => {
updateBulkDownloadProgress(notification, i, tracks.length, trackTitle, p);
},
coverBlob
);
const filename = buildTrackFilename(track, quality, extension); const filename = buildTrackFilename(track, quality, extension);
const discNumber = discLayout.resolveDiscNumber(i); const discNumber = discLayout.resolveDiscNumber(i);
yield { yield {
@ -855,9 +879,17 @@ async function bulkDownloadToZipNeutralino(
updateBulkDownloadProgress(notification, i, tracks.length, trackTitle); updateBulkDownloadProgress(notification, i, tracks.length, trackTitle);
try { try {
const { blob, extension } = await downloadTrackBlob(track, quality, api, null, signal, (p) => { const { blob, extension } = await downloadTrackBlob(
updateBulkDownloadProgress(notification, i, tracks.length, trackTitle, p); track,
}, coverBlob); quality,
api,
null,
signal,
(p) => {
updateBulkDownloadProgress(notification, i, tracks.length, trackTitle, p);
},
coverBlob
);
const filename = buildTrackFilename(track, quality, extension); const filename = buildTrackFilename(track, quality, extension);
const discNumber = discLayout.resolveDiscNumber(i); const discNumber = discLayout.resolveDiscNumber(i);
yield { yield {
@ -1185,7 +1217,15 @@ export async function downloadDiscography(artist, selectedReleases, api, quality
const track = tracks[i]; const track = tracks[i];
if (signal.aborted) break; if (signal.aborted) break;
try { try {
const { blob, extension } = await downloadTrackBlob(track, quality, api, null, signal, null, coverBlob); const { blob, extension } = await downloadTrackBlob(
track,
quality,
api,
null,
signal,
null,
coverBlob
);
const filename = buildTrackFilename(track, quality, extension); const filename = buildTrackFilename(track, quality, extension);
const discNumber = discLayout.resolveDiscNumber(i); const discNumber = discLayout.resolveDiscNumber(i);
yield { yield {

View file

@ -988,19 +988,7 @@ async function createFlacPictureBlockFromBytes(imageBytes, mimeType = 'image/jpe
const description = ''; const description = '';
const descBytes = new TextEncoder().encode(description); const descBytes = new TextEncoder().encode(description);
const totalSize = 4 + 4 + mimeBytes.length + 4 + descBytes.length + 4 + 4 + 4 + 4 + 4 + imageBytes.length;
const totalSize =
4 +
4 +
mimeBytes.length +
4 +
descBytes.length +
4 +
4 +
4 +
4 +
4 +
imageBytes.length;
const buffer = new ArrayBuffer(totalSize); const buffer = new ArrayBuffer(totalSize);
const view = new DataView(buffer); const view = new DataView(buffer);