import Foundation public struct BookListRule: Codable, Hashable, Sendable { public var bookList: String? public var name: String? public var author: String? public var intro: String? public var kind: String? public var lastChapter: String? public var updateTime: String? public var bookUrl: String? public var coverUrl: String? public var wordCount: String? public init( bookList: String? = nil, name: String? = nil, author: String? = nil, intro: String? = nil, kind: String? = nil, lastChapter: String? = nil, updateTime: String? = nil, bookUrl: String? = nil, coverUrl: String? = nil, wordCount: String? = nil ) { self.bookList = bookList self.name = name self.author = author self.intro = intro self.kind = kind self.lastChapter = lastChapter self.updateTime = updateTime self.bookUrl = bookUrl self.coverUrl = coverUrl self.wordCount = wordCount } } public struct SearchRule: Codable, Hashable, Sendable { public var checkKeyWord: String? public var bookList: String? public var name: String? public var author: String? public var intro: String? public var kind: String? public var lastChapter: String? public var updateTime: String? public var bookUrl: String? public var coverUrl: String? public var wordCount: String? public init( checkKeyWord: String? = nil, bookList: String? = nil, name: String? = nil, author: String? = nil, intro: String? = nil, kind: String? = nil, lastChapter: String? = nil, updateTime: String? = nil, bookUrl: String? = nil, coverUrl: String? = nil, wordCount: String? = nil ) { self.checkKeyWord = checkKeyWord self.bookList = bookList self.name = name self.author = author self.intro = intro self.kind = kind self.lastChapter = lastChapter self.updateTime = updateTime self.bookUrl = bookUrl self.coverUrl = coverUrl self.wordCount = wordCount } } public typealias ExploreRule = BookListRule public struct BookInfoRule: Codable, Hashable, Sendable { public var `init`: String? public var name: String? public var author: String? public var intro: String? public var kind: String? public var lastChapter: String? public var updateTime: String? public var coverUrl: String? public var tocUrl: String? public var wordCount: String? public var canReName: String? public var downloadUrls: String? public init() {} } public struct TocRule: Codable, Hashable, Sendable { public var preUpdateJs: String? public var chapterList: String? public var chapterName: String? public var chapterUrl: String? public var formatJs: String? public var isVolume: String? public var isVip: String? public var isPay: String? public var updateTime: String? public var nextTocUrl: String? public init() {} } public struct ContentRule: Codable, Hashable, Sendable { public var content: String? public var subContent: String? public var title: String? public var nextContentUrl: String? public var webJs: String? public var sourceRegex: String? public var replaceRegex: String? public var imageStyle: String? public var imageDecode: String? public var payAction: String? public var callBackJs: String? public init() {} } public struct ReviewRule: Codable, Hashable, Sendable { public var reviewUrl: String? public var avatarRule: String? public var contentRule: String? public var postTimeRule: String? public var reviewQuoteUrl: String? public var voteUpUrl: String? public var voteDownUrl: String? public var postReviewUrl: String? public var postQuoteUrl: String? public var deleteUrl: String? public init() {} }