1#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4pub struct Ab {
5    #[prost(message, optional, tag = "1")]
7    pub glance: ::core::option::Option<Glance>,
8    #[prost(enumeration = "Group", tag = "2")]
10    pub group: i32,
11}
12impl ::prost::Name for Ab {
13    const NAME: &'static str = "AB";
14    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
15    fn full_name() -> ::prost::alloc::string::String {
16        "bilibili.app.playurl.v1.AB".into()
17    }
18    fn type_url() -> ::prost::alloc::string::String {
19        "/bilibili.app.playurl.v1.AB".into()
20    }
21}
22#[derive(Clone, PartialEq, ::prost::Message)]
24pub struct ArcConf {
25    #[prost(bool, tag = "1")]
27    pub is_support: bool,
28    #[prost(bool, tag = "2")]
30    pub disabled: bool,
31    #[prost(message, optional, tag = "3")]
33    pub extra_content: ::core::option::Option<ExtraContent>,
34    #[prost(int64, repeated, tag = "4")]
36    pub unsupport_scene: ::prost::alloc::vec::Vec<i64>,
37}
38impl ::prost::Name for ArcConf {
39    const NAME: &'static str = "ArcConf";
40    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
41    fn full_name() -> ::prost::alloc::string::String {
42        "bilibili.app.playurl.v1.ArcConf".into()
43    }
44    fn type_url() -> ::prost::alloc::string::String {
45        "/bilibili.app.playurl.v1.ArcConf".into()
46    }
47}
48#[derive(Clone, PartialEq, ::prost::Message)]
50pub struct ButtonInfo {
51    #[prost(string, tag = "1")]
53    pub text: ::prost::alloc::string::String,
54    #[prost(string, tag = "2")]
56    pub text_color: ::prost::alloc::string::String,
57    #[prost(string, tag = "3")]
59    pub text_color_night: ::prost::alloc::string::String,
60    #[prost(string, tag = "4")]
62    pub bg_color: ::prost::alloc::string::String,
63    #[prost(string, tag = "5")]
65    pub bg_color_night: ::prost::alloc::string::String,
66    #[prost(string, tag = "6")]
68    pub link: ::prost::alloc::string::String,
69    #[prost(enumeration = "ButtonAction", tag = "7")]
71    pub action_type: i32,
72    #[prost(message, optional, tag = "8")]
74    pub report: ::core::option::Option<Report>,
75    #[prost(string, tag = "9")]
77    pub frame_color: ::prost::alloc::string::String,
78    #[prost(string, tag = "10")]
80    pub icon: ::prost::alloc::string::String,
81}
82impl ::prost::Name for ButtonInfo {
83    const NAME: &'static str = "ButtonInfo";
84    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
85    fn full_name() -> ::prost::alloc::string::String {
86        "bilibili.app.playurl.v1.ButtonInfo".into()
87    }
88    fn type_url() -> ::prost::alloc::string::String {
89        "/bilibili.app.playurl.v1.ButtonInfo".into()
90    }
91}
92#[derive(Clone, PartialEq, ::prost::Message)]
94pub struct ButtonStyle {
95    #[prost(string, tag = "1")]
97    pub text: ::prost::alloc::string::String,
98    #[prost(string, tag = "2")]
100    pub text_color: ::prost::alloc::string::String,
101    #[prost(string, tag = "3")]
103    pub bg_color: ::prost::alloc::string::String,
104    #[prost(string, tag = "4")]
106    pub jump_link: ::prost::alloc::string::String,
107}
108impl ::prost::Name for ButtonStyle {
109    const NAME: &'static str = "ButtonStyle";
110    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
111    fn full_name() -> ::prost::alloc::string::String {
112        "bilibili.app.playurl.v1.ButtonStyle".into()
113    }
114    fn type_url() -> ::prost::alloc::string::String {
115        "/bilibili.app.playurl.v1.ButtonStyle".into()
116    }
117}
118#[derive(Clone, PartialEq, ::prost::Message)]
120pub struct Chronos {
121    #[prost(string, tag = "1")]
123    pub md5: ::prost::alloc::string::String,
124    #[prost(string, tag = "2")]
126    pub file: ::prost::alloc::string::String,
127}
128impl ::prost::Name for Chronos {
129    const NAME: &'static str = "Chronos";
130    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
131    fn full_name() -> ::prost::alloc::string::String {
132        "bilibili.app.playurl.v1.Chronos".into()
133    }
134    fn type_url() -> ::prost::alloc::string::String {
135        "/bilibili.app.playurl.v1.Chronos".into()
136    }
137}
138#[derive(Clone, Copy, PartialEq, ::prost::Message)]
140pub struct CloudConf {
141    #[prost(bool, tag = "1")]
143    pub show: bool,
144    #[prost(enumeration = "ConfType", tag = "2")]
146    pub conf_type: i32,
147    #[prost(message, optional, tag = "3")]
149    pub field_value: ::core::option::Option<FieldValue>,
150    #[prost(message, optional, tag = "4")]
152    pub conf_value: ::core::option::Option<ConfValue>,
153}
154impl ::prost::Name for CloudConf {
155    const NAME: &'static str = "CloudConf";
156    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
157    fn full_name() -> ::prost::alloc::string::String {
158        "bilibili.app.playurl.v1.CloudConf".into()
159    }
160    fn type_url() -> ::prost::alloc::string::String {
161        "/bilibili.app.playurl.v1.CloudConf".into()
162    }
163}
164#[derive(Clone, PartialEq, ::prost::Message)]
166pub struct ComprehensiveToast {
167    #[prost(enumeration = "ToastType", tag = "1")]
169    pub r#type: i32,
170    #[prost(message, optional, tag = "2")]
172    pub button: ::core::option::Option<ButtonInfo>,
173    #[prost(string, tag = "3")]
175    pub icon: ::prost::alloc::string::String,
176    #[prost(message, optional, tag = "4")]
178    pub toast_text: ::core::option::Option<TextInfo>,
179    #[prost(message, optional, tag = "5")]
181    pub report: ::core::option::Option<Report>,
182}
183impl ::prost::Name for ComprehensiveToast {
184    const NAME: &'static str = "ComprehensiveToast";
185    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
186    fn full_name() -> ::prost::alloc::string::String {
187        "bilibili.app.playurl.v1.ComprehensiveToast".into()
188    }
189    fn type_url() -> ::prost::alloc::string::String {
190        "/bilibili.app.playurl.v1.ComprehensiveToast".into()
191    }
192}
193#[derive(Clone, Copy, PartialEq, ::prost::Message)]
195pub struct ConfValue {
196    #[prost(oneof = "conf_value::Value", tags = "1, 2")]
198    pub value: ::core::option::Option<conf_value::Value>,
199}
200pub mod conf_value {
202    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
204    pub enum Value {
205        #[prost(bool, tag = "1")]
207        SwitchVal(bool),
208        #[prost(int64, tag = "2")]
210        SelectedVal(i64),
211    }
212}
213impl ::prost::Name for ConfValue {
214    const NAME: &'static str = "ConfValue";
215    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
216    fn full_name() -> ::prost::alloc::string::String {
217        "bilibili.app.playurl.v1.ConfValue".into()
218    }
219    fn type_url() -> ::prost::alloc::string::String {
220        "/bilibili.app.playurl.v1.ConfValue".into()
221    }
222}
223#[derive(Clone, PartialEq, ::prost::Message)]
225pub struct DashItem {
226    #[prost(int32, tag = "1")]
228    pub id: i32,
229    #[prost(string, tag = "2")]
231    pub base_url: ::prost::alloc::string::String,
232    #[prost(string, repeated, tag = "3")]
234    pub backup_url: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
235    #[prost(int32, tag = "4")]
237    pub bandwidth: i32,
238    #[prost(int32, tag = "5")]
240    pub codecid: i32,
241    #[prost(string, tag = "6")]
243    pub md5: ::prost::alloc::string::String,
244    #[prost(int64, tag = "7")]
246    pub size: i64,
247    #[prost(string, tag = "8")]
249    pub frame_rate: ::prost::alloc::string::String,
250    #[prost(string, tag = "9")]
252    pub widevine_pssh: ::prost::alloc::string::String,
253    #[prost(string, tag = "10")]
255    pub bilidrm_uri: ::prost::alloc::string::String,
256}
257impl ::prost::Name for DashItem {
258    const NAME: &'static str = "DashItem";
259    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
260    fn full_name() -> ::prost::alloc::string::String {
261        "bilibili.app.playurl.v1.DashItem".into()
262    }
263    fn type_url() -> ::prost::alloc::string::String {
264        "/bilibili.app.playurl.v1.DashItem".into()
265    }
266}
267#[derive(Clone, PartialEq, ::prost::Message)]
269pub struct DashVideo {
270    #[prost(string, tag = "1")]
272    pub base_url: ::prost::alloc::string::String,
273    #[prost(string, repeated, tag = "2")]
275    pub backup_url: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
276    #[prost(int32, tag = "3")]
278    pub bandwidth: i32,
279    #[prost(int32, tag = "4")]
281    pub codecid: i32,
282    #[prost(string, tag = "5")]
284    pub md5: ::prost::alloc::string::String,
285    #[prost(int64, tag = "6")]
287    pub size: i64,
288    #[prost(int32, tag = "7")]
290    pub audio_id: i32,
291    #[prost(bool, tag = "8")]
293    pub no_rexcode: bool,
294    #[prost(string, tag = "9")]
296    pub frame_rate: ::prost::alloc::string::String,
297    #[prost(int32, tag = "10")]
299    pub width: i32,
300    #[prost(int32, tag = "11")]
302    pub height: i32,
303    #[prost(string, tag = "12")]
305    pub widevine_pssh: ::prost::alloc::string::String,
306    #[prost(string, tag = "13")]
308    pub bilidrm_uri: ::prost::alloc::string::String,
309}
310impl ::prost::Name for DashVideo {
311    const NAME: &'static str = "DashVideo";
312    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
313    fn full_name() -> ::prost::alloc::string::String {
314        "bilibili.app.playurl.v1.DashVideo".into()
315    }
316    fn type_url() -> ::prost::alloc::string::String {
317        "/bilibili.app.playurl.v1.DashVideo".into()
318    }
319}
320#[derive(Clone, PartialEq, ::prost::Message)]
322pub struct Dialog {
323    #[prost(enumeration = "GuideStyle", tag = "1")]
325    pub style_type: i32,
326    #[prost(message, optional, tag = "2")]
328    pub report: ::core::option::Option<Report>,
329    #[prost(message, optional, tag = "3")]
331    pub title: ::core::option::Option<TextInfo>,
332    #[prost(message, optional, tag = "4")]
334    pub subtitle: ::core::option::Option<TextInfo>,
335    #[prost(message, repeated, tag = "5")]
337    pub button: ::prost::alloc::vec::Vec<ButtonInfo>,
338}
339impl ::prost::Name for Dialog {
340    const NAME: &'static str = "Dialog";
341    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
342    fn full_name() -> ::prost::alloc::string::String {
343        "bilibili.app.playurl.v1.Dialog".into()
344    }
345    fn type_url() -> ::prost::alloc::string::String {
346        "/bilibili.app.playurl.v1.Dialog".into()
347    }
348}
349#[derive(Clone, PartialEq, ::prost::Message)]
351pub struct DolbyItem {
352    #[prost(enumeration = "dolby_item::Type", tag = "1")]
354    pub r#type: i32,
355    #[prost(message, repeated, tag = "2")]
357    pub audio: ::prost::alloc::vec::Vec<DashItem>,
358}
359pub mod dolby_item {
361    #[derive(
363        Clone,
364        Copy,
365        Debug,
366        PartialEq,
367        Eq,
368        Hash,
369        PartialOrd,
370        Ord,
371        ::prost::Enumeration
372    )]
373    #[repr(i32)]
374    pub enum Type {
375        None = 0,
377        Common = 1,
379        Atmos = 2,
381    }
382    impl Type {
383        pub fn as_str_name(&self) -> &'static str {
388            match self {
389                Self::None => "NONE",
390                Self::Common => "COMMON",
391                Self::Atmos => "ATMOS",
392            }
393        }
394        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
396            match value {
397                "NONE" => Some(Self::None),
398                "COMMON" => Some(Self::Common),
399                "ATMOS" => Some(Self::Atmos),
400                _ => None,
401            }
402        }
403    }
404}
405impl ::prost::Name for DolbyItem {
406    const NAME: &'static str = "DolbyItem";
407    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
408    fn full_name() -> ::prost::alloc::string::String {
409        "bilibili.app.playurl.v1.DolbyItem".into()
410    }
411    fn type_url() -> ::prost::alloc::string::String {
412        "/bilibili.app.playurl.v1.DolbyItem".into()
413    }
414}
415#[derive(Clone, PartialEq, ::prost::Message)]
417pub struct Event {
418    #[prost(message, optional, tag = "1")]
420    pub shake: ::core::option::Option<Shake>,
421}
422impl ::prost::Name for Event {
423    const NAME: &'static str = "Event";
424    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
425    fn full_name() -> ::prost::alloc::string::String {
426        "bilibili.app.playurl.v1.Event".into()
427    }
428    fn type_url() -> ::prost::alloc::string::String {
429        "/bilibili.app.playurl.v1.Event".into()
430    }
431}
432#[derive(Clone, PartialEq, ::prost::Message)]
434pub struct ExtraContent {
435    #[prost(string, tag = "1")]
437    pub disabled_reason: ::prost::alloc::string::String,
438    #[prost(int64, tag = "2")]
440    pub disabled_code: i64,
441}
442impl ::prost::Name for ExtraContent {
443    const NAME: &'static str = "ExtraContent";
444    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
445    fn full_name() -> ::prost::alloc::string::String {
446        "bilibili.app.playurl.v1.ExtraContent".into()
447    }
448    fn type_url() -> ::prost::alloc::string::String {
449        "/bilibili.app.playurl.v1.ExtraContent".into()
450    }
451}
452#[derive(Clone, Copy, PartialEq, ::prost::Message)]
454pub struct FieldValue {
455    #[prost(oneof = "field_value::Value", tags = "1")]
457    pub value: ::core::option::Option<field_value::Value>,
458}
459pub mod field_value {
461    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
463    pub enum Value {
464        #[prost(bool, tag = "1")]
466        Switch(bool),
467    }
468}
469impl ::prost::Name for FieldValue {
470    const NAME: &'static str = "FieldValue";
471    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
472    fn full_name() -> ::prost::alloc::string::String {
473        "bilibili.app.playurl.v1.FieldValue".into()
474    }
475    fn type_url() -> ::prost::alloc::string::String {
476        "/bilibili.app.playurl.v1.FieldValue".into()
477    }
478}
479#[derive(Clone, PartialEq, ::prost::Message)]
481pub struct FormatDescription {
482    #[prost(int32, tag = "1")]
484    pub quality: i32,
485    #[prost(string, tag = "2")]
487    pub format: ::prost::alloc::string::String,
488    #[prost(string, tag = "3")]
490    pub description: ::prost::alloc::string::String,
491    #[prost(string, tag = "4")]
493    pub new_description: ::prost::alloc::string::String,
494    #[prost(string, tag = "5")]
496    pub display_desc: ::prost::alloc::string::String,
497    #[prost(string, tag = "6")]
499    pub superscript: ::prost::alloc::string::String,
500}
501impl ::prost::Name for FormatDescription {
502    const NAME: &'static str = "FormatDescription";
503    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
504    fn full_name() -> ::prost::alloc::string::String {
505        "bilibili.app.playurl.v1.FormatDescription".into()
506    }
507    fn type_url() -> ::prost::alloc::string::String {
508        "/bilibili.app.playurl.v1.FormatDescription".into()
509    }
510}
511#[derive(Clone, Copy, PartialEq, ::prost::Message)]
513pub struct Glance {
514    #[prost(bool, tag = "1")]
516    pub can_watch: bool,
517    #[prost(int64, tag = "2")]
519    pub times: i64,
520    #[prost(int64, tag = "3")]
522    pub duration: i64,
523}
524impl ::prost::Name for Glance {
525    const NAME: &'static str = "Glance";
526    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
527    fn full_name() -> ::prost::alloc::string::String {
528        "bilibili.app.playurl.v1.Glance".into()
529    }
530    fn type_url() -> ::prost::alloc::string::String {
531        "/bilibili.app.playurl.v1.Glance".into()
532    }
533}
534#[derive(Clone, PartialEq, ::prost::Message)]
536pub struct LossLessItem {
537    #[prost(bool, tag = "1")]
539    pub is_lossless_audio: bool,
540    #[prost(message, optional, tag = "2")]
542    pub audio: ::core::option::Option<DashItem>,
543    #[prost(bool, tag = "3")]
545    pub need_vip: bool,
546}
547impl ::prost::Name for LossLessItem {
548    const NAME: &'static str = "LossLessItem";
549    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
550    fn full_name() -> ::prost::alloc::string::String {
551        "bilibili.app.playurl.v1.LossLessItem".into()
552    }
553    fn type_url() -> ::prost::alloc::string::String {
554        "/bilibili.app.playurl.v1.LossLessItem".into()
555    }
556}
557#[derive(Clone, PartialEq, ::prost::Message)]
559pub struct MultiDashVideo {
560    #[prost(message, repeated, tag = "1")]
562    pub dash_videos: ::prost::alloc::vec::Vec<DashVideo>,
563}
564impl ::prost::Name for MultiDashVideo {
565    const NAME: &'static str = "MultiDashVideo";
566    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
567    fn full_name() -> ::prost::alloc::string::String {
568        "bilibili.app.playurl.v1.MultiDashVideo".into()
569    }
570    fn type_url() -> ::prost::alloc::string::String {
571        "/bilibili.app.playurl.v1.MultiDashVideo".into()
572    }
573}
574#[derive(Clone, Copy, PartialEq, ::prost::Message)]
576pub struct PlayAbilityConf {
577    #[prost(message, optional, tag = "1")]
579    pub background_play_conf: ::core::option::Option<CloudConf>,
580    #[prost(message, optional, tag = "2")]
582    pub flip_conf: ::core::option::Option<CloudConf>,
583    #[prost(message, optional, tag = "3")]
585    pub cast_conf: ::core::option::Option<CloudConf>,
586    #[prost(message, optional, tag = "4")]
588    pub feedback_conf: ::core::option::Option<CloudConf>,
589    #[prost(message, optional, tag = "5")]
591    pub subtitle_conf: ::core::option::Option<CloudConf>,
592    #[prost(message, optional, tag = "6")]
594    pub playback_rate_conf: ::core::option::Option<CloudConf>,
595    #[prost(message, optional, tag = "7")]
597    pub time_up_conf: ::core::option::Option<CloudConf>,
598    #[prost(message, optional, tag = "8")]
600    pub playback_mode_conf: ::core::option::Option<CloudConf>,
601    #[prost(message, optional, tag = "9")]
603    pub scale_mode_conf: ::core::option::Option<CloudConf>,
604    #[prost(message, optional, tag = "10")]
606    pub like_conf: ::core::option::Option<CloudConf>,
607    #[prost(message, optional, tag = "11")]
609    pub dislike_conf: ::core::option::Option<CloudConf>,
610    #[prost(message, optional, tag = "12")]
612    pub coin_conf: ::core::option::Option<CloudConf>,
613    #[prost(message, optional, tag = "13")]
615    pub elec_conf: ::core::option::Option<CloudConf>,
616    #[prost(message, optional, tag = "14")]
618    pub share_conf: ::core::option::Option<CloudConf>,
619    #[prost(message, optional, tag = "15")]
621    pub screen_shot_conf: ::core::option::Option<CloudConf>,
622    #[prost(message, optional, tag = "16")]
624    pub lock_screen_conf: ::core::option::Option<CloudConf>,
625    #[prost(message, optional, tag = "17")]
627    pub recommend_conf: ::core::option::Option<CloudConf>,
628    #[prost(message, optional, tag = "18")]
630    pub playback_speed_conf: ::core::option::Option<CloudConf>,
631    #[prost(message, optional, tag = "19")]
633    pub definition_conf: ::core::option::Option<CloudConf>,
634    #[prost(message, optional, tag = "20")]
636    pub selections_conf: ::core::option::Option<CloudConf>,
637    #[prost(message, optional, tag = "21")]
639    pub next_conf: ::core::option::Option<CloudConf>,
640    #[prost(message, optional, tag = "22")]
642    pub edit_dm_conf: ::core::option::Option<CloudConf>,
643    #[prost(message, optional, tag = "23")]
645    pub small_window_conf: ::core::option::Option<CloudConf>,
646    #[prost(message, optional, tag = "24")]
648    pub shake_conf: ::core::option::Option<CloudConf>,
649    #[prost(message, optional, tag = "25")]
651    pub outer_dm_conf: ::core::option::Option<CloudConf>,
652    #[prost(message, optional, tag = "26")]
654    pub inner_dm_conf: ::core::option::Option<CloudConf>,
655    #[prost(message, optional, tag = "27")]
657    pub panorama_conf: ::core::option::Option<CloudConf>,
658    #[prost(message, optional, tag = "28")]
660    pub dolby_conf: ::core::option::Option<CloudConf>,
661    #[prost(message, optional, tag = "29")]
663    pub color_filter_conf: ::core::option::Option<CloudConf>,
664    #[prost(message, optional, tag = "30")]
666    pub loss_less_conf: ::core::option::Option<CloudConf>,
667}
668impl ::prost::Name for PlayAbilityConf {
669    const NAME: &'static str = "PlayAbilityConf";
670    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
671    fn full_name() -> ::prost::alloc::string::String {
672        "bilibili.app.playurl.v1.PlayAbilityConf".into()
673    }
674    fn type_url() -> ::prost::alloc::string::String {
675        "/bilibili.app.playurl.v1.PlayAbilityConf".into()
676    }
677}
678#[derive(Clone, Copy, PartialEq, ::prost::Message)]
680pub struct PlayArc {
681    #[prost(bool, tag = "1")]
683    pub is_preview: bool,
684}
685impl ::prost::Name for PlayArc {
686    const NAME: &'static str = "PlayArc";
687    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
688    fn full_name() -> ::prost::alloc::string::String {
689        "bilibili.app.playurl.v1.PlayArc".into()
690    }
691    fn type_url() -> ::prost::alloc::string::String {
692        "/bilibili.app.playurl.v1.PlayArc".into()
693    }
694}
695#[derive(Clone, PartialEq, ::prost::Message)]
697pub struct PlayArcConf {
698    #[prost(message, optional, tag = "1")]
700    pub background_play_conf: ::core::option::Option<ArcConf>,
701    #[prost(message, optional, tag = "2")]
703    pub flip_conf: ::core::option::Option<ArcConf>,
704    #[prost(message, optional, tag = "3")]
706    pub cast_conf: ::core::option::Option<ArcConf>,
707    #[prost(message, optional, tag = "4")]
709    pub feedback_conf: ::core::option::Option<ArcConf>,
710    #[prost(message, optional, tag = "5")]
712    pub subtitle_conf: ::core::option::Option<ArcConf>,
713    #[prost(message, optional, tag = "6")]
715    pub playback_rate_conf: ::core::option::Option<ArcConf>,
716    #[prost(message, optional, tag = "7")]
718    pub time_up_conf: ::core::option::Option<ArcConf>,
719    #[prost(message, optional, tag = "8")]
721    pub playback_mode_conf: ::core::option::Option<ArcConf>,
722    #[prost(message, optional, tag = "9")]
724    pub scale_mode_conf: ::core::option::Option<ArcConf>,
725    #[prost(message, optional, tag = "10")]
727    pub like_conf: ::core::option::Option<ArcConf>,
728    #[prost(message, optional, tag = "11")]
730    pub dislike_conf: ::core::option::Option<ArcConf>,
731    #[prost(message, optional, tag = "12")]
733    pub coin_conf: ::core::option::Option<ArcConf>,
734    #[prost(message, optional, tag = "13")]
736    pub elec_conf: ::core::option::Option<ArcConf>,
737    #[prost(message, optional, tag = "14")]
739    pub share_conf: ::core::option::Option<ArcConf>,
740    #[prost(message, optional, tag = "15")]
742    pub screen_shot_conf: ::core::option::Option<ArcConf>,
743    #[prost(message, optional, tag = "16")]
745    pub lock_screen_conf: ::core::option::Option<ArcConf>,
746    #[prost(message, optional, tag = "17")]
748    pub recommend_conf: ::core::option::Option<ArcConf>,
749    #[prost(message, optional, tag = "18")]
751    pub playback_speed_conf: ::core::option::Option<ArcConf>,
752    #[prost(message, optional, tag = "19")]
754    pub definition_conf: ::core::option::Option<ArcConf>,
755    #[prost(message, optional, tag = "20")]
757    pub selections_conf: ::core::option::Option<ArcConf>,
758    #[prost(message, optional, tag = "21")]
760    pub next_conf: ::core::option::Option<ArcConf>,
761    #[prost(message, optional, tag = "22")]
763    pub edit_dm_conf: ::core::option::Option<ArcConf>,
764    #[prost(message, optional, tag = "23")]
766    pub small_window_conf: ::core::option::Option<ArcConf>,
767    #[prost(message, optional, tag = "24")]
769    pub shake_conf: ::core::option::Option<ArcConf>,
770    #[prost(message, optional, tag = "25")]
772    pub outer_dm_conf: ::core::option::Option<ArcConf>,
773    #[prost(message, optional, tag = "26")]
775    pub inner_dm_conf: ::core::option::Option<ArcConf>,
776    #[prost(message, optional, tag = "27")]
778    pub panorama_conf: ::core::option::Option<ArcConf>,
779    #[prost(message, optional, tag = "28")]
781    pub dolby_conf: ::core::option::Option<ArcConf>,
782    #[prost(message, optional, tag = "29")]
784    pub screen_recording_conf: ::core::option::Option<ArcConf>,
785    #[prost(message, optional, tag = "30")]
787    pub color_filter_conf: ::core::option::Option<ArcConf>,
788    #[prost(message, optional, tag = "31")]
790    pub loss_less_conf: ::core::option::Option<ArcConf>,
791    #[prost(message, optional, tag = "32")]
793    pub system_record_conf: ::core::option::Option<ArcConf>,
794}
795impl ::prost::Name for PlayArcConf {
796    const NAME: &'static str = "PlayArcConf";
797    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
798    fn full_name() -> ::prost::alloc::string::String {
799        "bilibili.app.playurl.v1.PlayArcConf".into()
800    }
801    fn type_url() -> ::prost::alloc::string::String {
802        "/bilibili.app.playurl.v1.PlayArcConf".into()
803    }
804}
805#[derive(Clone, Copy, PartialEq, ::prost::Message)]
807pub struct PlayConfEditReply {}
808impl ::prost::Name for PlayConfEditReply {
809    const NAME: &'static str = "PlayConfEditReply";
810    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
811    fn full_name() -> ::prost::alloc::string::String {
812        "bilibili.app.playurl.v1.PlayConfEditReply".into()
813    }
814    fn type_url() -> ::prost::alloc::string::String {
815        "/bilibili.app.playurl.v1.PlayConfEditReply".into()
816    }
817}
818#[derive(Clone, PartialEq, ::prost::Message)]
820pub struct PlayConfEditReq {
821    #[prost(message, repeated, tag = "1")]
823    pub play_conf: ::prost::alloc::vec::Vec<PlayConfState>,
824}
825impl ::prost::Name for PlayConfEditReq {
826    const NAME: &'static str = "PlayConfEditReq";
827    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
828    fn full_name() -> ::prost::alloc::string::String {
829        "bilibili.app.playurl.v1.PlayConfEditReq".into()
830    }
831    fn type_url() -> ::prost::alloc::string::String {
832        "/bilibili.app.playurl.v1.PlayConfEditReq".into()
833    }
834}
835#[derive(Clone, Copy, PartialEq, ::prost::Message)]
837pub struct PlayConfReply {
838    #[prost(message, optional, tag = "1")]
840    pub play_conf: ::core::option::Option<PlayAbilityConf>,
841}
842impl ::prost::Name for PlayConfReply {
843    const NAME: &'static str = "PlayConfReply";
844    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
845    fn full_name() -> ::prost::alloc::string::String {
846        "bilibili.app.playurl.v1.PlayConfReply".into()
847    }
848    fn type_url() -> ::prost::alloc::string::String {
849        "/bilibili.app.playurl.v1.PlayConfReply".into()
850    }
851}
852#[derive(Clone, Copy, PartialEq, ::prost::Message)]
854pub struct PlayConfReq {}
855impl ::prost::Name for PlayConfReq {
856    const NAME: &'static str = "PlayConfReq";
857    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
858    fn full_name() -> ::prost::alloc::string::String {
859        "bilibili.app.playurl.v1.PlayConfReq".into()
860    }
861    fn type_url() -> ::prost::alloc::string::String {
862        "/bilibili.app.playurl.v1.PlayConfReq".into()
863    }
864}
865#[derive(Clone, Copy, PartialEq, ::prost::Message)]
867pub struct PlayConfState {
868    #[prost(enumeration = "ConfType", tag = "1")]
870    pub conf_type: i32,
871    #[prost(bool, tag = "2")]
873    pub show: bool,
874    #[prost(message, optional, tag = "3")]
876    pub field_value: ::core::option::Option<FieldValue>,
877    #[prost(message, optional, tag = "4")]
879    pub conf_value: ::core::option::Option<ConfValue>,
880}
881impl ::prost::Name for PlayConfState {
882    const NAME: &'static str = "PlayConfState";
883    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
884    fn full_name() -> ::prost::alloc::string::String {
885        "bilibili.app.playurl.v1.PlayConfState".into()
886    }
887    fn type_url() -> ::prost::alloc::string::String {
888        "/bilibili.app.playurl.v1.PlayConfState".into()
889    }
890}
891#[derive(Clone, PartialEq, ::prost::Message)]
893pub struct PlayLimit {
894    #[prost(enumeration = "PlayLimitCode", tag = "1")]
896    pub code: i32,
897    #[prost(string, tag = "2")]
899    pub message: ::prost::alloc::string::String,
900    #[prost(string, tag = "3")]
902    pub sub_message: ::prost::alloc::string::String,
903    #[prost(message, optional, tag = "4")]
905    pub button: ::core::option::Option<ButtonStyle>,
906}
907impl ::prost::Name for PlayLimit {
908    const NAME: &'static str = "PlayLimit";
909    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
910    fn full_name() -> ::prost::alloc::string::String {
911        "bilibili.app.playurl.v1.PlayLimit".into()
912    }
913    fn type_url() -> ::prost::alloc::string::String {
914        "/bilibili.app.playurl.v1.PlayLimit".into()
915    }
916}
917#[derive(Clone, PartialEq, ::prost::Message)]
919pub struct PlayUrlReply {
920    #[prost(int32, tag = "1")]
922    pub quality: i32,
923    #[prost(string, tag = "2")]
925    pub format: ::prost::alloc::string::String,
926    #[prost(int64, tag = "3")]
928    pub timelength: i64,
929    #[prost(int32, tag = "4")]
931    pub video_codecid: i32,
932    #[prost(int32, tag = "5")]
934    pub fnver: i32,
935    #[prost(int32, tag = "6")]
937    pub fnval: i32,
938    #[prost(bool, tag = "7")]
940    pub video_project: bool,
941    #[prost(message, repeated, tag = "8")]
943    pub durl: ::prost::alloc::vec::Vec<ResponseUrl>,
944    #[prost(message, optional, tag = "9")]
946    pub dash: ::core::option::Option<ResponseDash>,
947    #[prost(int32, tag = "10")]
949    pub no_rexcode: i32,
950    #[prost(message, optional, tag = "11")]
952    pub upgrade_limit: ::core::option::Option<UpgradeLimit>,
953    #[prost(message, repeated, tag = "12")]
955    pub support_formats: ::prost::alloc::vec::Vec<FormatDescription>,
956    #[prost(enumeration = "VideoType", tag = "13")]
958    pub r#type: i32,
959    #[prost(message, optional, tag = "14")]
961    pub vip_risk: ::core::option::Option<VipRisk>,
962}
963impl ::prost::Name for PlayUrlReply {
964    const NAME: &'static str = "PlayURLReply";
965    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
966    fn full_name() -> ::prost::alloc::string::String {
967        "bilibili.app.playurl.v1.PlayURLReply".into()
968    }
969    fn type_url() -> ::prost::alloc::string::String {
970        "/bilibili.app.playurl.v1.PlayURLReply".into()
971    }
972}
973#[derive(Clone, PartialEq, ::prost::Message)]
975pub struct PlayUrlReq {
976    #[prost(int64, tag = "1")]
978    pub aid: i64,
979    #[prost(int64, tag = "2")]
981    pub cid: i64,
982    #[prost(int64, tag = "3")]
984    pub qn: i64,
985    #[prost(int32, tag = "4")]
987    pub fnver: i32,
988    #[prost(int32, tag = "5")]
990    pub fnval: i32,
991    #[prost(int32, tag = "6")]
993    pub download: i32,
994    #[prost(int32, tag = "7")]
996    pub force_host: i32,
997    #[prost(bool, tag = "8")]
999    pub fourk: bool,
1000    #[prost(string, tag = "9")]
1002    pub spmid: ::prost::alloc::string::String,
1003    #[prost(string, tag = "10")]
1005    pub from_spmid: ::prost::alloc::string::String,
1006}
1007impl ::prost::Name for PlayUrlReq {
1008    const NAME: &'static str = "PlayURLReq";
1009    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
1010    fn full_name() -> ::prost::alloc::string::String {
1011        "bilibili.app.playurl.v1.PlayURLReq".into()
1012    }
1013    fn type_url() -> ::prost::alloc::string::String {
1014        "/bilibili.app.playurl.v1.PlayURLReq".into()
1015    }
1016}
1017#[derive(Clone, PartialEq, ::prost::Message)]
1019pub struct PlayViewReply {
1020    #[prost(message, optional, tag = "1")]
1022    pub video_info: ::core::option::Option<VideoInfo>,
1023    #[prost(message, optional, tag = "2")]
1025    pub play_conf: ::core::option::Option<PlayAbilityConf>,
1026    #[prost(message, optional, tag = "3")]
1028    pub upgrade_limit: ::core::option::Option<UpgradeLimit>,
1029    #[prost(message, optional, tag = "4")]
1031    pub chronos: ::core::option::Option<Chronos>,
1032    #[prost(message, optional, tag = "5")]
1034    pub play_arc: ::core::option::Option<PlayArcConf>,
1035    #[prost(message, optional, tag = "6")]
1037    pub event: ::core::option::Option<Event>,
1038    #[prost(message, optional, tag = "7")]
1040    pub ab: ::core::option::Option<Ab>,
1041    #[prost(message, optional, tag = "8")]
1043    pub play_limit: ::core::option::Option<PlayLimit>,
1044    #[prost(message, optional, tag = "9")]
1046    pub view_info: ::core::option::Option<ViewInfo>,
1047    #[prost(message, optional, tag = "10")]
1049    pub arc: ::core::option::Option<PlayArc>,
1050}
1051impl ::prost::Name for PlayViewReply {
1052    const NAME: &'static str = "PlayViewReply";
1053    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
1054    fn full_name() -> ::prost::alloc::string::String {
1055        "bilibili.app.playurl.v1.PlayViewReply".into()
1056    }
1057    fn type_url() -> ::prost::alloc::string::String {
1058        "/bilibili.app.playurl.v1.PlayViewReply".into()
1059    }
1060}
1061#[derive(Clone, PartialEq, ::prost::Message)]
1063pub struct PlayViewReq {
1064    #[prost(int64, tag = "1")]
1066    pub aid: i64,
1067    #[prost(int64, tag = "2")]
1069    pub cid: i64,
1070    #[prost(int64, tag = "3")]
1072    pub qn: i64,
1073    #[prost(int32, tag = "4")]
1075    pub fnver: i32,
1076    #[prost(int32, tag = "5")]
1078    pub fnval: i32,
1079    #[prost(int32, tag = "6")]
1081    pub download: i32,
1082    #[prost(int32, tag = "7")]
1084    pub force_host: i32,
1085    #[prost(bool, tag = "8")]
1087    pub fourk: bool,
1088    #[prost(string, tag = "9")]
1090    pub spmid: ::prost::alloc::string::String,
1091    #[prost(string, tag = "10")]
1093    pub from_spmid: ::prost::alloc::string::String,
1094    #[prost(int32, tag = "11")]
1096    pub teenagers_mode: i32,
1097    #[prost(enumeration = "CodeType", tag = "12")]
1099    pub prefer_codec_type: i32,
1100    #[prost(enumeration = "Business", tag = "13")]
1102    pub business: i32,
1103    #[prost(int64, tag = "14")]
1105    pub voice_balance: i64,
1106}
1107impl ::prost::Name for PlayViewReq {
1108    const NAME: &'static str = "PlayViewReq";
1109    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
1110    fn full_name() -> ::prost::alloc::string::String {
1111        "bilibili.app.playurl.v1.PlayViewReq".into()
1112    }
1113    fn type_url() -> ::prost::alloc::string::String {
1114        "/bilibili.app.playurl.v1.PlayViewReq".into()
1115    }
1116}
1117#[derive(Clone, PartialEq, ::prost::Message)]
1119pub struct ProjectReply {
1120    #[prost(message, optional, tag = "1")]
1122    pub project: ::core::option::Option<PlayUrlReply>,
1123}
1124impl ::prost::Name for ProjectReply {
1125    const NAME: &'static str = "ProjectReply";
1126    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
1127    fn full_name() -> ::prost::alloc::string::String {
1128        "bilibili.app.playurl.v1.ProjectReply".into()
1129    }
1130    fn type_url() -> ::prost::alloc::string::String {
1131        "/bilibili.app.playurl.v1.ProjectReply".into()
1132    }
1133}
1134#[derive(Clone, PartialEq, ::prost::Message)]
1136pub struct ProjectReq {
1137    #[prost(int64, tag = "1")]
1139    pub aid: i64,
1140    #[prost(int64, tag = "2")]
1142    pub cid: i64,
1143    #[prost(int64, tag = "3")]
1145    pub qn: i64,
1146    #[prost(int32, tag = "4")]
1148    pub fnver: i32,
1149    #[prost(int32, tag = "5")]
1151    pub fnval: i32,
1152    #[prost(int32, tag = "6")]
1154    pub download: i32,
1155    #[prost(int32, tag = "7")]
1157    pub force_host: i32,
1158    #[prost(bool, tag = "8")]
1160    pub fourk: bool,
1161    #[prost(string, tag = "9")]
1163    pub spmid: ::prost::alloc::string::String,
1164    #[prost(string, tag = "10")]
1166    pub from_spmid: ::prost::alloc::string::String,
1167    #[prost(int32, tag = "11")]
1169    pub protocol: i32,
1170    #[prost(int32, tag = "12")]
1172    pub device_type: i32,
1173}
1174impl ::prost::Name for ProjectReq {
1175    const NAME: &'static str = "ProjectReq";
1176    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
1177    fn full_name() -> ::prost::alloc::string::String {
1178        "bilibili.app.playurl.v1.ProjectReq".into()
1179    }
1180    fn type_url() -> ::prost::alloc::string::String {
1181        "/bilibili.app.playurl.v1.ProjectReq".into()
1182    }
1183}
1184#[derive(Clone, PartialEq, ::prost::Message)]
1186pub struct PromptBar {
1187    #[prost(message, optional, tag = "1")]
1189    pub title: ::core::option::Option<TextInfo>,
1190    #[prost(message, optional, tag = "2")]
1192    pub sub_title: ::core::option::Option<TextInfo>,
1193    #[prost(string, tag = "3")]
1195    pub sub_title_icon: ::prost::alloc::string::String,
1196    #[prost(string, tag = "4")]
1198    pub bg_image: ::prost::alloc::string::String,
1199    #[prost(message, repeated, tag = "5")]
1201    pub button: ::prost::alloc::vec::Vec<ButtonInfo>,
1202    #[prost(message, optional, tag = "6")]
1204    pub report: ::core::option::Option<Report>,
1205}
1206impl ::prost::Name for PromptBar {
1207    const NAME: &'static str = "PromptBar";
1208    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
1209    fn full_name() -> ::prost::alloc::string::String {
1210        "bilibili.app.playurl.v1.PromptBar".into()
1211    }
1212    fn type_url() -> ::prost::alloc::string::String {
1213        "/bilibili.app.playurl.v1.PromptBar".into()
1214    }
1215}
1216#[derive(Clone, PartialEq, ::prost::Message)]
1218pub struct Report {
1219    #[prost(string, tag = "1")]
1221    pub show_event_id: ::prost::alloc::string::String,
1222    #[prost(string, tag = "2")]
1224    pub click_event_id: ::prost::alloc::string::String,
1225    #[prost(string, tag = "3")]
1227    pub extends: ::prost::alloc::string::String,
1228}
1229impl ::prost::Name for Report {
1230    const NAME: &'static str = "Report";
1231    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
1232    fn full_name() -> ::prost::alloc::string::String {
1233        "bilibili.app.playurl.v1.Report".into()
1234    }
1235    fn type_url() -> ::prost::alloc::string::String {
1236        "/bilibili.app.playurl.v1.Report".into()
1237    }
1238}
1239#[derive(Clone, PartialEq, ::prost::Message)]
1241pub struct ResponseDash {
1242    #[prost(message, repeated, tag = "1")]
1244    pub video: ::prost::alloc::vec::Vec<DashItem>,
1245    #[prost(message, repeated, tag = "2")]
1247    pub audio: ::prost::alloc::vec::Vec<DashItem>,
1248}
1249impl ::prost::Name for ResponseDash {
1250    const NAME: &'static str = "ResponseDash";
1251    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
1252    fn full_name() -> ::prost::alloc::string::String {
1253        "bilibili.app.playurl.v1.ResponseDash".into()
1254    }
1255    fn type_url() -> ::prost::alloc::string::String {
1256        "/bilibili.app.playurl.v1.ResponseDash".into()
1257    }
1258}
1259#[derive(Clone, PartialEq, ::prost::Message)]
1261pub struct ResponseUrl {
1262    #[prost(int32, tag = "1")]
1264    pub order: i32,
1265    #[prost(int64, tag = "2")]
1267    pub length: i64,
1268    #[prost(int64, tag = "3")]
1270    pub size: i64,
1271    #[prost(string, tag = "4")]
1273    pub url: ::prost::alloc::string::String,
1274    #[prost(string, repeated, tag = "5")]
1276    pub backup_url: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1277    #[prost(string, tag = "6")]
1279    pub md5: ::prost::alloc::string::String,
1280    #[prost(int32, tag = "7")]
1282    pub quality: i32,
1283}
1284impl ::prost::Name for ResponseUrl {
1285    const NAME: &'static str = "ResponseUrl";
1286    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
1287    fn full_name() -> ::prost::alloc::string::String {
1288        "bilibili.app.playurl.v1.ResponseUrl".into()
1289    }
1290    fn type_url() -> ::prost::alloc::string::String {
1291        "/bilibili.app.playurl.v1.ResponseUrl".into()
1292    }
1293}
1294#[derive(Clone, PartialEq, ::prost::Message)]
1296pub struct Scheme {
1297    #[prost(enumeration = "scheme::ActionType", tag = "1")]
1299    pub action_type: i32,
1300    #[prost(string, tag = "2")]
1302    pub toast: ::prost::alloc::string::String,
1303}
1304pub mod scheme {
1306    #[derive(
1308        Clone,
1309        Copy,
1310        Debug,
1311        PartialEq,
1312        Eq,
1313        Hash,
1314        PartialOrd,
1315        Ord,
1316        ::prost::Enumeration
1317    )]
1318    #[repr(i32)]
1319    pub enum ActionType {
1320        UnknownActionType = 0,
1322        ShowToast = 1,
1324    }
1325    impl ActionType {
1326        pub fn as_str_name(&self) -> &'static str {
1331            match self {
1332                Self::UnknownActionType => "UNKNOWN_ActionType",
1333                Self::ShowToast => "SHOW_TOAST",
1334            }
1335        }
1336        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1338            match value {
1339                "UNKNOWN_ActionType" => Some(Self::UnknownActionType),
1340                "SHOW_TOAST" => Some(Self::ShowToast),
1341                _ => None,
1342            }
1343        }
1344    }
1345}
1346impl ::prost::Name for Scheme {
1347    const NAME: &'static str = "Scheme";
1348    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
1349    fn full_name() -> ::prost::alloc::string::String {
1350        "bilibili.app.playurl.v1.Scheme".into()
1351    }
1352    fn type_url() -> ::prost::alloc::string::String {
1353        "/bilibili.app.playurl.v1.Scheme".into()
1354    }
1355}
1356#[derive(Clone, PartialEq, ::prost::Message)]
1358pub struct SegmentVideo {
1359    #[prost(message, repeated, tag = "1")]
1361    pub segment: ::prost::alloc::vec::Vec<ResponseUrl>,
1362}
1363impl ::prost::Name for SegmentVideo {
1364    const NAME: &'static str = "SegmentVideo";
1365    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
1366    fn full_name() -> ::prost::alloc::string::String {
1367        "bilibili.app.playurl.v1.SegmentVideo".into()
1368    }
1369    fn type_url() -> ::prost::alloc::string::String {
1370        "/bilibili.app.playurl.v1.SegmentVideo".into()
1371    }
1372}
1373#[derive(Clone, PartialEq, ::prost::Message)]
1375pub struct Shake {
1376    #[prost(string, tag = "1")]
1378    pub file: ::prost::alloc::string::String,
1379}
1380impl ::prost::Name for Shake {
1381    const NAME: &'static str = "Shake";
1382    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
1383    fn full_name() -> ::prost::alloc::string::String {
1384        "bilibili.app.playurl.v1.Shake".into()
1385    }
1386    fn type_url() -> ::prost::alloc::string::String {
1387        "/bilibili.app.playurl.v1.Shake".into()
1388    }
1389}
1390#[derive(Clone, PartialEq, ::prost::Message)]
1392pub struct Stream {
1393    #[prost(message, optional, tag = "1")]
1395    pub stream_info: ::core::option::Option<StreamInfo>,
1396    #[prost(oneof = "stream::Content", tags = "2, 3, 4")]
1398    pub content: ::core::option::Option<stream::Content>,
1399}
1400pub mod stream {
1402    #[derive(Clone, PartialEq, ::prost::Oneof)]
1404    pub enum Content {
1405        #[prost(message, tag = "2")]
1407        DashVideo(super::DashVideo),
1408        #[prost(message, tag = "3")]
1410        SegmentVideo(super::SegmentVideo),
1411        #[prost(message, tag = "4")]
1413        MultiDashVideo(super::MultiDashVideo),
1414    }
1415}
1416impl ::prost::Name for Stream {
1417    const NAME: &'static str = "Stream";
1418    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
1419    fn full_name() -> ::prost::alloc::string::String {
1420        "bilibili.app.playurl.v1.Stream".into()
1421    }
1422    fn type_url() -> ::prost::alloc::string::String {
1423        "/bilibili.app.playurl.v1.Stream".into()
1424    }
1425}
1426#[derive(Clone, PartialEq, ::prost::Message)]
1428pub struct StreamInfo {
1429    #[prost(int32, tag = "1")]
1431    pub quality: i32,
1432    #[prost(string, tag = "2")]
1434    pub format: ::prost::alloc::string::String,
1435    #[prost(string, tag = "3")]
1437    pub description: ::prost::alloc::string::String,
1438    #[prost(enumeration = "PlayErr", tag = "4")]
1440    pub err_code: i32,
1441    #[prost(message, optional, tag = "5")]
1443    pub limit: ::core::option::Option<StreamLimit>,
1444    #[prost(bool, tag = "6")]
1446    pub need_vip: bool,
1447    #[prost(bool, tag = "7")]
1449    pub need_login: bool,
1450    #[prost(bool, tag = "8")]
1452    pub intact: bool,
1453    #[prost(bool, tag = "9")]
1455    pub no_rexcode: bool,
1456    #[prost(int64, tag = "10")]
1458    pub attribute: i64,
1459    #[prost(string, tag = "11")]
1461    pub new_description: ::prost::alloc::string::String,
1462    #[prost(string, tag = "12")]
1464    pub display_desc: ::prost::alloc::string::String,
1465    #[prost(string, tag = "13")]
1467    pub superscript: ::prost::alloc::string::String,
1468    #[prost(bool, tag = "14")]
1470    pub vip_free: bool,
1471    #[prost(string, tag = "15")]
1473    pub subtitle: ::prost::alloc::string::String,
1474    #[prost(message, optional, tag = "16")]
1476    pub scheme: ::core::option::Option<Scheme>,
1477    #[prost(bool, tag = "17")]
1479    pub support_drm: bool,
1480    #[prost(bool, tag = "18")]
1482    pub has_preview: bool,
1483    #[prost(int64, tag = "19")]
1485    pub extend_attribute: i64,
1486}
1487impl ::prost::Name for StreamInfo {
1488    const NAME: &'static str = "StreamInfo";
1489    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
1490    fn full_name() -> ::prost::alloc::string::String {
1491        "bilibili.app.playurl.v1.StreamInfo".into()
1492    }
1493    fn type_url() -> ::prost::alloc::string::String {
1494        "/bilibili.app.playurl.v1.StreamInfo".into()
1495    }
1496}
1497#[derive(Clone, PartialEq, ::prost::Message)]
1499pub struct StreamLimit {
1500    #[prost(string, tag = "1")]
1502    pub title: ::prost::alloc::string::String,
1503    #[prost(string, tag = "2")]
1505    pub uri: ::prost::alloc::string::String,
1506    #[prost(string, tag = "3")]
1508    pub msg: ::prost::alloc::string::String,
1509}
1510impl ::prost::Name for StreamLimit {
1511    const NAME: &'static str = "StreamLimit";
1512    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
1513    fn full_name() -> ::prost::alloc::string::String {
1514        "bilibili.app.playurl.v1.StreamLimit".into()
1515    }
1516    fn type_url() -> ::prost::alloc::string::String {
1517        "/bilibili.app.playurl.v1.StreamLimit".into()
1518    }
1519}
1520#[derive(Clone, PartialEq, ::prost::Message)]
1522pub struct TextInfo {
1523    #[prost(string, tag = "1")]
1525    pub text: ::prost::alloc::string::String,
1526    #[prost(string, tag = "2")]
1528    pub text_color: ::prost::alloc::string::String,
1529    #[prost(string, tag = "3")]
1531    pub text_color_night: ::prost::alloc::string::String,
1532}
1533impl ::prost::Name for TextInfo {
1534    const NAME: &'static str = "TextInfo";
1535    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
1536    fn full_name() -> ::prost::alloc::string::String {
1537        "bilibili.app.playurl.v1.TextInfo".into()
1538    }
1539    fn type_url() -> ::prost::alloc::string::String {
1540        "/bilibili.app.playurl.v1.TextInfo".into()
1541    }
1542}
1543#[derive(Clone, PartialEq, ::prost::Message)]
1545pub struct UpgradeButton {
1546    #[prost(string, tag = "1")]
1548    pub title: ::prost::alloc::string::String,
1549    #[prost(string, tag = "2")]
1551    pub link: ::prost::alloc::string::String,
1552}
1553impl ::prost::Name for UpgradeButton {
1554    const NAME: &'static str = "UpgradeButton";
1555    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
1556    fn full_name() -> ::prost::alloc::string::String {
1557        "bilibili.app.playurl.v1.UpgradeButton".into()
1558    }
1559    fn type_url() -> ::prost::alloc::string::String {
1560        "/bilibili.app.playurl.v1.UpgradeButton".into()
1561    }
1562}
1563#[derive(Clone, PartialEq, ::prost::Message)]
1565pub struct UpgradeLimit {
1566    #[prost(int32, tag = "1")]
1568    pub code: i32,
1569    #[prost(string, tag = "2")]
1571    pub message: ::prost::alloc::string::String,
1572    #[prost(string, tag = "3")]
1574    pub image: ::prost::alloc::string::String,
1575    #[prost(message, optional, tag = "4")]
1577    pub button: ::core::option::Option<UpgradeButton>,
1578}
1579impl ::prost::Name for UpgradeLimit {
1580    const NAME: &'static str = "UpgradeLimit";
1581    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
1582    fn full_name() -> ::prost::alloc::string::String {
1583        "bilibili.app.playurl.v1.UpgradeLimit".into()
1584    }
1585    fn type_url() -> ::prost::alloc::string::String {
1586        "/bilibili.app.playurl.v1.UpgradeLimit".into()
1587    }
1588}
1589#[derive(Clone, PartialEq, ::prost::Message)]
1591pub struct VideoInfo {
1592    #[prost(int32, tag = "1")]
1594    pub quality: i32,
1595    #[prost(string, tag = "2")]
1597    pub format: ::prost::alloc::string::String,
1598    #[prost(int64, tag = "3")]
1600    pub timelength: i64,
1601    #[prost(int32, tag = "4")]
1603    pub video_codecid: i32,
1604    #[prost(message, repeated, tag = "5")]
1606    pub stream_list: ::prost::alloc::vec::Vec<Stream>,
1607    #[prost(message, repeated, tag = "6")]
1609    pub dash_audio: ::prost::alloc::vec::Vec<DashItem>,
1610    #[prost(message, optional, tag = "7")]
1612    pub dolby: ::core::option::Option<DolbyItem>,
1613    #[prost(message, optional, tag = "8")]
1615    pub volume: ::core::option::Option<VolumeInfo>,
1616    #[prost(message, optional, tag = "9")]
1618    pub loss_less_item: ::core::option::Option<LossLessItem>,
1619    #[prost(int64, tag = "10")]
1621    pub main_timelength: i64,
1622}
1623impl ::prost::Name for VideoInfo {
1624    const NAME: &'static str = "VideoInfo";
1625    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
1626    fn full_name() -> ::prost::alloc::string::String {
1627        "bilibili.app.playurl.v1.VideoInfo".into()
1628    }
1629    fn type_url() -> ::prost::alloc::string::String {
1630        "/bilibili.app.playurl.v1.VideoInfo".into()
1631    }
1632}
1633#[derive(Clone, PartialEq, ::prost::Message)]
1635pub struct ViewInfo {
1636    #[prost(map = "string, message", tag = "1")]
1638    pub dialog_map: ::std::collections::HashMap<::prost::alloc::string::String, Dialog>,
1639    #[prost(message, optional, tag = "2")]
1641    pub prompt_bar: ::core::option::Option<PromptBar>,
1642    #[prost(message, repeated, tag = "3")]
1644    pub toasts: ::prost::alloc::vec::Vec<ComprehensiveToast>,
1645}
1646impl ::prost::Name for ViewInfo {
1647    const NAME: &'static str = "ViewInfo";
1648    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
1649    fn full_name() -> ::prost::alloc::string::String {
1650        "bilibili.app.playurl.v1.ViewInfo".into()
1651    }
1652    fn type_url() -> ::prost::alloc::string::String {
1653        "/bilibili.app.playurl.v1.ViewInfo".into()
1654    }
1655}
1656#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1658pub struct VipRisk {
1659    #[prost(bool, tag = "1")]
1661    pub allow: bool,
1662    #[prost(int64, tag = "2")]
1664    pub r#type: i64,
1665    #[prost(int64, tag = "3")]
1667    pub reason: i64,
1668    #[prost(int64, tag = "4")]
1670    pub device_status: i64,
1671}
1672impl ::prost::Name for VipRisk {
1673    const NAME: &'static str = "VipRisk";
1674    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
1675    fn full_name() -> ::prost::alloc::string::String {
1676        "bilibili.app.playurl.v1.VipRisk".into()
1677    }
1678    fn type_url() -> ::prost::alloc::string::String {
1679        "/bilibili.app.playurl.v1.VipRisk".into()
1680    }
1681}
1682#[derive(Clone, PartialEq, ::prost::Message)]
1684pub struct VolumeInfo {
1685    #[prost(double, tag = "1")]
1687    pub measured_i: f64,
1688    #[prost(double, tag = "2")]
1690    pub measured_lra: f64,
1691    #[prost(double, tag = "3")]
1693    pub measured_tp: f64,
1694    #[prost(double, tag = "4")]
1696    pub measured_threshold: f64,
1697    #[prost(double, tag = "5")]
1699    pub target_offset: f64,
1700    #[prost(double, tag = "6")]
1702    pub target_i: f64,
1703    #[prost(double, tag = "7")]
1705    pub target_tp: f64,
1706    #[prost(map = "string, string", tag = "8")]
1708    pub multi_scene_args: ::std::collections::HashMap<
1709        ::prost::alloc::string::String,
1710        ::prost::alloc::string::String,
1711    >,
1712}
1713impl ::prost::Name for VolumeInfo {
1714    const NAME: &'static str = "VolumeInfo";
1715    const PACKAGE: &'static str = "bilibili.app.playurl.v1";
1716    fn full_name() -> ::prost::alloc::string::String {
1717        "bilibili.app.playurl.v1.VolumeInfo".into()
1718    }
1719    fn type_url() -> ::prost::alloc::string::String {
1720        "/bilibili.app.playurl.v1.VolumeInfo".into()
1721    }
1722}
1723#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1725#[repr(i32)]
1726pub enum Business {
1727    Unknown = 0,
1729    Story = 1,
1731}
1732impl Business {
1733    pub fn as_str_name(&self) -> &'static str {
1738        match self {
1739            Self::Unknown => "UNKNOWN",
1740            Self::Story => "STORY",
1741        }
1742    }
1743    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1745        match value {
1746            "UNKNOWN" => Some(Self::Unknown),
1747            "STORY" => Some(Self::Story),
1748            _ => None,
1749        }
1750    }
1751}
1752#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1754#[repr(i32)]
1755pub enum ButtonAction {
1756    ButtonUnknown = 0,
1758    Chargingplus = 1,
1760}
1761impl ButtonAction {
1762    pub fn as_str_name(&self) -> &'static str {
1767        match self {
1768            Self::ButtonUnknown => "BUTTON_UNKNOWN",
1769            Self::Chargingplus => "CHARGINGPLUS",
1770        }
1771    }
1772    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1774        match value {
1775            "BUTTON_UNKNOWN" => Some(Self::ButtonUnknown),
1776            "CHARGINGPLUS" => Some(Self::Chargingplus),
1777            _ => None,
1778        }
1779    }
1780}
1781#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1783#[repr(i32)]
1784pub enum CodeType {
1785    Nocode = 0,
1787    Code264 = 1,
1789    Code265 = 2,
1791    Codeav1 = 3,
1793}
1794impl CodeType {
1795    pub fn as_str_name(&self) -> &'static str {
1800        match self {
1801            Self::Nocode => "NOCODE",
1802            Self::Code264 => "CODE264",
1803            Self::Code265 => "CODE265",
1804            Self::Codeav1 => "CODEAV1",
1805        }
1806    }
1807    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1809        match value {
1810            "NOCODE" => Some(Self::Nocode),
1811            "CODE264" => Some(Self::Code264),
1812            "CODE265" => Some(Self::Code265),
1813            "CODEAV1" => Some(Self::Codeav1),
1814            _ => None,
1815        }
1816    }
1817}
1818#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1820#[repr(i32)]
1821pub enum ConfType {
1822    NoType = 0,
1824    Flipconf = 1,
1826    Castconf = 2,
1828    Feedback = 3,
1830    Subtitle = 4,
1832    Playbackrate = 5,
1834    Timeup = 6,
1836    Playbackmode = 7,
1838    Scalemode = 8,
1840    Backgroundplay = 9,
1842    Like = 10,
1844    Dislike = 11,
1846    Coin = 12,
1848    Elec = 13,
1850    Share = 14,
1852    Screenshot = 15,
1854    Lockscreen = 16,
1856    Recommend = 17,
1858    Playbackspeed = 18,
1860    Definition = 19,
1862    Selections = 20,
1864    Next = 21,
1866    Editdm = 22,
1868    Smallwindow = 23,
1870    Shake = 24,
1872    Outerdm = 25,
1874    Innerdm = 26,
1876    Panorama = 27,
1878    Dolby = 28,
1880    Colorfilter = 29,
1882    Lossless = 30,
1884}
1885impl ConfType {
1886    pub fn as_str_name(&self) -> &'static str {
1891        match self {
1892            Self::NoType => "NoType",
1893            Self::Flipconf => "FLIPCONF",
1894            Self::Castconf => "CASTCONF",
1895            Self::Feedback => "FEEDBACK",
1896            Self::Subtitle => "SUBTITLE",
1897            Self::Playbackrate => "PLAYBACKRATE",
1898            Self::Timeup => "TIMEUP",
1899            Self::Playbackmode => "PLAYBACKMODE",
1900            Self::Scalemode => "SCALEMODE",
1901            Self::Backgroundplay => "BACKGROUNDPLAY",
1902            Self::Like => "LIKE",
1903            Self::Dislike => "DISLIKE",
1904            Self::Coin => "COIN",
1905            Self::Elec => "ELEC",
1906            Self::Share => "SHARE",
1907            Self::Screenshot => "SCREENSHOT",
1908            Self::Lockscreen => "LOCKSCREEN",
1909            Self::Recommend => "RECOMMEND",
1910            Self::Playbackspeed => "PLAYBACKSPEED",
1911            Self::Definition => "DEFINITION",
1912            Self::Selections => "SELECTIONS",
1913            Self::Next => "NEXT",
1914            Self::Editdm => "EDITDM",
1915            Self::Smallwindow => "SMALLWINDOW",
1916            Self::Shake => "SHAKE",
1917            Self::Outerdm => "OUTERDM",
1918            Self::Innerdm => "INNERDM",
1919            Self::Panorama => "PANORAMA",
1920            Self::Dolby => "DOLBY",
1921            Self::Colorfilter => "COLORFILTER",
1922            Self::Lossless => "LOSSLESS",
1923        }
1924    }
1925    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1927        match value {
1928            "NoType" => Some(Self::NoType),
1929            "FLIPCONF" => Some(Self::Flipconf),
1930            "CASTCONF" => Some(Self::Castconf),
1931            "FEEDBACK" => Some(Self::Feedback),
1932            "SUBTITLE" => Some(Self::Subtitle),
1933            "PLAYBACKRATE" => Some(Self::Playbackrate),
1934            "TIMEUP" => Some(Self::Timeup),
1935            "PLAYBACKMODE" => Some(Self::Playbackmode),
1936            "SCALEMODE" => Some(Self::Scalemode),
1937            "BACKGROUNDPLAY" => Some(Self::Backgroundplay),
1938            "LIKE" => Some(Self::Like),
1939            "DISLIKE" => Some(Self::Dislike),
1940            "COIN" => Some(Self::Coin),
1941            "ELEC" => Some(Self::Elec),
1942            "SHARE" => Some(Self::Share),
1943            "SCREENSHOT" => Some(Self::Screenshot),
1944            "LOCKSCREEN" => Some(Self::Lockscreen),
1945            "RECOMMEND" => Some(Self::Recommend),
1946            "PLAYBACKSPEED" => Some(Self::Playbackspeed),
1947            "DEFINITION" => Some(Self::Definition),
1948            "SELECTIONS" => Some(Self::Selections),
1949            "NEXT" => Some(Self::Next),
1950            "EDITDM" => Some(Self::Editdm),
1951            "SMALLWINDOW" => Some(Self::Smallwindow),
1952            "SHAKE" => Some(Self::Shake),
1953            "OUTERDM" => Some(Self::Outerdm),
1954            "INNERDM" => Some(Self::Innerdm),
1955            "PANORAMA" => Some(Self::Panorama),
1956            "DOLBY" => Some(Self::Dolby),
1957            "COLORFILTER" => Some(Self::Colorfilter),
1958            "LOSSLESS" => Some(Self::Lossless),
1959            _ => None,
1960        }
1961    }
1962}
1963#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1965#[repr(i32)]
1966pub enum Group {
1967    UnknownGroup = 0,
1969    A = 1,
1971    B = 2,
1973    C = 3,
1975}
1976impl Group {
1977    pub fn as_str_name(&self) -> &'static str {
1982        match self {
1983            Self::UnknownGroup => "UnknownGroup",
1984            Self::A => "A",
1985            Self::B => "B",
1986            Self::C => "C",
1987        }
1988    }
1989    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1991        match value {
1992            "UnknownGroup" => Some(Self::UnknownGroup),
1993            "A" => Some(Self::A),
1994            "B" => Some(Self::B),
1995            "C" => Some(Self::C),
1996            _ => None,
1997        }
1998    }
1999}
2000#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2002#[repr(i32)]
2003pub enum GuideStyle {
2004    StyleUnknown = 0,
2006    ChargingText = 1,
2008}
2009impl GuideStyle {
2010    pub fn as_str_name(&self) -> &'static str {
2015        match self {
2016            Self::StyleUnknown => "STYLE_UNKNOWN",
2017            Self::ChargingText => "CHARGING_TEXT",
2018        }
2019    }
2020    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2022        match value {
2023            "STYLE_UNKNOWN" => Some(Self::StyleUnknown),
2024            "CHARGING_TEXT" => Some(Self::ChargingText),
2025            _ => None,
2026        }
2027    }
2028}
2029#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2031#[repr(i32)]
2032pub enum PlayErr {
2033    NoErr = 0,
2035    WithMultiDeviceLoginErr = 1,
2037}
2038impl PlayErr {
2039    pub fn as_str_name(&self) -> &'static str {
2044        match self {
2045            Self::NoErr => "NoErr",
2046            Self::WithMultiDeviceLoginErr => "WithMultiDeviceLoginErr",
2047        }
2048    }
2049    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2051        match value {
2052            "NoErr" => Some(Self::NoErr),
2053            "WithMultiDeviceLoginErr" => Some(Self::WithMultiDeviceLoginErr),
2054            _ => None,
2055        }
2056    }
2057}
2058#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2060#[repr(i32)]
2061pub enum PlayLimitCode {
2062    PlcUnkown = 0,
2064    PlcUgcNotPayed = 1,
2066    PlcChargingPlusNotPass = 2,
2068    PlcChargingPlusUpgrade = 3,
2070}
2071impl PlayLimitCode {
2072    pub fn as_str_name(&self) -> &'static str {
2077        match self {
2078            Self::PlcUnkown => "PLCUnkown",
2079            Self::PlcUgcNotPayed => "PLCUgcNotPayed",
2080            Self::PlcChargingPlusNotPass => "PLCChargingPlusNotPass",
2081            Self::PlcChargingPlusUpgrade => "PLCChargingPlusUpgrade",
2082        }
2083    }
2084    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2086        match value {
2087            "PLCUnkown" => Some(Self::PlcUnkown),
2088            "PLCUgcNotPayed" => Some(Self::PlcUgcNotPayed),
2089            "PLCChargingPlusNotPass" => Some(Self::PlcChargingPlusNotPass),
2090            "PLCChargingPlusUpgrade" => Some(Self::PlcChargingPlusUpgrade),
2091            _ => None,
2092        }
2093    }
2094}
2095#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2097#[repr(i32)]
2098pub enum ToastType {
2099    Unknown = 0,
2101    ChargingToast = 1,
2103}
2104impl ToastType {
2105    pub fn as_str_name(&self) -> &'static str {
2110        match self {
2111            Self::Unknown => "TOAST_TYPE_UNKNOWN",
2112            Self::ChargingToast => "CHARGING_TOAST",
2113        }
2114    }
2115    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2117        match value {
2118            "TOAST_TYPE_UNKNOWN" => Some(Self::Unknown),
2119            "CHARGING_TOAST" => Some(Self::ChargingToast),
2120            _ => None,
2121        }
2122    }
2123}
2124#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2126#[repr(i32)]
2127pub enum VideoType {
2128    Unknown = 0,
2130    Flv = 1,
2132    Dash = 2,
2134    Mp4 = 3,
2136}
2137impl VideoType {
2138    pub fn as_str_name(&self) -> &'static str {
2143        match self {
2144            Self::Unknown => "Unknown",
2145            Self::Flv => "FLV",
2146            Self::Dash => "DASH",
2147            Self::Mp4 => "MP4",
2148        }
2149    }
2150    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2152        match value {
2153            "Unknown" => Some(Self::Unknown),
2154            "FLV" => Some(Self::Flv),
2155            "DASH" => Some(Self::Dash),
2156            "MP4" => Some(Self::Mp4),
2157            _ => None,
2158        }
2159    }
2160}
2161#[cfg(feature = "feat-enable-generated-client")]
2163pub mod play_url_client {
2164    #![allow(
2165        unused_variables,
2166        dead_code,
2167        missing_docs,
2168        clippy::wildcard_imports,
2169        clippy::let_unit_value,
2170    )]
2171    use tonic::codegen::*;
2172    use tonic::codegen::http::Uri;
2173    #[derive(Debug, Clone)]
2175    pub struct PlayUrlClient<T> {
2176        inner: tonic::client::Grpc<T>,
2177    }
2178    impl<T> PlayUrlClient<T>
2179    where
2180        T: tonic::client::GrpcService<tonic::body::Body>,
2181        T::Error: Into<StdError>,
2182        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
2183        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
2184    {
2185        pub fn new(inner: T) -> Self {
2186            let inner = tonic::client::Grpc::new(inner);
2187            Self { inner }
2188        }
2189        pub fn with_origin(inner: T, origin: Uri) -> Self {
2190            let inner = tonic::client::Grpc::with_origin(inner, origin);
2191            Self { inner }
2192        }
2193        pub fn with_interceptor<F>(
2194            inner: T,
2195            interceptor: F,
2196        ) -> PlayUrlClient<InterceptedService<T, F>>
2197        where
2198            F: tonic::service::Interceptor,
2199            T::ResponseBody: Default,
2200            T: tonic::codegen::Service<
2201                http::Request<tonic::body::Body>,
2202                Response = http::Response<
2203                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
2204                >,
2205            >,
2206            <T as tonic::codegen::Service<
2207                http::Request<tonic::body::Body>,
2208            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
2209        {
2210            PlayUrlClient::new(InterceptedService::new(inner, interceptor))
2211        }
2212        #[must_use]
2217        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
2218            self.inner = self.inner.send_compressed(encoding);
2219            self
2220        }
2221        #[must_use]
2223        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
2224            self.inner = self.inner.accept_compressed(encoding);
2225            self
2226        }
2227        #[must_use]
2231        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
2232            self.inner = self.inner.max_decoding_message_size(limit);
2233            self
2234        }
2235        #[must_use]
2239        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
2240            self.inner = self.inner.max_encoding_message_size(limit);
2241            self
2242        }
2243        pub async fn play_conf(
2245            &mut self,
2246            request: impl tonic::IntoRequest<super::PlayConfReq>,
2247        ) -> std::result::Result<tonic::Response<super::PlayConfReply>, tonic::Status> {
2248            self.inner
2249                .ready()
2250                .await
2251                .map_err(|e| {
2252                    tonic::Status::unknown(
2253                        format!("Service was not ready: {}", e.into()),
2254                    )
2255                })?;
2256            let codec = tonic::codec::ProstCodec::default();
2257            let path = http::uri::PathAndQuery::from_static(
2258                "/bilibili.app.playurl.v1.PlayURL/PlayConf",
2259            );
2260            let mut req = request.into_request();
2261            req.extensions_mut()
2262                .insert(GrpcMethod::new("bilibili.app.playurl.v1.PlayURL", "PlayConf"));
2263            self.inner.unary(req, path, codec).await
2264        }
2265        pub async fn play_conf_edit(
2267            &mut self,
2268            request: impl tonic::IntoRequest<super::PlayConfEditReq>,
2269        ) -> std::result::Result<
2270            tonic::Response<super::PlayConfEditReply>,
2271            tonic::Status,
2272        > {
2273            self.inner
2274                .ready()
2275                .await
2276                .map_err(|e| {
2277                    tonic::Status::unknown(
2278                        format!("Service was not ready: {}", e.into()),
2279                    )
2280                })?;
2281            let codec = tonic::codec::ProstCodec::default();
2282            let path = http::uri::PathAndQuery::from_static(
2283                "/bilibili.app.playurl.v1.PlayURL/PlayConfEdit",
2284            );
2285            let mut req = request.into_request();
2286            req.extensions_mut()
2287                .insert(
2288                    GrpcMethod::new("bilibili.app.playurl.v1.PlayURL", "PlayConfEdit"),
2289                );
2290            self.inner.unary(req, path, codec).await
2291        }
2292        pub async fn play_url(
2294            &mut self,
2295            request: impl tonic::IntoRequest<super::PlayUrlReq>,
2296        ) -> std::result::Result<tonic::Response<super::PlayUrlReply>, tonic::Status> {
2297            self.inner
2298                .ready()
2299                .await
2300                .map_err(|e| {
2301                    tonic::Status::unknown(
2302                        format!("Service was not ready: {}", e.into()),
2303                    )
2304                })?;
2305            let codec = tonic::codec::ProstCodec::default();
2306            let path = http::uri::PathAndQuery::from_static(
2307                "/bilibili.app.playurl.v1.PlayURL/PlayURL",
2308            );
2309            let mut req = request.into_request();
2310            req.extensions_mut()
2311                .insert(GrpcMethod::new("bilibili.app.playurl.v1.PlayURL", "PlayURL"));
2312            self.inner.unary(req, path, codec).await
2313        }
2314        pub async fn play_view(
2316            &mut self,
2317            request: impl tonic::IntoRequest<super::PlayViewReq>,
2318        ) -> std::result::Result<tonic::Response<super::PlayViewReply>, tonic::Status> {
2319            self.inner
2320                .ready()
2321                .await
2322                .map_err(|e| {
2323                    tonic::Status::unknown(
2324                        format!("Service was not ready: {}", e.into()),
2325                    )
2326                })?;
2327            let codec = tonic::codec::ProstCodec::default();
2328            let path = http::uri::PathAndQuery::from_static(
2329                "/bilibili.app.playurl.v1.PlayURL/PlayView",
2330            );
2331            let mut req = request.into_request();
2332            req.extensions_mut()
2333                .insert(GrpcMethod::new("bilibili.app.playurl.v1.PlayURL", "PlayView"));
2334            self.inner.unary(req, path, codec).await
2335        }
2336        pub async fn project(
2338            &mut self,
2339            request: impl tonic::IntoRequest<super::ProjectReq>,
2340        ) -> std::result::Result<tonic::Response<super::ProjectReply>, tonic::Status> {
2341            self.inner
2342                .ready()
2343                .await
2344                .map_err(|e| {
2345                    tonic::Status::unknown(
2346                        format!("Service was not ready: {}", e.into()),
2347                    )
2348                })?;
2349            let codec = tonic::codec::ProstCodec::default();
2350            let path = http::uri::PathAndQuery::from_static(
2351                "/bilibili.app.playurl.v1.PlayURL/Project",
2352            );
2353            let mut req = request.into_request();
2354            req.extensions_mut()
2355                .insert(GrpcMethod::new("bilibili.app.playurl.v1.PlayURL", "Project"));
2356            self.inner.unary(req, path, codec).await
2357        }
2358    }
2359}
2360#[cfg(feature = "feat-enable-generated-server")]
2362pub mod play_url_server {
2363    #![allow(
2364        unused_variables,
2365        dead_code,
2366        missing_docs,
2367        clippy::wildcard_imports,
2368        clippy::let_unit_value,
2369    )]
2370    use tonic::codegen::*;
2371    #[async_trait]
2373    pub trait PlayUrl: std::marker::Send + std::marker::Sync + 'static {
2374        async fn play_conf(
2376            &self,
2377            request: tonic::Request<super::PlayConfReq>,
2378        ) -> std::result::Result<tonic::Response<super::PlayConfReply>, tonic::Status>;
2379        async fn play_conf_edit(
2381            &self,
2382            request: tonic::Request<super::PlayConfEditReq>,
2383        ) -> std::result::Result<
2384            tonic::Response<super::PlayConfEditReply>,
2385            tonic::Status,
2386        >;
2387        async fn play_url(
2389            &self,
2390            request: tonic::Request<super::PlayUrlReq>,
2391        ) -> std::result::Result<tonic::Response<super::PlayUrlReply>, tonic::Status>;
2392        async fn play_view(
2394            &self,
2395            request: tonic::Request<super::PlayViewReq>,
2396        ) -> std::result::Result<tonic::Response<super::PlayViewReply>, tonic::Status>;
2397        async fn project(
2399            &self,
2400            request: tonic::Request<super::ProjectReq>,
2401        ) -> std::result::Result<tonic::Response<super::ProjectReply>, tonic::Status>;
2402    }
2403    #[derive(Debug)]
2405    pub struct PlayUrlServer<T> {
2406        inner: Arc<T>,
2407        accept_compression_encodings: EnabledCompressionEncodings,
2408        send_compression_encodings: EnabledCompressionEncodings,
2409        max_decoding_message_size: Option<usize>,
2410        max_encoding_message_size: Option<usize>,
2411    }
2412    impl<T> PlayUrlServer<T> {
2413        pub fn new(inner: T) -> Self {
2414            Self::from_arc(Arc::new(inner))
2415        }
2416        pub fn from_arc(inner: Arc<T>) -> Self {
2417            Self {
2418                inner,
2419                accept_compression_encodings: Default::default(),
2420                send_compression_encodings: Default::default(),
2421                max_decoding_message_size: None,
2422                max_encoding_message_size: None,
2423            }
2424        }
2425        pub fn with_interceptor<F>(
2426            inner: T,
2427            interceptor: F,
2428        ) -> InterceptedService<Self, F>
2429        where
2430            F: tonic::service::Interceptor,
2431        {
2432            InterceptedService::new(Self::new(inner), interceptor)
2433        }
2434        #[must_use]
2436        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
2437            self.accept_compression_encodings.enable(encoding);
2438            self
2439        }
2440        #[must_use]
2442        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
2443            self.send_compression_encodings.enable(encoding);
2444            self
2445        }
2446        #[must_use]
2450        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
2451            self.max_decoding_message_size = Some(limit);
2452            self
2453        }
2454        #[must_use]
2458        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
2459            self.max_encoding_message_size = Some(limit);
2460            self
2461        }
2462    }
2463    impl<T, B> tonic::codegen::Service<http::Request<B>> for PlayUrlServer<T>
2464    where
2465        T: PlayUrl,
2466        B: Body + std::marker::Send + 'static,
2467        B::Error: Into<StdError> + std::marker::Send + 'static,
2468    {
2469        type Response = http::Response<tonic::body::Body>;
2470        type Error = std::convert::Infallible;
2471        type Future = BoxFuture<Self::Response, Self::Error>;
2472        fn poll_ready(
2473            &mut self,
2474            _cx: &mut Context<'_>,
2475        ) -> Poll<std::result::Result<(), Self::Error>> {
2476            Poll::Ready(Ok(()))
2477        }
2478        fn call(&mut self, req: http::Request<B>) -> Self::Future {
2479            match req.uri().path() {
2480                "/bilibili.app.playurl.v1.PlayURL/PlayConf" => {
2481                    #[allow(non_camel_case_types)]
2482                    struct PlayConfSvc<T: PlayUrl>(pub Arc<T>);
2483                    impl<T: PlayUrl> tonic::server::UnaryService<super::PlayConfReq>
2484                    for PlayConfSvc<T> {
2485                        type Response = super::PlayConfReply;
2486                        type Future = BoxFuture<
2487                            tonic::Response<Self::Response>,
2488                            tonic::Status,
2489                        >;
2490                        fn call(
2491                            &mut self,
2492                            request: tonic::Request<super::PlayConfReq>,
2493                        ) -> Self::Future {
2494                            let inner = Arc::clone(&self.0);
2495                            let fut = async move {
2496                                <T as PlayUrl>::play_conf(&inner, request).await
2497                            };
2498                            Box::pin(fut)
2499                        }
2500                    }
2501                    let accept_compression_encodings = self.accept_compression_encodings;
2502                    let send_compression_encodings = self.send_compression_encodings;
2503                    let max_decoding_message_size = self.max_decoding_message_size;
2504                    let max_encoding_message_size = self.max_encoding_message_size;
2505                    let inner = self.inner.clone();
2506                    let fut = async move {
2507                        let method = PlayConfSvc(inner);
2508                        let codec = tonic::codec::ProstCodec::default();
2509                        let mut grpc = tonic::server::Grpc::new(codec)
2510                            .apply_compression_config(
2511                                accept_compression_encodings,
2512                                send_compression_encodings,
2513                            )
2514                            .apply_max_message_size_config(
2515                                max_decoding_message_size,
2516                                max_encoding_message_size,
2517                            );
2518                        let res = grpc.unary(method, req).await;
2519                        Ok(res)
2520                    };
2521                    Box::pin(fut)
2522                }
2523                "/bilibili.app.playurl.v1.PlayURL/PlayConfEdit" => {
2524                    #[allow(non_camel_case_types)]
2525                    struct PlayConfEditSvc<T: PlayUrl>(pub Arc<T>);
2526                    impl<T: PlayUrl> tonic::server::UnaryService<super::PlayConfEditReq>
2527                    for PlayConfEditSvc<T> {
2528                        type Response = super::PlayConfEditReply;
2529                        type Future = BoxFuture<
2530                            tonic::Response<Self::Response>,
2531                            tonic::Status,
2532                        >;
2533                        fn call(
2534                            &mut self,
2535                            request: tonic::Request<super::PlayConfEditReq>,
2536                        ) -> Self::Future {
2537                            let inner = Arc::clone(&self.0);
2538                            let fut = async move {
2539                                <T as PlayUrl>::play_conf_edit(&inner, request).await
2540                            };
2541                            Box::pin(fut)
2542                        }
2543                    }
2544                    let accept_compression_encodings = self.accept_compression_encodings;
2545                    let send_compression_encodings = self.send_compression_encodings;
2546                    let max_decoding_message_size = self.max_decoding_message_size;
2547                    let max_encoding_message_size = self.max_encoding_message_size;
2548                    let inner = self.inner.clone();
2549                    let fut = async move {
2550                        let method = PlayConfEditSvc(inner);
2551                        let codec = tonic::codec::ProstCodec::default();
2552                        let mut grpc = tonic::server::Grpc::new(codec)
2553                            .apply_compression_config(
2554                                accept_compression_encodings,
2555                                send_compression_encodings,
2556                            )
2557                            .apply_max_message_size_config(
2558                                max_decoding_message_size,
2559                                max_encoding_message_size,
2560                            );
2561                        let res = grpc.unary(method, req).await;
2562                        Ok(res)
2563                    };
2564                    Box::pin(fut)
2565                }
2566                "/bilibili.app.playurl.v1.PlayURL/PlayURL" => {
2567                    #[allow(non_camel_case_types)]
2568                    struct PlayURLSvc<T: PlayUrl>(pub Arc<T>);
2569                    impl<T: PlayUrl> tonic::server::UnaryService<super::PlayUrlReq>
2570                    for PlayURLSvc<T> {
2571                        type Response = super::PlayUrlReply;
2572                        type Future = BoxFuture<
2573                            tonic::Response<Self::Response>,
2574                            tonic::Status,
2575                        >;
2576                        fn call(
2577                            &mut self,
2578                            request: tonic::Request<super::PlayUrlReq>,
2579                        ) -> Self::Future {
2580                            let inner = Arc::clone(&self.0);
2581                            let fut = async move {
2582                                <T as PlayUrl>::play_url(&inner, request).await
2583                            };
2584                            Box::pin(fut)
2585                        }
2586                    }
2587                    let accept_compression_encodings = self.accept_compression_encodings;
2588                    let send_compression_encodings = self.send_compression_encodings;
2589                    let max_decoding_message_size = self.max_decoding_message_size;
2590                    let max_encoding_message_size = self.max_encoding_message_size;
2591                    let inner = self.inner.clone();
2592                    let fut = async move {
2593                        let method = PlayURLSvc(inner);
2594                        let codec = tonic::codec::ProstCodec::default();
2595                        let mut grpc = tonic::server::Grpc::new(codec)
2596                            .apply_compression_config(
2597                                accept_compression_encodings,
2598                                send_compression_encodings,
2599                            )
2600                            .apply_max_message_size_config(
2601                                max_decoding_message_size,
2602                                max_encoding_message_size,
2603                            );
2604                        let res = grpc.unary(method, req).await;
2605                        Ok(res)
2606                    };
2607                    Box::pin(fut)
2608                }
2609                "/bilibili.app.playurl.v1.PlayURL/PlayView" => {
2610                    #[allow(non_camel_case_types)]
2611                    struct PlayViewSvc<T: PlayUrl>(pub Arc<T>);
2612                    impl<T: PlayUrl> tonic::server::UnaryService<super::PlayViewReq>
2613                    for PlayViewSvc<T> {
2614                        type Response = super::PlayViewReply;
2615                        type Future = BoxFuture<
2616                            tonic::Response<Self::Response>,
2617                            tonic::Status,
2618                        >;
2619                        fn call(
2620                            &mut self,
2621                            request: tonic::Request<super::PlayViewReq>,
2622                        ) -> Self::Future {
2623                            let inner = Arc::clone(&self.0);
2624                            let fut = async move {
2625                                <T as PlayUrl>::play_view(&inner, request).await
2626                            };
2627                            Box::pin(fut)
2628                        }
2629                    }
2630                    let accept_compression_encodings = self.accept_compression_encodings;
2631                    let send_compression_encodings = self.send_compression_encodings;
2632                    let max_decoding_message_size = self.max_decoding_message_size;
2633                    let max_encoding_message_size = self.max_encoding_message_size;
2634                    let inner = self.inner.clone();
2635                    let fut = async move {
2636                        let method = PlayViewSvc(inner);
2637                        let codec = tonic::codec::ProstCodec::default();
2638                        let mut grpc = tonic::server::Grpc::new(codec)
2639                            .apply_compression_config(
2640                                accept_compression_encodings,
2641                                send_compression_encodings,
2642                            )
2643                            .apply_max_message_size_config(
2644                                max_decoding_message_size,
2645                                max_encoding_message_size,
2646                            );
2647                        let res = grpc.unary(method, req).await;
2648                        Ok(res)
2649                    };
2650                    Box::pin(fut)
2651                }
2652                "/bilibili.app.playurl.v1.PlayURL/Project" => {
2653                    #[allow(non_camel_case_types)]
2654                    struct ProjectSvc<T: PlayUrl>(pub Arc<T>);
2655                    impl<T: PlayUrl> tonic::server::UnaryService<super::ProjectReq>
2656                    for ProjectSvc<T> {
2657                        type Response = super::ProjectReply;
2658                        type Future = BoxFuture<
2659                            tonic::Response<Self::Response>,
2660                            tonic::Status,
2661                        >;
2662                        fn call(
2663                            &mut self,
2664                            request: tonic::Request<super::ProjectReq>,
2665                        ) -> Self::Future {
2666                            let inner = Arc::clone(&self.0);
2667                            let fut = async move {
2668                                <T as PlayUrl>::project(&inner, request).await
2669                            };
2670                            Box::pin(fut)
2671                        }
2672                    }
2673                    let accept_compression_encodings = self.accept_compression_encodings;
2674                    let send_compression_encodings = self.send_compression_encodings;
2675                    let max_decoding_message_size = self.max_decoding_message_size;
2676                    let max_encoding_message_size = self.max_encoding_message_size;
2677                    let inner = self.inner.clone();
2678                    let fut = async move {
2679                        let method = ProjectSvc(inner);
2680                        let codec = tonic::codec::ProstCodec::default();
2681                        let mut grpc = tonic::server::Grpc::new(codec)
2682                            .apply_compression_config(
2683                                accept_compression_encodings,
2684                                send_compression_encodings,
2685                            )
2686                            .apply_max_message_size_config(
2687                                max_decoding_message_size,
2688                                max_encoding_message_size,
2689                            );
2690                        let res = grpc.unary(method, req).await;
2691                        Ok(res)
2692                    };
2693                    Box::pin(fut)
2694                }
2695                _ => {
2696                    Box::pin(async move {
2697                        let mut response = http::Response::new(
2698                            tonic::body::Body::default(),
2699                        );
2700                        let headers = response.headers_mut();
2701                        headers
2702                            .insert(
2703                                tonic::Status::GRPC_STATUS,
2704                                (tonic::Code::Unimplemented as i32).into(),
2705                            );
2706                        headers
2707                            .insert(
2708                                http::header::CONTENT_TYPE,
2709                                tonic::metadata::GRPC_CONTENT_TYPE,
2710                            );
2711                        Ok(response)
2712                    })
2713                }
2714            }
2715        }
2716    }
2717    impl<T> Clone for PlayUrlServer<T> {
2718        fn clone(&self) -> Self {
2719            let inner = self.inner.clone();
2720            Self {
2721                inner,
2722                accept_compression_encodings: self.accept_compression_encodings,
2723                send_compression_encodings: self.send_compression_encodings,
2724                max_decoding_message_size: self.max_decoding_message_size,
2725                max_encoding_message_size: self.max_encoding_message_size,
2726            }
2727        }
2728    }
2729    pub const SERVICE_NAME: &str = "bilibili.app.playurl.v1.PlayURL";
2731    impl<T> tonic::server::NamedService for PlayUrlServer<T> {
2732        const NAME: &'static str = SERVICE_NAME;
2733    }
2734}