lib.itmens/catalog/sites/ypshuo.py
2024-12-25 16:13:21 -05:00

46 lines
1.5 KiB
Python

import json
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()
source = json.loads(o["data"]["source"])
lookup_ids = {}
for site in source:
match site["siteName"]:
case "起点中文网":
lookup_ids[IdType.Qidian] = site["bookId"]
case "晋江文学城":
lookup_ids[IdType.JJWXC] = site["bookPage"].rsplit("=", maxsplit=1)[
-1
]
return ResourceContent(
metadata={
"localized_title": [{"lang": "zh-cn", "text": o["data"]["novel_name"]}],
"author": [o["data"]["author_name"]],
"format": Edition.BookFormat.WEB,
"localized_description": [
{"lang": "zh-cn", "text": o["data"]["synopsis"]}
],
"cover_image_url": o["data"]["novel_img"],
},
lookup_ids=lookup_ids,
)