add tests

This commit is contained in:
Jigsaw 2024-10-14 13:21:04 +00:00 committed by Henri Dickson
parent 7cf8c085d1
commit fe2b2d88b6
6 changed files with 1976 additions and 2 deletions

View file

@ -235,6 +235,7 @@ class Edition(Item):
IdType.DoubanBook,
IdType.Goodreads,
IdType.GoogleBooks,
IdType.Qidian,
]
return [(i.value, i.label) for i in id_types]

View file

@ -363,6 +363,52 @@ class DoubanBookTestCase(TestCase):
self.assertEqual(editions[1].display_title, "黄金时代")
class QidianTestCase(TestCase):
databases = "__all__"
def test_parse(self):
t_type = IdType.Qidian
t_id = "1010868264"
t_url = "https://www.qidian.com/book/1010868264/"
t_url2 = "https://book.qidian.com/info/1010868264/"
p1 = SiteManager.get_site_by_url(t_url)
p2 = SiteManager.get_site_by_url(t_url2)
self.assertEqual(p1.url, t_url2)
self.assertEqual(p1.ID_TYPE, t_type)
self.assertEqual(p1.id_value, t_id)
self.assertEqual(p2.url, t_url2)
@use_local_response
def test_scrape(self):
t_url = "https://book.qidian.com/info/1010868264/"
site = SiteManager.get_site_by_url(t_url)
self.assertEqual(site.ready, False)
site.get_resource_ready()
self.assertEqual(site.ready, True)
self.assertEqual(site.resource.site_name, SiteName.Qidian)
self.assertEqual(site.resource.id_type, IdType.Qidian)
self.assertEqual(site.resource.id_value, "1010868264")
self.assertEqual(site.resource.item.display_title, "诡秘之主")
self.assertEqual(site.resource.item.author[0], "爱潜水的乌贼")
class YpshuoTestCase(TestCase):
databases = "__all__"
@use_local_response
def test_scrape(self):
t_url = "https://www.ypshuo.com/novel/1.html"
site = SiteManager.get_site_by_url(t_url)
self.assertEqual(site.ready, False)
site.get_resource_ready()
self.assertEqual(site.ready, True)
self.assertEqual(site.resource.site_name, SiteName.Ypshuo)
self.assertEqual(site.resource.id_type, IdType.Ypshuo)
self.assertEqual(site.resource.id_value, "1")
self.assertEqual(site.resource.item.display_title, "诡秘之主")
self.assertEqual(site.resource.item.author[0], "爱潜水的乌贼")
class MultiBookSitesTestCase(TestCase):
databases = "__all__"

View file

@ -17,7 +17,7 @@ class Qidian(AbstractSite):
@classmethod
def id_to_url(cls, id_value):
return f"https://book.qidian.com/info/{id_value}"
return f"https://book.qidian.com/info/{id_value}/"
def scrape(self):
content = ProxiedDownloader(self.url).download().html()

View file

@ -1,4 +1,4 @@
import logging
import json
from catalog.common import *
from catalog.models import *
@ -21,6 +21,11 @@ class Ypshuo(AbstractSite):
def scrape(self):
api_url = f"https://www.ypshuo.com/api/novel/getInfo?novelId={self.id_value}"
o = BasicDownloader(api_url).download().json()
source = json.loads(o["data"]["source"])
lookup_ids = {}
for site in source:
if site["siteName"] == "起点中文网":
lookup_ids[IdType.Qidian] = site["bookId"]
return ResourceContent(
metadata={
"localized_title": [{"lang": "zh-cn", "text": o["data"]["novel_name"]}],
@ -30,4 +35,5 @@ class Ypshuo(AbstractSite):
],
"cover_image_url": o["data"]["novel_img"],
},
lookup_ids=lookup_ids,
)

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
{"code":"00","data":{"id":1,"novel_name":"诡秘之主","category_id":1,"novel_img":"https://qidian.qpic.cn/qdbimg/349573/1010868264/300","author_name":"爱潜水的乌贼","synopsis":"蒸汽与机械的浪潮中,谁能触及非凡?历史和黑暗的迷雾里,又是谁在耳语?我从诡秘中醒来,睁眼看见这个世界:枪械,大炮,巨舰,飞空艇,差分机;魔药,占卜,诅咒,倒吊人,封印物……光明依旧照耀,神秘从未远离,这是一段“愚者”的传说。","word_number":4465200,"update_status":1,"update_explain":null,"status":2,"source":"[{\"bookId\":\"1010868264\",\"siteName\":\"起点中文网\",\"bookPage\":\"http://book.qidian.com/info/1010868264\"},{\"bookId\":\"20868264\",\"siteName\":\"创世中文网\",\"bookPage\":\"http://chuangshi.qq.com/bk/ly/20868264.html\"}]","power":"0","point":328,"score":8.7,"scorer":120,"score_1":8,"scorer_1":2,"score_2":10,"scorer_2":1,"score_3":8.7,"scorer_3":117,"create_time":1605427200,"update_time":1605427200,"novel_tags":[{"tag_name":"异世大陆"}],"novel_category":{"cate_name":"玄幻"}}}