fix: handle age restricted channels
refactor! rename ExtractionError::VideoUnavailable to ExtractionError::Unavailable
This commit is contained in:
parent
b145080631
commit
1a22dc835a
7 changed files with 1200 additions and 51 deletions
|
|
@ -36,7 +36,7 @@ pub(crate) struct TabRendererWrap {
|
|||
pub(crate) struct TabRenderer {
|
||||
#[serde(default)]
|
||||
pub content: TabContent,
|
||||
pub endpoint: ChannelTabEndpoint,
|
||||
pub endpoint: Option<ChannelTabEndpoint>,
|
||||
}
|
||||
|
||||
#[serde_as]
|
||||
|
|
@ -148,10 +148,16 @@ pub(crate) struct MicroformatDataRenderer {
|
|||
|
||||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct ChannelAbout {
|
||||
#[serde_as(as = "VecSkipError<_>")]
|
||||
pub on_response_received_endpoints: Vec<ContinuationActionWrap<AboutChannelRendererWrap>>,
|
||||
#[serde(untagged)]
|
||||
pub(crate) enum ChannelAbout {
|
||||
#[serde(rename_all = "camelCase")]
|
||||
ReceivedEndpoints {
|
||||
#[serde_as(as = "VecSkipError<_>")]
|
||||
on_response_received_endpoints: Vec<ContinuationActionWrap<AboutChannelRendererWrap>>,
|
||||
},
|
||||
Content {
|
||||
contents: Option<Contents>,
|
||||
},
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
|
|
|
|||
|
|
@ -69,6 +69,14 @@ pub(crate) enum YouTubeListItem {
|
|||
contents: MapResult<Vec<YouTubeListItem>>,
|
||||
},
|
||||
|
||||
/// Age-restricted channel
|
||||
#[serde(rename_all = "camelCase")]
|
||||
ChannelAgeGateRenderer {
|
||||
channel_title: String,
|
||||
#[serde_as(as = "Text")]
|
||||
main_text: String,
|
||||
},
|
||||
|
||||
/// No video list item (e.g. ad) or unimplemented item
|
||||
///
|
||||
/// Unimplemented:
|
||||
|
|
@ -704,7 +712,7 @@ impl YouTubeListMapper<YouTubeItem> {
|
|||
self.warnings.append(&mut contents.warnings);
|
||||
contents.c.into_iter().for_each(|it| self.map_item(it));
|
||||
}
|
||||
YouTubeListItem::None => {}
|
||||
YouTubeListItem::None | YouTubeListItem::ChannelAgeGateRenderer { .. } => {}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Reference in a new issue