Skip to main content

Crate haki_dl

Crate haki_dl 

Source
Expand description

Library-first downloader API.

Re-exports§

pub use api::DownloadClient;
pub use api::DownloadRequest;
pub use api::LiveRecorder;
pub use api::ProgressCallback;
pub use backend::BackendPolicy;
pub use backend::BackendSelection;
pub use backend::Mp4BackendPolicy;
pub use cancellation::CancellationToken;
pub use cli::CLI_SCHEMA;
pub use cli::CliApiBinding;
pub use cli::CliOptionSchema;
pub use cli::CliParseResult;
pub use cli::CliSchemaValueKind;
pub use cli::parse_args;
pub use config::CompatibilityProfile;
pub use config::CustomKey;
pub use config::CustomRange;
pub use config::DecryptionEngine;
pub use config::DownloadOptions;
pub use config::HlsMethod;
pub use config::LogLevel;
pub use config::MuxAfterDoneOptions;
pub use config::MuxerKind;
pub use config::StreamFilter;
pub use config::SubtitleFormat;
pub use config::TaskStartAt;
pub use config::UiLanguage;
pub use dash::DashManifest;
pub use dash::DashParser;
pub use decrypt::ExternalDecryptPlan;
pub use decrypt::ExternalDecryptRequest;
pub use decrypt::Mp4ProtectionInfo;
pub use decrypt::PsshInfo;
pub use decrypt::PsshSystem;
pub use decrypt::SelectedKey;
pub use decrypt::aes_128_cbc_decrypt;
pub use decrypt::aes_128_ecb_decrypt;
pub use decrypt::chacha20_decrypt_per_1024_bytes;
pub use decrypt::custom_keys_to_pairs;
pub use decrypt::decrypt_hls_segment_bytes;
pub use decrypt::decrypt_hls_segment_file;
pub use decrypt::plan_external_decrypt;
pub use decrypt::read_mp4_protection_info;
pub use decrypt::redact_secrets;
pub use decrypt::search_key_text_file;
pub use decrypt::select_key_pair;
pub use download::DownloadMergePolicy;
pub use download::DownloadScheduler;
pub use download::SegmentDownloadResult;
pub use download::SegmentDownloader;
pub use download::SpeedState;
pub use download::StreamDownloadResult;
pub use download::cleanup_after_success;
pub use download::merge_policy_for_stream;
pub use download::planned_output_path;
pub use download::split_large_single_file_by_size;
pub use download::stream_output_extension;
pub use download::stream_temp_dir;
pub use error::Error;
pub use error::Result;
pub use event::ProgressEvent;
pub use hardening::BenchmarkMetric;
pub use hardening::BoundedEventQueue;
pub use hardening::ResourceLimits;
pub use hardening::contains_unredacted_secret;
pub use hardening::estimate_segment_count;
pub use hardening::redact_and_verify;
pub use hardening::scan_unchecked_exit_paths;
pub use hardening::validate_cleanup_paths;
pub use hardening::validate_manifest_size;
pub use hardening::validate_resource_limits;
pub use hls::HlsManifest;
pub use hls::HlsParser;
pub use http::DefaultHttpClient;
pub use http::HttpRequest;
pub use http::HttpResponse;
pub use http::ProxyMode;
pub use live::HttpLiveTsState;
pub use live::LiveIdentityMode;
pub use live::LiveOptionEffects;
pub use live::LiveRefreshResult;
pub use live::LiveStreamState;
pub use live::add_recorded_duration;
pub use live::compute_live_wait_seconds;
pub use live::filter_new_live_segments;
pub use live::live_option_effects;
pub use live::live_segment_name;
pub use live::plan_live_pipe_mux;
pub use live::sync_live_startup_windows;
pub use live::update_http_live_ts_state;
pub use manifest::ByteRange;
pub use manifest::Choice;
pub use manifest::EncryptionInfo;
pub use manifest::EncryptionMethod;
pub use manifest::ExtractorType;
pub use manifest::KeySource;
pub use manifest::Manifest;
pub use manifest::MediaPart;
pub use manifest::MediaSegment;
pub use manifest::MediaType;
pub use manifest::MssData;
pub use manifest::Playlist;
pub use manifest::RoleType;
pub use manifest::Stream;
pub use manifest::StreamSelector;
pub use manifest::audio_channel_order;
pub use manifest::compare_streams_compatible;
pub use manifest::sort_streams_compatible;
pub use mss::MssGeneratedInit;
pub use mss::MssInitGenerator;
pub use mss::MssManifest;
pub use mss::MssParser;
pub use mux::FfmpegMergeMetadata;
pub use mux::FfmpegMergeRequest;
pub use mux::MediaInfo;
pub use mux::MergeOutputFormat;
pub use mux::Mp4forgeSupport;
pub use mux::Mp4forgeSupportMatrix;
pub use mux::MuxCommandPlan;
pub use mux::MuxFormat;
pub use mux::MuxImport;
pub use mux::MuxOptions;
pub use mux::OutputArtifact;
pub use mux::OutputFile;
pub use mux::combine_files;
pub use mux::merge_extension;
pub use mux::mp4forge_support_for_stream;
pub use mux::mux_extension;
pub use mux::output_files_with_imports;
pub use mux::partial_combine_files;
pub use mux::plan_ffmpeg_merge;
pub use mux::plan_ffmpeg_mux;
pub use mux::plan_mkvmerge_mux;
pub use mux::validate_mp4forge_merge_request;
pub use mux::validate_mp4forge_mux_after_done;
pub use observability::DEFAULT_UPDATE_CHECK_URL;
pub use observability::LogFilePlan;
pub use observability::LogPlanConfig;
pub use observability::ProgressEventCollector;
pub use observability::ProgressSummary;
pub use observability::UpdateCheckClient;
pub use observability::UpdateCheckHttpClient;
pub use observability::UpdateCheckResult;
pub use observability::append_log_file;
pub use observability::check_update_with_client;
pub use observability::format_duration;
pub use observability::format_file_size;
pub use observability::initialize_log_file;
pub use observability::latest_version_from_release_redirect;
pub use observability::plan_log_file;
pub use observability::redact_progress_event;
pub use observability::should_log;
pub use observability::spawn_update_check_if_enabled;
pub use observability::streams_metadata_json;
pub use observability::summarize_events;
pub use observability::write_metadata_jsons;
pub use processor::ContentProcessor;
pub use processor::DEFAULT_USER_AGENT;
pub use processor::DefaultDashContentProcessor;
pub use processor::DefaultHlsContentProcessor;
pub use processor::DefaultHlsKeyProcessor;
pub use processor::DefaultUrlProcessor;
pub use processor::KeyProcessor;
pub use processor::ParserConfig;
pub use processor::SignedDashUrlProcessor;
pub use processor::UrlProcessor;
pub use processor::compatibility_headers;
pub use processor::resolve_media_url;
pub use processor::signed_dash_secure_value;
pub use progress::AggregateProgress;
pub use progress::SegmentProgress;
pub use progress::StreamProgress;
pub use selection::apply_custom_range;
pub use selection::apply_stream_filters;
pub use selection::auto_select_streams;
pub use selection::clean_ad_segments;
pub use selection::filter_drop;
pub use selection::filter_keep;
pub use selection::format_save_pattern;
pub use selection::handle_file_collision;
pub use selection::handle_file_collision_with_reserved;
pub use selection::interactive_default_streams;
pub use selection::order_streams;
pub use selection::save_name_from_input;
pub use selection::save_name_from_input_with_suffix;
pub use selection::subtitle_only_streams;
pub use selection::valid_file_name;
pub use session::DownloadSession;
pub use session::SessionState;
pub use source::LoadedSource;
pub use source::LoadedSourceKind;
pub use source::SourceLoader;
pub use source::write_raw_files;
pub use subtitle::SubtitleCue;
pub use subtitle::SubtitleImage;
pub use subtitle::WebVttSubtitle;
pub use subtitle::check_stpp_init;
pub use subtitle::check_wvtt_init;
pub use subtitle::extract_stpp_from_files;
pub use subtitle::extract_stpp_from_segments;
pub use subtitle::extract_ttml_documents;
pub use subtitle::extract_ttml_from_files;
pub use subtitle::extract_wvtt_from_files;
pub use subtitle::extract_wvtt_from_segments;
pub use subtitle::format_subtitle;
pub use subtitle::parse_webvtt;
pub use subtitle::parse_webvtt_bytes;
pub use subtitle::write_image_pngs;

Modules§

api
High-level async API entry points.
backend
Backend selection policy.
cancellation
Cooperative cancellation primitives.
cli
CLI option parsing.
config
Request options and compatibility configuration.
dash
DASH MPD parsing.
decrypt
Decryption helpers and external decrypt command planning.
download
Segment downloading, scheduling, progress, and cleanup helpers.
error
Stable error type for the public API.
event
Progress and lifecycle event schema.
hardening
Performance, resource-bound, and security hardening helpers.
hls
HLS manifest parsing.
http
HTTP request and response abstractions.
live
Live playlist recording planners and state helpers.
manifest
Manifest, stream, playlist, segment, and encryption models.
mss
Smooth Streaming manifest parsing and initialization generation.
mux
Container, merge, mux, and output artifact models.
observability
Logging, metadata, progress formatting, and event collection helpers.
processor
Parser configuration and processor hooks.
progress
Progress counters used by events and API callbacks.
rpc
Optional JSON-RPC server for remote haki-dl control.
selection
Stream selection, filtering, range clipping, ad cleanup, and naming helpers.
session
Session state models.
source
Source and segment loading utilities.
subtitle
Subtitle parsing, conversion, extraction, and image helpers.
traits
Async-ready component traits.