Created
March 31, 2017 11:46
-
-
Save killwing/bc6b99eb50b3122a5258f06163bdfd84 to your computer and use it in GitHub Desktop.
flac cue maker (with foobar)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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