32 lines
732 B
Go
32 lines
732 B
Go
|
package itunesbridge
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
type ItunesControl interface {
|
||
|
Scrobble(id string, playDate time.Time) error
|
||
|
}
|
||
|
|
||
|
func NewItunesControl() ItunesControl {
|
||
|
return itunesControl{}
|
||
|
}
|
||
|
|
||
|
type itunesControl struct{}
|
||
|
|
||
|
func (c itunesControl) Scrobble(id 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 c to (get played count of theTrack)`,
|
||
|
`tell theTrack`,
|
||
|
`set played count to c + 1`,
|
||
|
fmt.Sprintf(`set played date to date("%s")`, c.formatDateTime(playDate)),
|
||
|
`end tell`}
|
||
|
return script.Run()
|
||
|
}
|
||
|
|
||
|
func (c itunesControl) formatDateTime(d time.Time) string {
|
||
|
return d.Format("Jan _2, 2006 3:04PM")
|
||
|
}
|