Need help with stremio-core?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

Stremio
238 Stars 28 Forks MIT License 2.3K Commits 55 Opened issues

Description

⚛️ The Stremio Core: types, addon system, UI models, core logic

Services available

!
?

Need anything else?

Contributors list

Stremio - the next generation media center

Stremio is a full-featured media center designed to help you organize and stream your favorite videos, movies and TV series. It will notify you for new episodes / movies, and allow you to find new content through Discover.

Stremio allows, using it's Add-ons system, to play movies, TV series and channels instantly.

stremio-core

stremio-core
is a rust crate that's designed to contain all the reusable logic between Stremio versions.

Goals

  • Flexibility - can be integrated into existing code bases, across the entire stack, and in different paradigms
    • use case:
      types
      can be used by add-ons
    • use case: can be used with existing user authentication as an addition to an existing app
    • use case: can use the
      Context
      model to manage the user authentication/addons, using it as a backbone to the entire Stremio app
  • Emphasis on correctness
  • No cruft / legacy - not burdened by obsolete decisions & solutions

Modules

  • types
  • addon_transport
    - handles communication with add-ons, implements legacy protocol adapter
  • state_types
    : types that describe application state; inspired by the Elm architecture
    • Effects and Update traits
    • runtime
      : helps using
      stremio-core
      in an application by handling the effects automatically
    • environment
      : a trait describes the environment (fetch, storage)
    • msg
      : messages: actions, events
    • models
      : all stateful models, such as
      Context
      (handling user authentication, add-ons),
      Library
      ,
      CatalogFiltered
      , etc.

Also see: * https://github.com/stremio/stremio-players * https://github.com/Stremio/labs/issues/20

cargo clippy
cargo fmt

Optimizing WASM output

WASM output binary can get large, especially if we derive Serialize/Deserialize in places we don't need to

We can optimize it by running twiggy:

twiggy top ..._bg.wasm
and seeing what the biggest code size offenders are

Adding new actions

Defining actions and what middleware requests they should trigger is defined in

src/state_types/msg/actions

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.