| @@ -6,6 +6,7 @@ import ( · 5 unmodified lines |
| 6 | 6 | "io" |
| 7 | 7 | "os" |
| 8 | 8 | "path/filepath" |
| 9 | + "strconv" |
| 9 | 10 | "strings" |
| 10 | 11 | |
| 11 | 12 | "github.com/ftrvxmtrx/chub/cue" |
| @@ -73,7 +74,6 @@ func NewInput(path string) (in *Input, err error) { · 61 unmodified lines |
| 73 | 74 | err = fmt.Errorf("%s: %s", f.Name, err) |
| 74 | 75 | return |
| 75 | 76 | } |
| 76 | | − in.TotalDisks++ |
| 77 | 77 | in.Audio = append(in.Audio, audio) |
| 78 | 78 | filesFromCue = append(filesFromCue, f) |
| 79 | 79 | } |
| @@ -85,16 +85,26 @@ func NewInput(path string) (in *Input, err error) { · 5 unmodified lines |
| 85 | 85 | in.SongWriter = sheet.Songwriter |
| 86 | 86 | in.Title = sheet.Title |
| 87 | 87 | |
| 88 | + var diskNumber int |
| 88 | 89 | for _, c := range sheet.Comments { |
| 89 | | − if strings.HasPrefix(c, "DATE") { |
| 90 | | − words := strings.Fields(c) |
| 91 | | − in.Date = words[len(words)-1] |
| 90 | + if words := strings.SplitAfterN(c, " ", 2); len(words) < 2 { |
| 91 | + continue |
| 92 | + } else if strings.HasPrefix(c, "DATE") { |
| 93 | + in.Date = words[1] |
| 92 | 94 | } else if strings.HasPrefix(c, "GENRE") { |
| 93 | | − words := strings.SplitAfterN(c, " ", 2) |
| 94 | 95 | in.Genre = words[1] |
| 95 | 96 | } else if strings.HasPrefix(c, "COMPOSER") { |
| 96 | | − words := strings.SplitAfterN(c, " ", 2) |
| 97 | 97 | in.Composer = words[1] |
| 98 | + } else if len(in.Audio) == 1 { |
| 99 | + // FIXME no idea what to do with several discnumber comments in a cue sheet |
| 100 | + if strings.HasPrefix(c, "DISCNUMBER") { |
| 101 | + diskNumber, err = strconv.Atoi(words[1]) |
| 102 | + } else if strings.HasPrefix(c, "TOTALDISCS") { |
| 103 | + in.TotalDisks, err = strconv.Atoi(words[1]) |
| 104 | + } |
| 105 | + } |
| 106 | + if err != nil { |
| 107 | + return |
| 98 | 108 | } |
| 99 | 109 | } |
| 100 | 110 | |
| @@ -121,8 +131,8 @@ func NewInput(path string) (in *Input, err error) { · 20 unmodified lines |
| 121 | 131 | Genre: in.Genre, |
| 122 | 132 | Date: in.Date, |
| 123 | 133 | TotalTracks: &in.TotalTracks, |
| 124 | | − TotalDisks: &in.TotalDisks, |
| 125 | | − DiskNumber: i + 1, |
| 134 | + TotalDisks: in.TotalDisks, |
| 135 | + DiskNumber: diskNumber, |
| 126 | 136 | } |
| 127 | 137 | for _, c := range ft.Comments { |
| 128 | 138 | if strings.HasPrefix(c, "COMPOSER") { |