diff --git a/src/scrapers/mangaplus/mangaplus.py b/src/scrapers/mangaplus/mangaplus.py index c108063..5f3268a 100644 --- a/src/scrapers/mangaplus/mangaplus.py +++ b/src/scrapers/mangaplus/mangaplus.py @@ -400,16 +400,13 @@ def add_chapters(self, series: TitleDetailViewWrapper, service_id: int, manga_id disabled = True completed = True + ReleaseSchedule = mangaplus_pb2.TitleLabels.ReleaseSchedule if series.release_schedule: - ReleaseSchedule = mangaplus_pb2.TitleLabels.ReleaseSchedule - if series.release_schedule in (ReleaseSchedule.COMPLETED, ReleaseSchedule.DISABLED, ReleaseSchedule.OTHER): + if series.release_schedule in (ReleaseSchedule.COMPLETED, ReleaseSchedule.DISABLED): next_update = None disabled = True completed = False - if series.release_schedule == ReleaseSchedule.OTHER: - logger.warning(f'Release schedule is OTHER for {self.NAME} title {series.title.name} / {series.title.title_id}. Disabling it.') - newest_chapter = None for c in chapters: if not newest_chapter: @@ -419,6 +416,16 @@ def add_chapters(self, series: TitleDetailViewWrapper, service_id: int, manga_id if c.chapter_number > newest_chapter.chapter_number: newest_chapter = c + if (not next_update and + newest_chapter and + series.release_schedule == ReleaseSchedule.OTHER and + utcnow() - newest_chapter.release_date > timedelta(days=60) + ): + next_update = None + disabled = True + + logger.info(f'No new chapters for {self.NAME} title {series.title.name} / {series.title.title_id} in 60 days. Disabling it.') + with self.conn.transaction(): with self.conn.cursor() as cursor: inserted = self.dbutil.add_chapters(new_chapters, fetch=True) diff --git a/src/tests/scrapers/mangaplus/test_mangaplus.py b/src/tests/scrapers/mangaplus/test_mangaplus.py index 19c6c72..cdbb860 100644 --- a/src/tests/scrapers/mangaplus/test_mangaplus.py +++ b/src/tests/scrapers/mangaplus/test_mangaplus.py @@ -215,7 +215,8 @@ def test_scrapes_correctly_for_other_schedule_chapters(self): ) self.assertDbChaptersEqual(inserted[0], correct) - self.assertMangaServiceDisabled(ms.service_id, ms.title_id) + # TODO this test will fail in time due to timedelta checks. When that happens change to assertMangaServiceDisabled + self.assertMangaServiceEnabled(ms.service_id, ms.title_id) @responses.activate def test_scrapes_correctly_for_oneshot(self):