style: auto-fix linting issues
This commit is contained in:
parent
0eb83f3a8d
commit
46240b85e2
2 changed files with 57 additions and 18 deletions
|
|
@ -1216,7 +1216,9 @@
|
|||
<div class="setting-item">
|
||||
<div class="info">
|
||||
<span class="label">Zipped Bulk Downloads</span>
|
||||
<span class="description">Download multiple tracks as a single ZIP file (requires browser support)</span>
|
||||
<span class="description"
|
||||
>Download multiple tracks as a single ZIP file (requires browser support)</span
|
||||
>
|
||||
</div>
|
||||
<label class="toggle-switch">
|
||||
<input type="checkbox" id="zipped-bulk-downloads-toggle" checked />
|
||||
|
|
|
|||
|
|
@ -291,7 +291,16 @@ async function bulkDownloadSequentially(tracks, api, quality, lyricsManager, not
|
|||
}
|
||||
}
|
||||
|
||||
async function bulkDownloadToZipStream(tracks, folderName, api, quality, lyricsManager, notification, fileHandle, coverBlob = null) {
|
||||
async function bulkDownloadToZipStream(
|
||||
tracks,
|
||||
folderName,
|
||||
api,
|
||||
quality,
|
||||
lyricsManager,
|
||||
notification,
|
||||
fileHandle,
|
||||
coverBlob = null
|
||||
) {
|
||||
const { abortController } = bulkDownloadTasks.get(notification);
|
||||
const signal = abortController.signal;
|
||||
const { downloadZip } = await loadClientZip();
|
||||
|
|
@ -322,10 +331,16 @@ async function bulkDownloadToZipStream(tracks, folderName, api, quality, lyricsM
|
|||
const lrcContent = lyricsManager.generateLRCContent(lyricsData, track);
|
||||
if (lrcContent) {
|
||||
const lrcFilename = filename.replace(/\.[^.]+$/, '.lrc');
|
||||
yield { name: `${folderName}/${lrcFilename}`, lastModified: new Date(), input: lrcContent };
|
||||
yield {
|
||||
name: `${folderName}/${lrcFilename}`,
|
||||
lastModified: new Date(),
|
||||
input: lrcContent,
|
||||
};
|
||||
}
|
||||
}
|
||||
} catch { /* ignore */ }
|
||||
} catch {
|
||||
/* ignore */
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
if (err.name === 'AbortError') throw err;
|
||||
|
|
@ -345,17 +360,26 @@ async function bulkDownloadToZipStream(tracks, folderName, api, quality, lyricsM
|
|||
|
||||
async function startBulkDownload(tracks, defaultName, api, quality, lyricsManager, type, name, coverBlob = null) {
|
||||
const notification = createBulkDownloadNotification(type, name, tracks.length);
|
||||
|
||||
|
||||
try {
|
||||
const useZip = window.showSaveFilePicker && !bulkDownloadSettings.shouldForceIndividual();
|
||||
|
||||
|
||||
if (useZip) {
|
||||
try {
|
||||
const fileHandle = await window.showSaveFilePicker({
|
||||
suggestedName: `${defaultName}.zip`,
|
||||
types: [{ description: 'ZIP Archive', accept: { 'application/zip': ['.zip'] } }],
|
||||
});
|
||||
await bulkDownloadToZipStream(tracks, defaultName, api, quality, lyricsManager, notification, fileHandle, coverBlob);
|
||||
await bulkDownloadToZipStream(
|
||||
tracks,
|
||||
defaultName,
|
||||
api,
|
||||
quality,
|
||||
lyricsManager,
|
||||
notification,
|
||||
fileHandle,
|
||||
coverBlob
|
||||
);
|
||||
completeBulkDownload(notification, true);
|
||||
} catch (err) {
|
||||
if (err.name === 'AbortError') {
|
||||
|
|
@ -381,7 +405,8 @@ export async function downloadTracks(tracks, api, quality, lyricsManager = null)
|
|||
}
|
||||
|
||||
export async function downloadAlbumAsZip(album, tracks, api, quality, lyricsManager = null) {
|
||||
const releaseDateStr = album.releaseDate || (tracks[0]?.streamStartDate ? tracks[0].streamStartDate.split('T')[0] : '');
|
||||
const releaseDateStr =
|
||||
album.releaseDate || (tracks[0]?.streamStartDate ? tracks[0].streamStartDate.split('T')[0] : '');
|
||||
const releaseDate = releaseDateStr ? new Date(releaseDateStr) : null;
|
||||
const year = releaseDate && !isNaN(releaseDate.getTime()) ? releaseDate.getFullYear() : '';
|
||||
|
||||
|
|
@ -433,18 +458,24 @@ export async function downloadDiscography(artist, selectedReleases, api, quality
|
|||
try {
|
||||
const { album: fullAlbum, tracks } = await api.getAlbum(album.id);
|
||||
const coverBlob = await getCoverBlob(api, fullAlbum.cover || album.cover);
|
||||
const releaseDateStr = fullAlbum.releaseDate || (tracks[0]?.streamStartDate ? tracks[0].streamStartDate.split('T')[0] : '');
|
||||
const releaseDateStr =
|
||||
fullAlbum.releaseDate ||
|
||||
(tracks[0]?.streamStartDate ? tracks[0].streamStartDate.split('T')[0] : '');
|
||||
const releaseDate = releaseDateStr ? new Date(releaseDateStr) : null;
|
||||
const year = releaseDate && !isNaN(releaseDate.getTime()) ? releaseDate.getFullYear() : '';
|
||||
|
||||
const albumFolder = formatTemplate(localStorage.getItem('zip-folder-template') || '{albumTitle} - {albumArtist}', {
|
||||
albumTitle: fullAlbum.title,
|
||||
albumArtist: fullAlbum.artist?.name,
|
||||
year: year,
|
||||
});
|
||||
const albumFolder = formatTemplate(
|
||||
localStorage.getItem('zip-folder-template') || '{albumTitle} - {albumArtist}',
|
||||
{
|
||||
albumTitle: fullAlbum.title,
|
||||
albumArtist: fullAlbum.artist?.name,
|
||||
year: year,
|
||||
}
|
||||
);
|
||||
|
||||
const fullFolderPath = `${rootFolder}/${albumFolder}`;
|
||||
if (coverBlob) yield { name: `${fullFolderPath}/cover.jpg`, lastModified: new Date(), input: coverBlob };
|
||||
if (coverBlob)
|
||||
yield { name: `${fullFolderPath}/cover.jpg`, lastModified: new Date(), input: coverBlob };
|
||||
|
||||
for (const track of tracks) {
|
||||
if (signal.aborted) break;
|
||||
|
|
@ -460,10 +491,16 @@ export async function downloadDiscography(artist, selectedReleases, api, quality
|
|||
const lrcContent = lyricsManager.generateLRCContent(lyricsData, track);
|
||||
if (lrcContent) {
|
||||
const lrcFilename = filename.replace(/\.[^.]+$/, '.lrc');
|
||||
yield { name: `${fullFolderPath}/${lrcFilename}`, lastModified: new Date(), input: lrcContent };
|
||||
yield {
|
||||
name: `${fullFolderPath}/${lrcFilename}`,
|
||||
lastModified: new Date(),
|
||||
input: lrcContent,
|
||||
};
|
||||
}
|
||||
}
|
||||
} catch { /* ignore */ }
|
||||
} catch {
|
||||
/* ignore */
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
if (err.name === 'AbortError') throw err;
|
||||
|
|
@ -644,4 +681,4 @@ export async function downloadTrackWithMetadata(track, quality, api, lyricsManag
|
|||
} finally {
|
||||
ongoingDownloads.delete(downloadKey);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue