feat: change default player client order
This commit is contained in:
parent
fbecd232e5
commit
1a62471ad7
2 changed files with 13 additions and 1 deletions
|
|
@ -216,6 +216,17 @@ static CLIENT_VERSION_REGEX: Lazy<Regex> =
|
||||||
static VISITOR_DATA_REGEX: Lazy<Regex> =
|
static VISITOR_DATA_REGEX: Lazy<Regex> =
|
||||||
Lazy::new(|| Regex::new(r#""visitorData":"([\w\d_\-%]+?)""#).unwrap());
|
Lazy::new(|| Regex::new(r#""visitorData":"([\w\d_\-%]+?)""#).unwrap());
|
||||||
|
|
||||||
|
/// Default order of client types when fetching player data
|
||||||
|
///
|
||||||
|
/// The order may change in the future in case YouTube applies changes to their
|
||||||
|
/// platform that disable a client or make it less reliable.
|
||||||
|
pub const DEFAULT_PLAYER_CLIENT_ORDER: &[ClientType] = &[
|
||||||
|
ClientType::Tv,
|
||||||
|
ClientType::TvHtml5Embed,
|
||||||
|
ClientType::Android,
|
||||||
|
ClientType::Ios,
|
||||||
|
];
|
||||||
|
|
||||||
/// The RustyPipe client used to access YouTube's API
|
/// The RustyPipe client used to access YouTube's API
|
||||||
///
|
///
|
||||||
/// RustyPipe uses an [`Arc`] internally, so if you are using the client
|
/// RustyPipe uses an [`Arc`] internally, so if you are using the client
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@ use super::{
|
||||||
player::{self, Format},
|
player::{self, Format},
|
||||||
},
|
},
|
||||||
ClientType, MapRespCtx, MapResponse, MapResult, RustyPipeQuery, YTContext,
|
ClientType, MapRespCtx, MapResponse, MapResult, RustyPipeQuery, YTContext,
|
||||||
|
DEFAULT_PLAYER_CLIENT_ORDER,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(Debug, Serialize)]
|
#[derive(Debug, Serialize)]
|
||||||
|
|
@ -65,7 +66,7 @@ struct QContentPlaybackContext<'a> {
|
||||||
impl RustyPipeQuery {
|
impl RustyPipeQuery {
|
||||||
/// Get YouTube player data (video/audio streams + basic metadata)
|
/// Get YouTube player data (video/audio streams + basic metadata)
|
||||||
pub async fn player<S: AsRef<str> + Debug>(&self, video_id: S) -> Result<VideoPlayer, Error> {
|
pub async fn player<S: AsRef<str> + Debug>(&self, video_id: S) -> Result<VideoPlayer, Error> {
|
||||||
self.player_from_clients(video_id, &[ClientType::Desktop, ClientType::TvHtml5Embed])
|
self.player_from_clients(video_id, DEFAULT_PLAYER_CLIENT_ORDER)
|
||||||
.await
|
.await
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Reference in a new issue