From 01e8b89af4855e820a0a6c31944dfa6fa586cdbc Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 9 Dec 2022 03:09:06 +0000 Subject: [PATCH] catalog: bangumi (wip) --- catalog/common/models.py | 1 + catalog/game/tests.py | 18 ++++++++++++++++++ catalog/sites/__init__.py | 1 + catalog/sites/bangumi.py | 24 ++++++++++++++++++++++++ 4 files changed, 44 insertions(+) create mode 100644 catalog/sites/bangumi.py diff --git a/catalog/common/models.py b/catalog/common/models.py index 7537ee41..586e7d95 100644 --- a/catalog/common/models.py +++ b/catalog/common/models.py @@ -47,6 +47,7 @@ class IdType(models.TextChoices): TMDB_Person = 'tmdb_person', _('TMDB影人') IGDB = 'igdb', _('IGDB游戏') Steam = 'steam', _('Steam游戏') + Bangumi = 'bangumi', _('Bangumi') ApplePodcast = 'apple_podcast', _('苹果播客') diff --git a/catalog/game/tests.py b/catalog/game/tests.py index 9824cab2..cf7437d6 100644 --- a/catalog/game/tests.py +++ b/catalog/game/tests.py @@ -89,6 +89,24 @@ class DoubanGameTestCase(TestCase): self.assertEqual(site.resource.item.douban_game, '10734307') +class BangumiGameTestCase(TestCase): + def test_parse(self): + t_id_type = IdType.Bangumi + t_id_value = '15912' + t_url = 'https://bgm.tv/subject/15912' + site = SiteList.get_site_by_id_type(t_id_type) + self.assertIsNotNone(site) + self.assertEqual(site.validate_url(t_url), True) + site = SiteList.get_site_by_url(t_url) + self.assertEqual(site.url, t_url) + self.assertEqual(site.id_value, t_id_value) + + @use_local_response + def test_scrape(self): + # TODO + pass + + class MultiGameSitesTestCase(TestCase): @use_local_response def test_games(self): diff --git a/catalog/sites/__init__.py b/catalog/sites/__init__.py index 6f6dc2f7..5f103943 100644 --- a/catalog/sites/__init__.py +++ b/catalog/sites/__init__.py @@ -12,3 +12,4 @@ from .imdb import IMDB from .spotify import Spotify from .igdb import IGDB from .steam import Steam +from .bangumi import Bangumi diff --git a/catalog/sites/bangumi.py b/catalog/sites/bangumi.py new file mode 100644 index 00000000..21875536 --- /dev/null +++ b/catalog/sites/bangumi.py @@ -0,0 +1,24 @@ +from catalog.common import * +from catalog.models import * +import logging + + +_logger = logging.getLogger(__name__) + + +@SiteList.register +class Bangumi(AbstractSite): + ID_TYPE = IdType.Bangumi + URL_PATTERNS = [ + r"https://bgm\.tv/subject/(\d+)", + ] + WIKI_PROPERTY_ID = '' + DEFAULT_MODEL = None + + @classmethod + def id_to_url(self, id_value): + return f"https://bgm.tv/subject/{id_value}" + + def scrape(self): + # TODO rewrite with bangumi api https://bangumi.github.io/api/ + pass