Sigrid Solveig Haflínudóttirupdate dependenciesd677c2e6 years agoHistory
65 lines · 1.8 KB · Go
RawDownload
package main import (	"fmt" 	"git.sr.ht/~ft/cue") type Track struct {	Number        int    `json:"number,omitempty"`	DiskNumber    int    `json:"diskNumber,omitempty"`	TotalTracks   *int   `json:"totalTracks"`	TotalDisks    int    `json:"totalDisks,omitempty"`	Composer      string `json:"composer,omitempty"`	Performer     string `json:"performer,omitempty"`	SongWriter    string `json:"songWriter,omitempty"`	Album         string `json:"album,omitempty"`	Title         string `json:"title,omitempty"`	Genre         string `json:"genre,omitempty"`	Date          string `json:"date,omitempty"`	StartAtSample int    `json:"firstSample"`	EndAtSample   int    `json:"lastSample,omitempty"`} func indexTimeToSample(sampleRate int, t *cue.Time) int {	return (t.Min*60+t.Sec)*sampleRate + sampleRate/75*t.Frames} func (t *Track) Artist() string {	switch {	case t.Composer != "":		return t.Composer	case t.SongWriter != "":		return t.SongWriter	case t.Performer != "":		return t.Performer	default:		return "Unknown Artist"	}} func (t *Track) SetIndexes(sampleRate int, indexes []*cue.Index) error {	// INDEX 01 defines the beginning of this track	for _, i := range indexes {		if i.Number == 1 {			t.StartAtSample = indexTimeToSample(sampleRate, i.Time)			return nil		}	} 	return fmt.Errorf("track number %d doesn't have INDEX 01", t.Number)} func (t *Track) SetNextIndexes(sampleRate int, indexes []*cue.Index) {	// INDEX 00 of the next track will indicate the end of this track	// no INDEX 00 found? the end is the beginning of the next track	for _, i := range indexes {		if i.Number == 0 {			t.EndAtSample = indexTimeToSample(sampleRate, i.Time)			return		} else if i.Number == 1 && t.EndAtSample == 0 {			t.EndAtSample = indexTimeToSample(sampleRate, i.Time)		}	}}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t