Browse Source

fix crash for artists without tracks (closes #103) (#256)

Jakob 7 years ago
parent
commit
030b318a9c
1 changed files with 12 additions and 8 deletions
  1. 12 8
      metadata/src/lib.rs

+ 12 - 8
metadata/src/lib.rs

@@ -194,15 +194,19 @@ impl Metadata for Artist {
     fn parse(msg: &Self::Message, session: &Session) -> Self {
         let country = session.country();
 
-        let top_tracks = msg.get_top_track()
+        let top_tracks: Vec<SpotifyId> = match msg.get_top_track()
                             .iter()
-                            .find(|tt| !tt.has_country() || countrylist_contains(tt.get_country(), &country))
-                            .unwrap()
-                            .get_track()
-                            .iter()
-                            .filter(|track| track.has_gid())
-                            .map(|track| SpotifyId::from_raw(track.get_gid()))
-                            .collect::<Vec<_>>();
+                            .find(|tt| !tt.has_country() || countrylist_contains(tt.get_country(), &country)) {
+                                Some(tracks) => {
+                                    tracks.get_track()
+                                    .iter()
+                                    .filter(|track| track.has_gid())
+                                    .map(|track| SpotifyId::from_raw(track.get_gid()))
+                                    .collect::<Vec<_>>()
+                                },
+                                None => Vec::new()
+                            };
+
 
         Artist {
             id: SpotifyId::from_raw(msg.get_gid()),