Skip to content

Commit 4a4639d

Browse files
committed
feat: callback 메시지 개선
1 parent 70d7cc7 commit 4a4639d

1 file changed

Lines changed: 12 additions & 10 deletions

File tree

WebtoonScraper/scrapers/_scraper.py

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -721,19 +721,22 @@ async def _download_episodes(self, download_range: RangeType, webtoon_directory:
721721
if self.use_progress_bar:
722722
self.progress.advance(task)
723723

724+
episode_title = self.episode_titles[episode_no]
725+
context: dict = dict(episode_no=episode_no, episode_no1=episode_no + 1, short_ep_title=episode_title and _shorten(episode_title), total_ep=len(self.episode_ids))
726+
724727
if episode_no in self.skip_download:
725728
reason = "skipped_by_skip_download"
726729
description = "because the episode is included in skip_download"
727-
await self._episode_skipped(reason, description, level="debug", episode_no=episode_no, short_ep_title=_shorten(self.episode_titles[episode_no] or "unknown episode"))
730+
await self._episode_skipped(reason, description, level="debug", **context)
728731
continue
729732
# download_range는 1-based indexing이니 조정이 필요함
730733
if download_range is not None and episode_no + 1 not in download_range:
731734
reason = "skipped_by_range"
732735
description = "because of the set range"
733-
await self._episode_skipped(reason, description, level="debug", episode_no=episode_no, short_ep_title=_shorten(self.episode_titles[episode_no] or "unknown episode"))
736+
await self._episode_skipped(reason, description, level="debug", **context)
734737
continue
735738

736-
await self._download_episode(episode_no, webtoon_directory)
739+
await self._download_episode(episode_no, webtoon_directory, context)
737740
finally:
738741
if self.use_progress_bar:
739742
self.progress.remove_task(task)
@@ -746,10 +749,10 @@ async def _episode_skipped(self, reason: DownloadStatus, description: str, *, no
746749
"""에피소드 다운로드를 건너뛸 때 사용하는 콜백입니다."""
747750
if (ep_title := self.episode_titles[episode_no]) is None:
748751
short_ep_title = f"#{episode_no + 1}"
749-
msg_format = "The episode #{episode_no1} is skipped {description}"
752+
msg_format = "[{total_ep}/{episode_no1}] The episode is skipped {description}"
750753
else:
751754
short_ep_title = _shorten(ep_title)
752-
msg_format = "The episode #{episode_no1} '{short_ep_title}' is skipped {description}"
755+
msg_format = "[{total_ep}/{episode_no1}] The episode '{short_ep_title}' is skipped {description}"
753756

754757
# 원래대로면 context를 더럽히면 안 되지만 어차피 skip이 끝나면 context는 더 이상 사용되지 않으니 괜찮음
755758
# 이 방식이 아리나 직접 async_callback에 넣으면 "got multiple values for keyword argument 'short_ep_title'"
@@ -784,9 +787,8 @@ async def _episode_skipped(self, reason: DownloadStatus, description: str, *, no
784787
**context,
785788
)
786789

787-
async def _download_episode(self, episode_no: int, webtoon_directory: Path) -> None:
790+
async def _download_episode(self, episode_no: int, webtoon_directory: Path, context: dict) -> None:
788791
episode_title = self.episode_titles[episode_no]
789-
context: dict = dict(episode_no=episode_no, episode_no1=episode_no + 1, short_ep_title=episode_title and _shorten(episode_title), total_ep=len(self.episode_ids))
790792
if episode_title is None:
791793
return await self._episode_skipped("not_downloadable", "because the episode has empty title", level="debug", no_progress=True, **context)
792794
now = datetime.now()
@@ -825,14 +827,14 @@ async def _download_episode(self, episode_no: int, webtoon_directory: Path) -> N
825827
if self.existing_episode_policy == "raise":
826828
raise FileExistsError(f"Directory at {episode_directory} already exists. Please delete the directory.")
827829
elif self.existing_episode_policy == "skip":
828-
return await self._episode_skipped("skipped_by_snapshot", "because of existing directory", by_file=False, **context)
830+
return await self._episode_skipped("skipped_by_snapshot", "because it's downloaded already in snapshot", by_file=False, **context)
829831
else:
830832
not_empty_dir = True
831833
elif episode_directory.is_dir() and os.listdir(episode_directory):
832834
if self.existing_episode_policy == "raise":
833835
raise FileExistsError(f"Directory at {episode_directory} already exists. Please delete the directory.")
834836
elif self.existing_episode_policy == "skip":
835-
return await self._episode_skipped("already_exist", "because of existing directory", by_file=True, **context)
837+
return await self._episode_skipped("already_exist", "because it's downloaded already", by_file=True, **context)
836838
else:
837839
not_empty_dir = True
838840
else:
@@ -861,7 +863,7 @@ async def _download_episode(self, episode_no: int, webtoon_directory: Path) -> N
861863
await self.async_callback(
862864
"download_failed",
863865
callback or _crate_callback(
864-
"The episode #{episode_no} '{short_ep_title}' is failed {description}",
866+
"[{total_ep}/{episode_no1}] The episode '{short_ep_title}' is failed {description}",
865867
progress_update="{short_ep_title} skipped",
866868
level="warning",
867869
log_with_progress=True,

0 commit comments

Comments
 (0)