1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
use std::convert::TryFrom;
use crate::ErrorKind;
pub const MOVIE: u8 = 0;
pub const NORMAL: u8 = 1;
pub const AUDIOBOOK: u8 = 2;
pub const WHACKED_BOOKMARK: u8 = 5;
pub const MUSIC_VIDEO: u8 = 6;
pub const SHORT_FILM: u8 = 9;
pub const TV_SHOW: u8 = 10;
pub const BOOKLET: u8 = 11;
pub const CLEAN: u8 = 2;
pub const INOFFENSIVE: u8 = 0;
#[derive(Clone, Debug, Eq, PartialEq)]
pub enum MediaType {
Movie,
Normal,
AudioBook,
WhackedBookmark,
MusicVideo,
ShortFilm,
TvShow,
Booklet,
}
impl MediaType {
pub fn value(&self) -> u8 {
match self {
Self::Movie => MOVIE,
Self::Normal => NORMAL,
Self::AudioBook => AUDIOBOOK,
Self::WhackedBookmark => WHACKED_BOOKMARK,
Self::MusicVideo => MUSIC_VIDEO,
Self::ShortFilm => SHORT_FILM,
Self::TvShow => TV_SHOW,
Self::Booklet => BOOKLET,
}
}
}
impl TryFrom<u8> for MediaType {
type Error = crate::Error;
fn try_from(value: u8) -> Result<Self, Self::Error> {
match value {
MOVIE => Ok(Self::Movie),
NORMAL => Ok(Self::Normal),
AUDIOBOOK => Ok(Self::AudioBook),
WHACKED_BOOKMARK => Ok(Self::WhackedBookmark),
MUSIC_VIDEO => Ok(Self::MusicVideo),
SHORT_FILM => Ok(Self::ShortFilm),
TV_SHOW => Ok(Self::TvShow),
BOOKLET => Ok(Self::Booklet),
_ => Err(crate::Error::new(
ErrorKind::UnknownMediaType(value),
"Unknown media type".to_owned(),
)),
}
}
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub enum AdvisoryRating {
Clean,
Inoffensive,
Explicit(u8),
}
impl AdvisoryRating {
pub fn value(&self) -> u8 {
match self {
Self::Clean => CLEAN,
Self::Inoffensive => INOFFENSIVE,
Self::Explicit(r) => *r,
}
}
}
impl From<u8> for AdvisoryRating {
fn from(rating: u8) -> Self {
match rating {
CLEAN => Self::Clean,
INOFFENSIVE => Self::Inoffensive,
_ => Self::Explicit(rating),
}
}
}