1
1
mirror of https://github.com/danbee/persephone synced 2025-03-04 08:39:11 +00:00
persephone/Persephone/MPDClient/Models/Song.swift
Dan Barber 0e6b34513a
Hitting the play button on an album plays the album
Had to refactor the QueueView somewhat as there was a bug that only
surfaced on clearing and refilling the playlist. The bug was due to the
way NSOutlineView reuses subviews.
2019-02-17 17:43:19 -05:00

58 lines
1.1 KiB
Swift

//
// MPDClientSong.swift
// Persephone
//
// Created by Daniel Barber on 2019/2/03.
// Copyright © 2019 Dan Barber. All rights reserved.
//
import Foundation
import mpdclient
extension MPDClient {
class Song {
let mpdSong: OpaquePointer
enum TagType: Int {
case unknown = -1
case artist, album, albumArtist, title, track, name,
genre, date, composer, performer, comment, disc
case musicBrainzArtistId
case musicBrainzAlbumId
case musicBrainzAlbumArtistId
case musicBrainzTrackId
case musicBrainzReleaseTrackId
case originalDate
case artistSort
case albumArtistSort
case albumSort
case tagCount
}
init(_ mpdSong: OpaquePointer) {
self.mpdSong = mpdSong
}
deinit {
mpd_song_free(mpdSong)
}
var uri: UnsafePointer<Int8> {
return mpd_song_get_uri(mpdSong)
}
func getTag(_ tagType: TagType) -> String {
let mpdTagType = mpd_tag_type(rawValue: Int32(tagType.rawValue))
guard let tag = mpd_song_get_tag(mpdSong, mpdTagType, 0)
else { return "" }
return String(cString: tag)
}
}
}