fixed multi sub and dub downloading
This commit is contained in:
parent
bc2e2db2f9
commit
33899b4d42
@ -163,7 +163,7 @@ async function checkPlaylists() {
|
|||||||
|
|
||||||
for (const e of episodes) {
|
for (const e of episodes) {
|
||||||
await updatePlaylistByID(e.dataValues.id, 'preparing')
|
await updatePlaylistByID(e.dataValues.id, 'preparing')
|
||||||
await downloadPlaylist(e.dataValues.media.id, e.dataValues.dub, e.dataValues.sub, e.dataValues.hardsub, e.dataValues.id)
|
await downloadPlaylist(e.dataValues.media.id, (e as any).dataValues.dub.map((s: { locale: any })=> s.locale), (e as any).dataValues.sub.map((s: { locale: any })=> s.locale), e.dataValues.hardsub, e.dataValues.id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -265,6 +265,9 @@ export async function crunchyGetPlaylistMPD(q: string) {
|
|||||||
export async function downloadPlaylist(e: string, dubs: Array<string>, subs: Array<string>, hardsub: boolean, downloadID: number) {
|
export async function downloadPlaylist(e: string, dubs: Array<string>, subs: Array<string>, hardsub: boolean, downloadID: number) {
|
||||||
var playlist = await crunchyGetPlaylist(e)
|
var playlist = await crunchyGetPlaylist(e)
|
||||||
|
|
||||||
|
console.log(dubs)
|
||||||
|
console.log(subs)
|
||||||
|
|
||||||
if (!playlist) return
|
if (!playlist) return
|
||||||
|
|
||||||
if (playlist.audioLocale !== subs[0]) {
|
if (playlist.audioLocale !== subs[0]) {
|
||||||
@ -483,12 +486,22 @@ async function downloadParts(parts: { filename: string; url: string }[], downloa
|
|||||||
const path = await createFolder()
|
const path = await createFolder()
|
||||||
|
|
||||||
for (const [index, part] of parts.entries()) {
|
for (const [index, part] of parts.entries()) {
|
||||||
const stream = fs.createWriteStream(`${path}/${part.filename}`)
|
let success = false;
|
||||||
const { body } = await fetch(part.url)
|
while (!success) {
|
||||||
await finished(Readable.fromWeb(body as any).pipe(stream))
|
try {
|
||||||
console.log(`Fragment ${index + 1} downloaded`)
|
const stream = fs.createWriteStream(`${path}/${part.filename}`)
|
||||||
partsdownloaded++
|
const { body } = await fetch(part.url)
|
||||||
updatePlaylistToDownloadedPartsByID(downloadID, partsdownloaded)
|
await finished(Readable.fromWeb(body as any).pipe(stream))
|
||||||
|
console.log(`Fragment ${index + 1} downloaded`)
|
||||||
|
partsdownloaded++
|
||||||
|
updatePlaylistToDownloadedPartsByID(downloadID, partsdownloaded)
|
||||||
|
success = true;
|
||||||
|
} catch (error) {
|
||||||
|
console.error(`Error occurred during download of fragment ${index + 1}:`, error);
|
||||||
|
console.log(`Retrying download of fragment ${index + 1}...`);
|
||||||
|
await new Promise(resolve => setTimeout(resolve, 5000));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return await mergeParts(parts, path)
|
return await mergeParts(parts, path)
|
||||||
|
Reference in New Issue
Block a user