Skip to content

Commit b9f486b

Browse files
committed
feat: better threads instead of thunk
1 parent c24bd16 commit b9f486b

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

index.js

+15-5
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { program, InvalidArgumentError } from 'commander';
33
import { download2mp3 } from './src/download2mp3.js';
44
import { getDataByUrl } from './src/getDataByUrl.js';
55
import { createRequire } from 'module';
6-
import { chunk } from 'lodash-es';
6+
import { sleep } from './src/utils.js';
77

88
const require = createRequire(import.meta.url);
99
const pkg = require('./package.json');
@@ -57,7 +57,7 @@ const argv = program.opts();
5757

5858
for (let url of urls) {
5959
url = url.trim();
60-
console.log(`fetching pages for ${url}`);
60+
console.log(`Fetching pages for:`, url);
6161
const data = await getDataByUrl(url);
6262
// console.log(data);
6363
// console.log(`total threads: ${data.videoData.pages.length}`);
@@ -85,9 +85,19 @@ const argv = program.opts();
8585
(typeof argv.to === 'number' && index > argv.to)
8686
)
8787
);
88+
// console.log('Pages:', pages);
8889

89-
const pageChunks = chunk(pages, argv.threads || 5);
90-
for (const c of pageChunks) {
91-
await Promise.all(c.map(download2mp3));
90+
let maxThreads = argv.threads;
91+
let currentThreads = 0;
92+
93+
for (const page of pages) {
94+
while (currentThreads === maxThreads) {
95+
// wait for available thread
96+
await sleep(100);
97+
}
98+
currentThreads += 1;
99+
download2mp3(page).finally(() => {
100+
currentThreads -= 1;
101+
});
92102
}
93103
})();

0 commit comments

Comments
 (0)