Skip to content

Instantly share code, notes, and snippets.

@killwing
Created March 31, 2017 11:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save killwing/bc6b99eb50b3122a5258f06163bdfd84 to your computer and use it in GitHub Desktop.
Save killwing/bc6b99eb50b3122a5258f06163bdfd84 to your computer and use it in GitHub Desktop.
flac cue maker (with foobar)
package main
import (
"fmt"
"regexp"
"strings"
)
const cueInfo = `FILE "01 遺サレタ場所:丁.wav" WAVE
TRACK 01 AUDIO
INDEX 01 00:00:00
FILE "02 砂塵ノ記憶:丁.wav" WAVE
TRACK 02 AUDIO
INDEX 01 00:00:00
FILE "03 生マレ出ヅル意思:丁.wav" WAVE
TRACK 03 AUDIO
INDEX 01 00:00:00
FILE "04 遊園施設:丁.wav" WAVE
TRACK 04 AUDIO
INDEX 01 00:00:00
FILE "05 美シキ歌:丁.wav" WAVE
TRACK 05 AUDIO
INDEX 01 00:00:00
FILE "06 異形ノ末路:丁.wav" WAVE
TRACK 06 AUDIO
INDEX 01 00:00:00
FILE "07 森ノ王国:丁.wav" WAVE
TRACK 07 AUDIO
INDEX 01 00:00:00
FILE "08 全テヲ破壊スル黒キ巨人ノ怪獣:丁.wav" WAVE
TRACK 08 AUDIO
INDEX 01 00:00:00
FILE "09 愚カシイ兵器:丁.wav" WAVE
TRACK 09 AUDIO
INDEX 01 00:00:00
FILE "10 取リ憑イタ業病:丁.wav" WAVE
TRACK 10 AUDIO
INDEX 01 00:00:00
FILE "11 依存スル弱者:丁.wav" WAVE
TRACK 11 AUDIO
INDEX 01 00:00:00
FILE "12 戦争ト戦争:丁.wav" WAVE
TRACK 12 AUDIO
INDEX 01 00:00:00
FILE "13 イニシエノウタ,贖罪:丁.wav" WAVE
TRACK 13 AUDIO
INDEX 01 00:00:00
FILE "14 「塔」:丁.wav" WAVE
TRACK 14 AUDIO
INDEX 01 00:00:00
FILE "15 終ワリノ音:丁.wav" WAVE
TRACK 15 AUDIO
INDEX 01 00:00:00
FILE "16 Weight of the Wolrd:丁.wav" WAVE
TRACK 16 AUDIO
INDEX 01 00:00:00`
const cueTime = `TRACK 01 AUDIO
INDEX 01 00:00:00
TRACK 02 AUDIO
INDEX 01 02:12:61
TRACK 03 AUDIO
INDEX 01 04:44:56
TRACK 04 AUDIO
INDEX 01 07:46:64
TRACK 05 AUDIO
INDEX 01 10:10:44
TRACK 06 AUDIO
INDEX 01 12:43:48
TRACK 07 AUDIO
INDEX 01 15:36:22
TRACK 08 AUDIO
INDEX 01 18:02:22
TRACK 09 AUDIO
INDEX 01 20:18:15
TRACK 10 AUDIO
INDEX 01 23:21:58
TRACK 11 AUDIO
INDEX 01 27:37:32
TRACK 12 AUDIO
INDEX 01 30:17:39
TRACK 13 AUDIO
INDEX 01 32:45:26
TRACK 14 AUDIO
INDEX 01 35:53:70
TRACK 15 AUDIO
INDEX 01 39:31:70
TRACK 16 AUDIO
INDEX 01 42:12:07`
const head = `TITLE "NieR:Automata Original Soundtrack HACKING TRACKS"
FILE "Soundtrack.flac" WAVE`
type track struct {
no string
title string
duration string
}
func main() {
info := strings.Split(cueInfo, "\n")
var tracks []track
for i := 0; i != len(info); i += 3 {
re := regexp.MustCompile(`FILE "([0-9]{2}) (.*)\.wav" WAVE`)
m := re.FindStringSubmatch(info[i])
t := track{
no: m[1],
title: m[2],
}
tracks = append(tracks, t)
}
dur := strings.Split(cueTime, "\n")
for i := 0; i != len(dur); i += 2 {
s := strings.Split(strings.Trim(dur[i+1], " "), " ")
tracks[i/2].duration = s[2]
}
fmt.Println(head)
for _, t := range tracks {
fmt.Println(fmt.Sprintf(` TRACK %s AUDIO`, t.no))
fmt.Println(fmt.Sprintf(` TITLE "%s"`, t.title))
fmt.Println(fmt.Sprintf(` INDEX 01 %s`, t.duration))
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment