pub struct BookSource {Show 16 fields
pub schema: String,
pub name: String,
pub group: String,
pub url: String,
pub http: Http,
pub login_url: String,
pub login_ui: Vec<RowUi>,
pub login_check_js: String,
pub enabled_cookie_jar: bool,
pub concurrent_rate: String,
pub search: Option<SearchOp>,
pub explore: Option<ExploreOp>,
pub book_info: BookInfoOp,
pub toc: TocRules,
pub content: ContentRules,
pub samples: Vec<Sample>,
}Expand description
v2 书源。
Fields§
§schema: String固定为 "trnovel-booksource/v2"。
name: String§group: String§url: String站点基址,用于相对链接解析与 {{base}}。
http: Http§login_url: String登录:普通 URL,或登录脚本(@js:… / <js>…</js> 包裹,内含 login() 函数)。
非空即视为「需要登录」(见 BookSource::has_login);仅 js-host 构建可真正执行脚本登录。
login_ui: Vec<RowUi>声明式登录表单(TUI 渲染);收集值加密存为 loginInfo,供 login() 脚本读取。
login_check_js: String登录态过期校验脚本:每个网络方法响应后执行(注入 result=响应),判失效可提示重登。
开启后:响应的 Set-Cookie 自动回灌进 cookie 库(按注册域归并持久化)。
concurrent_rate: String限速:"N/ms"(N 次/ms)或纯毫秒间隔字符串;为空则用 http.rateLimit。
search: Option<SearchOp>§explore: Option<ExploreOp>§book_info: BookInfoOp§toc: TocRules§content: ContentRules§samples: Vec<Sample>Implementations§
Source§impl BookSource
impl BookSource
Sourcepub fn from_json(s: &str) -> Result<Self, ConfigError>
pub fn from_json(s: &str) -> Result<Self, ConfigError>
从 JSON 字符串解析一个书源。
Sourcepub fn has_login(&self) -> bool
pub fn has_login(&self) -> bool
是否需要登录(loginUrl 或 loginUi 任一非空)。据此在 TUI 暴露「书源登录」入口。
注:仅配置 loginUi 而无登录脚本/loginUrl 属配置不完整,由登录页拦截并提示。
Sourcepub fn get_login_js(&self) -> Option<&str>
pub fn get_login_js(&self) -> Option<&str>
若 loginUrl 是登录脚本(@js: 或 <js>…</js> 包裹),剥壳返回脚本体;
否则(普通 URL 或空)返回 None——此时走 headful 浏览器登录。
Sourcepub fn from_value_many(value: Value) -> Result<Vec<Self>, ConfigError>
pub fn from_value_many(value: Value) -> Result<Vec<Self>, ConfigError>
从 JSON 值解析一个或多个书源(支持单对象或数组)。
Trait Implementations§
Source§impl Clone for BookSource
impl Clone for BookSource
Source§fn clone(&self) -> BookSource
fn clone(&self) -> BookSource
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for BookSource
impl Debug for BookSource
Source§impl<'de> Deserialize<'de> for BookSource
impl<'de> Deserialize<'de> for BookSource
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl Eq for BookSource
Source§impl PartialEq for BookSource
impl PartialEq for BookSource
Source§fn eq(&self, other: &BookSource) -> bool
fn eq(&self, other: &BookSource) -> bool
Tests for
self and other values to be equal, and is used by ==.Source§impl Serialize for BookSource
impl Serialize for BookSource
impl StructuralPartialEq for BookSource
Auto Trait Implementations§
impl Freeze for BookSource
impl RefUnwindSafe for BookSource
impl Send for BookSource
impl Sync for BookSource
impl Unpin for BookSource
impl UnsafeUnpin for BookSource
impl UnwindSafe for BookSource
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Returns whether the given value has been niched. Read more
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
Writes data to
out indicating that a T is niched.