diff options
Diffstat (limited to 'src/queue.rs')
| -rw-r--r-- | src/queue.rs | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/queue.rs b/src/queue.rs index 3c1c6fa..7675ddd 100644 --- a/src/queue.rs +++ b/src/queue.rs | |||
| @@ -21,6 +21,7 @@ pub struct AudioMetadata { | |||
| 21 | pub title: Option<String>, | 21 | pub title: Option<String>, |
| 22 | pub artist: Option<String>, | 22 | pub artist: Option<String>, |
| 23 | pub album: Option<String>, | 23 | pub album: Option<String>, |
| 24 | pub track_number: Option<i32>, | ||
| 24 | pub duration_secs: Option<f64>, | 25 | pub duration_secs: Option<f64>, |
| 25 | } | 26 | } |
| 26 | 27 | ||
| @@ -64,16 +65,27 @@ pub fn extract_metadata(path: &Path) -> Option<AudioMetadata> { | |||
| 64 | Some(StandardTag::Artist(value)) => { | 65 | Some(StandardTag::Artist(value)) => { |
| 65 | metadata.artist = Some(value.to_string()); | 66 | metadata.artist = Some(value.to_string()); |
| 66 | } | 67 | } |
| 68 | Some(StandardTag::AlbumArtist(value)) => { | ||
| 69 | metadata.artist = Some(value.to_string()); | ||
| 70 | } | ||
| 67 | Some(StandardTag::Album(value)) => { | 71 | Some(StandardTag::Album(value)) => { |
| 68 | metadata.album = Some(value.to_string()); | 72 | metadata.album = Some(value.to_string()); |
| 69 | } | 73 | } |
| 74 | Some(StandardTag::TrackNumber(value)) => { | ||
| 75 | metadata.track_number = value.to_string().parse().ok(); | ||
| 76 | } | ||
| 70 | _ => {} | 77 | _ => {} |
| 71 | } | 78 | } |
| 72 | } | 79 | } |
| 73 | } | 80 | } |
| 74 | } | 81 | } |
| 75 | 82 | ||
| 76 | if metadata.title.is_some() || metadata.artist.is_some() || metadata.album.is_some() { | 83 | if metadata.title.is_some() |
| 84 | || metadata.artist.is_some() | ||
| 85 | || metadata.album.is_some() | ||
| 86 | || metadata.track_number.is_some() | ||
| 87 | || metadata.duration_secs.is_some() | ||
| 88 | { | ||
| 77 | Some(metadata) | 89 | Some(metadata) |
| 78 | } else { | 90 | } else { |
| 79 | None | 91 | None |
