crispy-iptv-types
Protocol-agnostic IPTV domain types shared across the crispy-* Rust crates.
What This Crate Is
crispy-iptv-types is the foundation crate for the rest of the ecosystem. It contains the common data model used by playlist parsers, EPG readers, provider clients, stream validators, and playlist tooling.
If you need a stable shared vocabulary for IPTV data without pulling in any app-specific persistence, FFI, or UI code, this is the crate to start with.
What It Contains
- playlist and channel-facing types in
channel - EPG and XMLTV-facing types in
epg - VOD-facing types in
vod - stream URL, protocol, and status types in
stream - video resolution helpers in
resolution - a protocol-neutral error type in
error
The crate re-exports the most commonly used types at the root:
PlaylistEntryCatchupConfigCatchupTypeEpgProgrammeStreamUrlStreamProtocolStreamStatusResolutionVodEntryIptvError
Installation
[]
= "0.1.1"
MSRV: Rust 1.85
Quick Start
use ;
let url = new.unwrap;
let entry = PlaylistEntry ;
assert_eq!;
assert_eq!;
When To Use It
Use this crate when you need:
- a common schema across multiple IPTV crates
- conversions between protocol-specific parsers/clients and app-specific models
- a shared EPG/playlist/VOD vocabulary
When Not To Use It
Do not use this crate for:
- storage models tied to a database schema
- UI models
- network client logic
- parsing or serialization by itself
Use the higher-level crates for that:
crispy-m3ucrispy-xmltvcrispy-xtreamcrispy-stalkercrispy-iptv-toolscrispy-catchupcrispy-media-probecrispy-stream-checker
Design Notes
- types are protocol-neutral where possible
- serde support is built in
- compact strings and small vectors are used where they materially help payload-heavy IPTV data
Current Limitations
- this crate defines shared models only; it does not validate provider-specific business rules
- field-level semantics can still vary by upstream protocol, so callers should normalize where needed
- semver should be treated as pre-1.0 while the shared model surface is still settling
License
This repository currently ships with the same license and notice model as the parent CrispyTivi project. Review LICENSE.md and NOTICE.md before adopting it in downstream projects.