Skip to content

Commit 83abbdb

Browse files
committed
add caching to getCoverBuffer
when downloading an album, will no longer re-download an encode identical cover images
1 parent c578196 commit 83abbdb

File tree

1 file changed

+22
-3
lines changed

1 file changed

+22
-3
lines changed

plugins/downloader/back.js

+22-3
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,13 @@ const ffmpeg = require("@ffmpeg/ffmpeg").createFFmpeg({
2323
});
2424
const ffmpegMutex = new Mutex();
2525

26+
const cache = {
27+
getCoverBuffer: {
28+
buffer: null,
29+
url: null,
30+
}
31+
}
32+
2633
const config = require("./config");
2734

2835
/** @type {Innertube} */
@@ -189,13 +196,25 @@ async function iterableStreamToMP3(stream, metadata, content_length, sendFeedbac
189196
}
190197
}
191198

199+
async function getCoverBuffer(url) {
200+
const store = cache.getCoverBuffer;
201+
if (store.url === url) {
202+
return store.buffer;
203+
}
204+
store.url = url;
205+
206+
const nativeImage = cropMaxWidth(await getImage(url));
207+
store.buffer = nativeImage && !nativeImage.isEmpty() ?
208+
nativeImage.toPNG() : null;
209+
210+
return store.buffer;
211+
}
212+
192213
async function writeID3(buffer, metadata, sendFeedback) {
193214
try {
194215
sendFeedback("Writing ID3 tags...");
195216

196-
const nativeImage = cropMaxWidth(await getImage(metadata.image));
197-
const coverBuffer = nativeImage && !nativeImage.isEmpty() ?
198-
nativeImage.toPNG() : null;
217+
const coverBuffer = await getCoverBuffer(metadata.image);
199218

200219
const writer = new ID3Writer(buffer);
201220

0 commit comments

Comments
 (0)