mirror of
https://github.com/danbee/persephone
synced 2025-03-04 08:39:11 +00:00
57 lines
1.0 KiB
Swift
57 lines
1.0 KiB
Swift
//
|
|
// SongItem.swift
|
|
// Persephone
|
|
//
|
|
// Created by Daniel Barber on 2019/3/25.
|
|
// Copyright © 2019 Dan Barber. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
struct Song {
|
|
var mpdSong: MPDClient.MPDSong
|
|
|
|
var disc: String {
|
|
return mpdSong.getTag(.disc)
|
|
}
|
|
|
|
var trackNumber: String {
|
|
return mpdSong.getTag(.track)
|
|
}
|
|
|
|
var title: String {
|
|
return mpdSong.getTag(.title)
|
|
}
|
|
|
|
var artist: String {
|
|
return mpdSong.getTag(.artist)
|
|
}
|
|
|
|
var duration: Time {
|
|
return Time(timeInSeconds: mpdSong.duration)
|
|
}
|
|
|
|
var album: Album {
|
|
return Album(mpdAlbum: mpdSong.album)
|
|
}
|
|
}
|
|
|
|
extension Song: Equatable {
|
|
static func == (lhs: Song, rhs: Song) -> Bool {
|
|
return (lhs.title == rhs.title) &&
|
|
(lhs.artist == rhs.artist) &&
|
|
(lhs.album == rhs.album)
|
|
}
|
|
}
|
|
|
|
extension Song: Hashable {
|
|
func hash(into hasher: inout Hasher) {
|
|
hasher.combine(mpdSong.uriString)
|
|
hasher.combine(disc)
|
|
hasher.combine(trackNumber)
|
|
hasher.combine(title)
|
|
hasher.combine(artist)
|
|
hasher.combine(album.title)
|
|
}
|
|
}
|