lib.itmens/catalog/sites/ypshuo.py

47 lines
1.5 KiB
Python
Raw Normal View History

2024-10-14 13:21:04 +00:00
import json
2024-09-18 10:34:31 +00:00
from catalog.common import *
from catalog.models import *
@SiteManager.register
class Ypshuo(AbstractSite):
SITE_NAME = SiteName.Ypshuo
ID_TYPE = IdType.Ypshuo
URL_PATTERNS = [
r"https://www\.ypshuo\.com/novel/(\d+)\.html",
]
WIKI_PROPERTY_ID = ""
DEFAULT_MODEL = Edition
@classmethod
def id_to_url(cls, id_value):
return f"https://www.ypshuo.com/novel/{id_value}.html"
def scrape(self):
api_url = f"https://www.ypshuo.com/api/novel/getInfo?novelId={self.id_value}"
o = BasicDownloader(api_url).download().json()
2024-10-14 13:21:04 +00:00
source = json.loads(o["data"]["source"])
lookup_ids = {}
for site in source:
2024-12-11 13:46:19 +00:00
match site["siteName"]:
case "起点中文网":
lookup_ids[IdType.Qidian] = site["bookId"]
case "晋江文学城":
lookup_ids[IdType.JJWXC] = site["bookPage"].rsplit("=", maxsplit=1)[
-1
]
2024-09-18 10:34:31 +00:00
return ResourceContent(
metadata={
"localized_title": [{"lang": "zh-cn", "text": o["data"]["novel_name"]}],
"author": [o["data"]["author_name"]],
"format": Edition.BookFormat.WEB,
2024-09-18 10:34:31 +00:00
"localized_description": [
{"lang": "zh-cn", "text": o["data"]["synopsis"]}
],
"cover_image_url": o["data"]["novel_img"],
},
2024-10-14 13:21:04 +00:00
lookup_ids=lookup_ids,
2024-09-18 10:34:31 +00:00
)