pub struct Video { /* private fields */ }
Expand description
A YouTube downloader, which allows you to download all available formats and qualities of a YouTube video.
Each instance of Video
represents an existing, available, and downloadable
video.
There are two ways of constructing an instance of Video
:
- By using the asynchronous
Video::from_*
methods. These methods will take some kind of video-identifier, like anUrl
or anId
, will then internally download the necessary video information and finally descramble it. - By calling
VideoDescrambler::descramble
. Since aVideoDescrambler
already contains the necessary video information, and just need to descramble it, no requests are performed. (This gives you more control over the process).
Examples
- Constructing using
Video::from_url
(orVideo::from_id
) (easiest way)
let url = Url::parse("https://youtube.com/watch?iv=5jlI4uzZGjU")?;
let video: Video = Video::from_url(&url).await?;
- Constructing using
VideoDescrambler::descramble
let url = Url::parse("https://youtube.com/watch?iv=5jlI4uzZGjU")?;
let fetcher: VideoFetcher = VideoFetcher::from_url(&url)?;
let descrambler: VideoDescrambler = fetcher.fetch().await?;
let video: Video = descrambler.descramble()?;
- Construction using chained calls
let url = Url::parse("https://youtube.com/watch?iv=5jlI4uzZGjU")?;
let video: Video = VideoFetcher::from_url(&url)?
.fetch()
.await?
.descramble()?;
- Downloading a video using an existing
Video
instance
let video_path = video
.streams()
.iter()
.filter(|stream| stream.includes_video_track && stream.includes_audio_track)
.max_by_key(|stream| stream.quality_label)
.unwrap()
.download()
.await?;
Implementations
sourceimpl Video
impl Video
sourcepub async fn from_url(url: &Url) -> Result<Self>
pub async fn from_url(url: &Url) -> Result<Self>
Errors
- When
VideoFetcher::from_url
fails. - When
VideoFetcher::fetch
fails. - When
VideoDescrambler::descramble
fails.
sourcepub async fn from_id(id: IdBuf) -> Result<Self>
pub async fn from_id(id: IdBuf) -> Result<Self>
Errors
- When
VideoFetcher::fetch
fails. - When
VideoDescrambler::descramble
fails.
sourcepub fn video_info(&self) -> &VideoInfo
pub fn video_info(&self) -> &VideoInfo
The VideoInfo
of the video.
sourcepub fn streams(&self) -> &Vec<Stream>ⓘNotable traits for Vec<u8, A>impl<A> Write for Vec<u8, A> where
A: Allocator,
pub fn streams(&self) -> &Vec<Stream>ⓘNotable traits for Vec<u8, A>impl<A> Write for Vec<u8, A> where
A: Allocator,
A: Allocator,
All Stream
s of the video.
sourcepub fn into_streams(self) -> Vec<Stream>ⓘNotable traits for Vec<u8, A>impl<A> Write for Vec<u8, A> where
A: Allocator,
pub fn into_streams(self) -> Vec<Stream>ⓘNotable traits for Vec<u8, A>impl<A> Write for Vec<u8, A> where
A: Allocator,
A: Allocator,
Takes all Stream
s of the video.
sourcepub fn into_parts(self) -> (VideoInfo, Vec<Stream>)
pub fn into_parts(self) -> (VideoInfo, Vec<Stream>)
Decomposes a Video
into it’s raw parts.
sourcepub fn video_details(&self) -> Arc<VideoDetails>
pub fn video_details(&self) -> Arc<VideoDetails>
The VideoDetails
s of the video.
sourcepub fn is_age_restricted(&self) -> bool
pub fn is_age_restricted(&self) -> bool
Whether or not the video is age restricted.
sourcepub fn best_quality(&self) -> Option<&Stream>
pub fn best_quality(&self) -> Option<&Stream>
The Stream
with the best quality.
This stream is guaranteed to contain both a video as well as an audio track.
sourcepub fn worst_quality(&self) -> Option<&Stream>
pub fn worst_quality(&self) -> Option<&Stream>
The Stream
with the worst quality.
This stream is guaranteed to contain both a video as well as an audio track.
sourcepub fn best_video(&self) -> Option<&Stream>
pub fn best_video(&self) -> Option<&Stream>
The Stream
with the best video quality.
This stream is guaranteed to contain only a video but no audio track.
sourcepub fn worst_video(&self) -> Option<&Stream>
pub fn worst_video(&self) -> Option<&Stream>
The Stream
with the worst video quality.
This stream is guaranteed to contain only a video but no audio track.
sourcepub fn best_audio(&self) -> Option<&Stream>
pub fn best_audio(&self) -> Option<&Stream>
The Stream
with the best audio quality.
This stream is guaranteed to contain only a audio but no video track.
sourcepub fn worst_audio(&self) -> Option<&Stream>
pub fn worst_audio(&self) -> Option<&Stream>
The Stream
with the worst audio quality.
This stream is guaranteed to contain only a audio but no video track.
Trait Implementations
impl StructuralPartialEq for Video
Auto Trait Implementations
impl !RefUnwindSafe for Video
impl Send for Video
impl Sync for Video
impl Unpin for Video
impl !UnwindSafe for Video
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more