Stremio/stremio-core
GitHub: Stremio/stremio-core
stremio-core 是用 Rust 实现的 Stremio 媒体中心核心库,为各平台客户端提供统一的类型系统、插件通信、状态管理和业务模型。
Stars: 2227 | Forks: 213
## Stremio - 下一代媒体中心
[](https://github.com/Stremio/stremio-core/actions/workflows/build.yml)
[](https://github.com/Stremio/stremio-core/actions/workflows/msrv.yml)
[](https://stremio.github.io/stremio-core)
Stremio 是一个功能丰富的媒体中心,旨在帮助您整理和流式传输您喜爱的视频、电影和电视剧。它会在有新剧集/电影时通知您,并允许您通过“发现”找到新内容。
借助其[插件系统](https://github.com/Stremio/stremio-addon-sdk),Stremio 能够实现电影、电视剧和频道的即时播放。
## stremio-core
`stremio-core` 是一个 rust crate,旨在包含 Stremio 不同版本之间所有可复用的逻辑。
### 目标
* 灵活性 - 可以集成到现有的代码库中,贯穿整个技术栈,并适用于不同的编程范式
* 用例:`types` 可供插件使用
* 用例:可以作为现有应用的附加功能,结合现有的用户身份验证一起使用
* 用例:可以使用 `Context` 模型来管理用户身份验证/插件,将其作为整个 Stremio 应用的核心骨干
* 强调正确性
* 无冗余 / 遗留代码 - 不受过时决策和解决方案的拖累
### 模块
* `types`
* `addon_transport` - 处理与插件的通信,实现 legacy protocol adapter
* `state_types`:描述应用状态的数据类型;受 Elm 架构启发
* Effects 和 Update trait
* `runtime`:通过自动处理 effects,帮助在应用程序中使用 `stremio-core`
* `environment`:描述环境(fetch、storage)的 trait
* `msg`:消息:actions、events
* `models`:所有有状态的 models,例如 `Context`(处理用户身份验证、插件)、`Library`、`CatalogFiltered` 等。
```
cargo clippy
cargo fmt
```
## 优化 WASM 输出
WASM 输出的二进制文件可能会变得非常大,尤其是在我们不需要的地方派生了 Serialize/Deserialize 时。
我们可以通过运行 twiggy:`twiggy top ..._bg.wasm` 并查看哪些代码最占用体积来进行优化。
## 添加新的 action
定义 action 以及它们应触发的 middleware 请求,这部分内容在 `src/state_types/msg/actions` 中进行定义
标签:Rust, 可视化界面, 媒体中心, 流媒体, 网络流量审计, 通知系统