Skip to content

Commit be1a589

Browse files
committed
🐛 Fix crash when downloading webtoon
1 parent 95002c2 commit be1a589

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

src/modules/webtoon/webtoon/download-manager.service.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,16 @@ export class DownloadManagerService{
9898
break;
9999
this.downloadGatewayService.onDownloadProgress(i / epList.length * 100);
100100
const epImageLinks: string[] = await this.webtoonParserService.getEpisodeLinks(this.downloadQueue.getCurrentDownload(), epList[i]);
101-
const episodeData: EpisodeDataModel = await this.webtoonDownloaderService.downloadEpisode(epList[i], epImageLinks);
101+
let downloaded = false;
102+
let episodeData: EpisodeDataModel;
103+
while(!downloaded){
104+
try{
105+
episodeData = await this.webtoonDownloaderService.downloadEpisode(epList[i], epImageLinks);
106+
downloaded = true;
107+
}catch(_: any){
108+
this.logger.warn(`Error downloading episode ${epList[i].number} of ${this.downloadQueue.getCurrentDownload().title}. Retrying...`);
109+
}
110+
}
102111
await this.webtoonDatabaseService.saveEpisode(currentDownload, epList[i], episodeData, i + 1);
103112
}
104113
}

src/modules/webtoon/webtoon/webtoon-downloader.service.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,17 @@ export class WebtoonDownloaderService{
3131

3232
for(let i = 0; i < imageUrls.length; i++){
3333
const url = imageUrls[i];
34-
const image = await this.miscService.downloadImage(url, episode.link);
34+
let image: Buffer;
35+
let error = false;
36+
while(!error){
37+
try{
38+
image = await this.miscService.downloadImage(url, episode.link);
39+
error = true;
40+
}catch(_: any){
41+
this.logger.warn(`Error downloading image ${i + 1} for episode ${episode.number}, retrying...`);
42+
await new Promise(resolve => setTimeout(resolve, this.miscService.randomInt(500, 1500)));
43+
}
44+
}
3545
conversionPromises.push(this.miscService.convertImageToWebp(image));
3646
downloadedCount++;
3747
await new Promise(resolve => setTimeout(resolve, this.miscService.randomInt(50, 200)));

0 commit comments

Comments
 (0)