mirror of
https://github.com/navidrome/navidrome.git
synced 2025-04-25 07:52:20 +03:00
Using persistent ids to talk to iTunes
Also added methods to set loved and rating
This commit is contained in:
parent
08192e6d23
commit
85882f6a40
@ -6,8 +6,12 @@ import (
|
||||
)
|
||||
|
||||
type ItunesControl interface {
|
||||
MarkAsPlayed(id string, playDate time.Time) error
|
||||
MarkAsSkipped(id string, skipDate time.Time) error
|
||||
MarkAsPlayed(trackId string, playDate time.Time) error
|
||||
MarkAsSkipped(trackId string, skipDate time.Time) error
|
||||
SetTrackLoved(trackId string, loved bool) error
|
||||
SetAlbumLoved(trackId string, loved bool) error
|
||||
SetTrackRating(trackId string, rating int) error
|
||||
SetAlbumRating(trackId string, rating int) error
|
||||
}
|
||||
|
||||
func NewItunesControl() ItunesControl {
|
||||
@ -16,9 +20,9 @@ func NewItunesControl() ItunesControl {
|
||||
|
||||
type itunesControl struct{}
|
||||
|
||||
func (c *itunesControl) MarkAsPlayed(id string, playDate time.Time) error {
|
||||
func (c *itunesControl) MarkAsPlayed(trackId string, playDate time.Time) error {
|
||||
script := Script{fmt.Sprintf(
|
||||
`set theTrack to the first item of (every track whose database ID is equal to "%s")`, id),
|
||||
`set theTrack to the first item of (every track whose persistent ID is equal to "%s")`, trackId),
|
||||
`set c to (get played count of theTrack)`,
|
||||
`tell theTrack`,
|
||||
`set played count to c + 1`,
|
||||
@ -27,9 +31,9 @@ func (c *itunesControl) MarkAsPlayed(id string, playDate time.Time) error {
|
||||
return script.Run()
|
||||
}
|
||||
|
||||
func (c *itunesControl) MarkAsSkipped(id string, skipDate time.Time) error {
|
||||
func (c *itunesControl) MarkAsSkipped(trackId string, skipDate time.Time) error {
|
||||
script := Script{fmt.Sprintf(
|
||||
`set theTrack to the first item of (every track whose database ID is equal to "%s")`, id),
|
||||
`set theTrack to the first item of (every track whose persistent ID is equal to "%s")`, trackId),
|
||||
`set c to (get skipped count of theTrack)`,
|
||||
`tell theTrack`,
|
||||
`set skipped count to c + 1`,
|
||||
@ -38,6 +42,42 @@ func (c *itunesControl) MarkAsSkipped(id string, skipDate time.Time) error {
|
||||
return script.Run()
|
||||
}
|
||||
|
||||
func (c *itunesControl) SetTrackLoved(trackId string, loved bool) error {
|
||||
script := Script{fmt.Sprintf(
|
||||
`set theTrack to the first item of (every track whose persistent ID is equal to "%s")`, trackId),
|
||||
`tell theTrack`,
|
||||
fmt.Sprintf(`set loved to %v`, loved),
|
||||
`end tell`}
|
||||
return script.Run()
|
||||
}
|
||||
|
||||
func (c *itunesControl) SetAlbumLoved(trackId string, loved bool) error {
|
||||
script := Script{fmt.Sprintf(
|
||||
`set theTrack to the first item of (every track whose persistent ID is equal to "%s")`, trackId),
|
||||
`tell theTrack`,
|
||||
fmt.Sprintf(`set album loved to %v`, loved),
|
||||
`end tell`}
|
||||
return script.Run()
|
||||
}
|
||||
|
||||
func (c *itunesControl) SetTrackRating(trackId string, rating int) error {
|
||||
script := Script{fmt.Sprintf(
|
||||
`set theTrack to the first item of (every track whose persistent ID is equal to "%s")`, trackId),
|
||||
`tell theTrack`,
|
||||
fmt.Sprintf(`set rating to %d`, rating),
|
||||
`end tell`}
|
||||
return script.Run()
|
||||
}
|
||||
|
||||
func (c *itunesControl) SetAlbumRating(trackId string, rating int) error {
|
||||
script := Script{fmt.Sprintf(
|
||||
`set theTrack to the first item of (every track whose persistent ID is equal to "%s")`, trackId),
|
||||
`tell theTrack`,
|
||||
fmt.Sprintf(`set album rating to %d`, rating),
|
||||
`end tell`}
|
||||
return script.Run()
|
||||
}
|
||||
|
||||
func (c *itunesControl) formatDateTime(d time.Time) string {
|
||||
return d.Format("Jan _2, 2006 3:04PM")
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user