feat(booklet): Download booklet if available #2
This commit is contained in:
parent
4f2d61ffe6
commit
0e01c21995
1 changed files with 32 additions and 42 deletions
|
@ -25,27 +25,30 @@ export async function lucida(album: URL, baseTimeout: number, context: BrowserCo
|
||||||
console.log(`Downloading ${albumName} (${trackCount} tracks) from ${album.href}...`);
|
console.log(`Downloading ${albumName} (${trackCount} tracks) from ${album.href}...`);
|
||||||
console.log(`Setting timeout to ${baseTimeout * trackCount} ms...`);
|
console.log(`Setting timeout to ${baseTimeout * trackCount} ms...`);
|
||||||
|
|
||||||
// Start download
|
|
||||||
await page.getByText('download full album').click();
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Save the download to the Downloads folder
|
|
||||||
const download: Download = await page.waitForEvent('download', { timeout: baseTimeout * trackCount });
|
const download: Download = await page.waitForEvent('download', { timeout: baseTimeout * trackCount });
|
||||||
|
// Start download
|
||||||
|
await page.getByText('download full album').click();
|
||||||
|
// Save the download to the Downloads folder
|
||||||
// TODO Set path (configurable)
|
// TODO Set path (configurable)
|
||||||
await download.saveAs('/home/tdpeuter/Downloads/lucida/' + download.suggestedFilename());
|
await download.saveAs('/home/tdpeuter/Downloads/lucida/' + download.suggestedFilename());
|
||||||
|
|
||||||
|
// Check if the album has a booklet
|
||||||
|
const bookPath: File | null = await booklet(album, context);
|
||||||
|
if (bookPath !== null) {
|
||||||
|
console.log(`Downloaded booklet ${bookPath.name}`);
|
||||||
|
// TODO Add booklet to ZIP
|
||||||
|
}
|
||||||
|
|
||||||
|
await page.close();
|
||||||
|
return true;
|
||||||
} catch {
|
} catch {
|
||||||
await page.close();
|
await page.close();
|
||||||
return 'Download timed out';
|
return 'Download timed out';
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO Check if booklet is available.
|
|
||||||
|
|
||||||
await page.close();
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async function booklet(album: URL, context: BrowserContext): Promise<void> {
|
async function booklet(album: URL, context: BrowserContext): Promise<File | null> {
|
||||||
const page: Page = await context.newPage();
|
const page: Page = await context.newPage();
|
||||||
|
|
||||||
const bookletURL: URL = new URL('http://audiofil.hostronavt.ru/booklet.php?name=' + encodeURIComponent(album.href));
|
const bookletURL: URL = new URL('http://audiofil.hostronavt.ru/booklet.php?name=' + encodeURIComponent(album.href));
|
||||||
|
@ -58,38 +61,25 @@ async function booklet(album: URL, context: BrowserContext): Promise<void> {
|
||||||
console.log(await link.innerHTML());
|
console.log(await link.innerHTML());
|
||||||
} else {
|
} else {
|
||||||
console.log('No goodies link found');
|
console.log('No goodies link found');
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO Download the booklet.
|
try {
|
||||||
|
// Go to the goodies link
|
||||||
|
await link.dispatchEvent('click');
|
||||||
|
|
||||||
await page.close();
|
// Download the booklet
|
||||||
|
const download: Download = await page.waitForEvent('download');
|
||||||
|
const filename: string = download.suggestedFilename();
|
||||||
|
await download.saveAs('/home/tdpeuter/Downloads/lucida/' + filename);
|
||||||
|
|
||||||
|
console.log(`Downloaded booklet ${filename}`);
|
||||||
|
|
||||||
|
await page.close();
|
||||||
|
return new File([await download.path()], filename);
|
||||||
|
} catch (e) {
|
||||||
|
console.log('Could not download booklet:', e);
|
||||||
|
await page.close();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
(async () => {
|
|
||||||
const timeout: number = 240000;
|
|
||||||
const albums: string[] = [
|
|
||||||
'https://www.qobuz.com/us-en/album/you-me-disclosure-eliza-doolittle/q5q4tg0cupgwa',
|
|
||||||
'https://www.qobuz.com/us-en/album/shes-gone-dance-on-disclosure/xrylx7j5794ab',
|
|
||||||
'https://www.qobuz.com/us-en/album/tondo-disclosure-eko-roosevelt/tlb5v175fbyxb'
|
|
||||||
];
|
|
||||||
const withBooklet: string[] = [
|
|
||||||
'https://www.qobuz.com/us-en/album/moon-safari-air/0724384497859'
|
|
||||||
];
|
|
||||||
|
|
||||||
// Launch a new Firefox browser instance
|
|
||||||
// TODO Allow to pass headless option as argument
|
|
||||||
const browser: Browser = await firefox.launch({ headless: false }); // Set headless: true to run without UI
|
|
||||||
const context: BrowserContext = await browser.newContext({
|
|
||||||
acceptDownloads: true, // Enable download handling
|
|
||||||
baseURL: 'https://lucida.to'
|
|
||||||
});
|
|
||||||
|
|
||||||
// for (const album of testAlbums) {
|
|
||||||
// await lucida(new URL(album), timeout, context);
|
|
||||||
// }
|
|
||||||
|
|
||||||
await booklet(new URL(withBooklet[0]), context);
|
|
||||||
|
|
||||||
// Close the browser
|
|
||||||
await browser.close();
|
|
||||||
})();
|
|
||||||
|
|
Reference in a new issue