11use std:: time:: { SystemTime , UNIX_EPOCH } ;
22
3- use rs_plugin_common_interfaces:: domain:: rs_ids:: RsIds ;
4- use serde:: { Serialize , Deserialize } ;
53use chrono:: { DateTime , Utc } ;
4+ use rs_plugin_common_interfaces:: domain:: rs_ids:: RsIds ;
5+ use serde:: { Deserialize , Serialize } ;
66use strum_macros:: { Display , EnumString } ;
77
88use crate :: domain:: serie:: { Serie , SerieStatus } ;
@@ -23,8 +23,10 @@ pub enum TraktShowStatus {
2323 Released ,
2424 Canceled ,
2525 Pilot ,
26- #[ strum( default ) ] Other ( String ) ,
27- #[ default] Unknown ,
26+ #[ strum( default ) ]
27+ Other ( String ) ,
28+ #[ default]
29+ Unknown ,
2830}
2931
3032impl From < TraktShowStatus > for SerieStatus {
@@ -78,14 +80,21 @@ pub struct TraktIds {
7880
7981impl From < RsIds > for TraktIds {
8082 fn from ( value : RsIds ) -> Self {
81- TraktIds { trakt : value. trakt , slug : value. slug , tvdb : value. tvdb , imdb : value. imdb , tmdb : value. tmdb , tvrage : value. tvrage }
83+ TraktIds {
84+ trakt : value. trakt ,
85+ slug : value. slug ,
86+ tvdb : value. tvdb ,
87+ imdb : value. imdb ,
88+ tmdb : value. tmdb ,
89+ tvrage : value. tvrage ,
90+ }
8291 }
8392}
8493
8594#[ derive( Debug , Serialize , Deserialize ) ]
8695pub struct TraktTrendingShowResult {
8796 pub watchers : u64 ,
88- pub show : TraktFullShow
97+ pub show : TraktFullShow ,
8998}
9099
91100/// A [show] with full [extended info]
@@ -99,27 +108,30 @@ pub struct TraktFullShow {
99108 pub ids : TraktIds ,
100109 pub overview : Option < String > ,
101110 pub first_aired : Option < DateTime < Utc > > ,
102- pub airs : Airing ,
111+ pub airs : Option < Airing > ,
103112 pub runtime : Option < u32 > ,
104113 pub certification : Option < String > ,
105114 pub network : Option < String > ,
106115 pub country : Option < String > ,
107116 pub trailer : Option < String > ,
108117 pub homepage : Option < String > ,
109118 pub status : Option < TraktShowStatus > ,
110- pub rating : f64 ,
111- pub votes : u32 ,
112- pub comment_count : u32 ,
119+ pub rating : Option < f64 > ,
120+ pub votes : Option < u32 > ,
121+ pub comment_count : Option < u32 > ,
113122 pub updated_at : Option < DateTime < Utc > > ,
114123 pub language : Option < String > ,
115- pub available_translations : Vec < String > ,
116- pub genres : Vec < String > ,
117- pub aired_episodes : u32 ,
124+ pub available_translations : Option < Vec < String > > ,
125+ pub genres : Option < Vec < String > > ,
126+ pub aired_episodes : Option < u32 > ,
118127}
119128
120129impl From < TraktFullShow > for Serie {
121130 fn from ( value : TraktFullShow ) -> Self {
122- let t = SystemTime :: now ( ) . duration_since ( UNIX_EPOCH ) . unwrap ( ) . as_millis ( ) as u64 ;
131+ let t = SystemTime :: now ( )
132+ . duration_since ( UNIX_EPOCH )
133+ . unwrap ( )
134+ . as_millis ( ) as u64 ;
123135 Serie {
124136 id : format ! ( "trakt:{}" , value. ids. trakt. unwrap( ) ) ,
125137 name : value. title ,
@@ -135,14 +147,14 @@ impl From<TraktFullShow> for Serie {
135147 otherids : None ,
136148 imdb_rating : None ,
137149 imdb_votes : None ,
138- trakt_votes : Some ( value. votes as u64 ) ,
139- trakt_rating : Some ( value. rating as f32 ) ,
150+ trakt_votes : value. votes . map ( |v| v as u64 ) ,
151+ trakt_rating : value. rating . map ( |r| r as f32 ) ,
140152 trailer : value. trailer ,
141153 year : value. year ,
142154 max_created : None ,
143155 modified : t,
144156 added : t,
145-
157+
146158 ..Default :: default ( )
147159 }
148160 }
@@ -151,6 +163,5 @@ impl From<TraktFullShow> for Serie {
151163#[ derive( Debug , Serialize , Deserialize ) ]
152164pub struct TraktShowSearchElement {
153165 pub score : f64 ,
154- pub show : TraktFullShow
166+ pub show : TraktFullShow ,
155167}
156-
0 commit comments