Rename "morituri" module to "whipper".
Fixes https://github.com/JoeLametta/whipper/issues/100
This commit is contained in:
0
whipper/test/__init__.py
Normal file
0
whipper/test/__init__.py
Normal file
38
whipper/test/bloc.cue
Normal file
38
whipper/test/bloc.cue
Normal file
@@ -0,0 +1,38 @@
|
||||
REM DISCID AD0BE00D
|
||||
REM COMMENT "whipper 0.5.1"
|
||||
FILE "data.wav" WAVE
|
||||
TRACK 01 AUDIO
|
||||
PREGAP 03:22:70
|
||||
INDEX 01 00:00:00
|
||||
TRACK 02 AUDIO
|
||||
INDEX 01 04:21:74
|
||||
TRACK 03 AUDIO
|
||||
INDEX 01 08:02:12
|
||||
TRACK 04 AUDIO
|
||||
INDEX 01 11:57:45
|
||||
TRACK 05 AUDIO
|
||||
INDEX 00 15:18:00
|
||||
INDEX 01 15:18:72
|
||||
TRACK 06 AUDIO
|
||||
INDEX 00 18:05:40
|
||||
INDEX 01 18:06:06
|
||||
TRACK 07 AUDIO
|
||||
INDEX 00 21:35:15
|
||||
INDEX 01 21:35:32
|
||||
TRACK 08 AUDIO
|
||||
INDEX 00 26:00:74
|
||||
INDEX 01 26:01:03
|
||||
TRACK 09 AUDIO
|
||||
INDEX 00 29:36:14
|
||||
INDEX 01 29:36:25
|
||||
TRACK 10 AUDIO
|
||||
INDEX 01 33:56:02
|
||||
TRACK 11 AUDIO
|
||||
INDEX 00 37:48:26
|
||||
INDEX 01 37:48:69
|
||||
TRACK 12 AUDIO
|
||||
INDEX 00 41:44:45
|
||||
INDEX 01 41:46:11
|
||||
TRACK 13 AUDIO
|
||||
INDEX 00 45:56:11
|
||||
INDEX 01 45:56:33
|
||||
116
whipper/test/bloc.toc
Normal file
116
whipper/test/bloc.toc
Normal file
@@ -0,0 +1,116 @@
|
||||
CD_DA
|
||||
|
||||
|
||||
// Track 1
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
SILENCE 03:22:70
|
||||
FILE "data.wav" 0 04:21:74
|
||||
START 03:22:70
|
||||
|
||||
|
||||
// Track 2
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
FILE "data.wav" 04:21:74 03:40:13
|
||||
|
||||
|
||||
// Track 3
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
FILE "data.wav" 08:02:12 03:55:33
|
||||
|
||||
|
||||
// Track 4
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
FILE "data.wav" 11:57:45 03:20:30
|
||||
|
||||
|
||||
// Track 5
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
FILE "data.wav" 15:18:00 02:47:40
|
||||
START 00:00:72
|
||||
|
||||
|
||||
// Track 6
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
FILE "data.wav" 18:05:40 03:29:50
|
||||
START 00:00:41
|
||||
|
||||
|
||||
// Track 7
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
FILE "data.wav" 21:35:15 04:25:59
|
||||
START 00:00:17
|
||||
|
||||
|
||||
// Track 8
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
FILE "data.wav" 26:00:74 03:35:15
|
||||
START 00:00:04
|
||||
|
||||
|
||||
// Track 9
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
FILE "data.wav" 29:36:14 04:19:63
|
||||
START 00:00:11
|
||||
|
||||
|
||||
// Track 10
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
FILE "data.wav" 33:56:02 03:52:24
|
||||
|
||||
|
||||
// Track 11
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
FILE "data.wav" 37:48:26 03:56:19
|
||||
START 00:00:43
|
||||
|
||||
|
||||
// Track 12
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
FILE "data.wav" 41:44:45 04:11:41
|
||||
START 00:01:41
|
||||
|
||||
|
||||
// Track 13
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
FILE "data.wav" 45:56:11 04:43:60
|
||||
START 00:00:22
|
||||
|
||||
64
whipper/test/breeders.cue
Normal file
64
whipper/test/breeders.cue
Normal file
@@ -0,0 +1,64 @@
|
||||
REM DISCID BE08990D
|
||||
REM COMMENT "whipper 0.5.1"
|
||||
CATALOG 0652637280326
|
||||
PERFORMER "THE BREEDERS"
|
||||
TITLE "MOUNTAIN BATTLES"
|
||||
FILE "data.wav" WAVE
|
||||
TRACK 01 AUDIO
|
||||
TITLE "OVERGLAZED"
|
||||
ISRC GBAFL0700213
|
||||
INDEX 01 00:00:00
|
||||
TRACK 02 AUDIO
|
||||
TITLE "BANG ON"
|
||||
ISRC GBAFL0700214
|
||||
INDEX 00 02:14:51
|
||||
INDEX 01 02:15:26
|
||||
TRACK 03 AUDIO
|
||||
TITLE "NIGHT OF JOY"
|
||||
ISRC GBAFL0700215
|
||||
INDEX 00 04:17:74
|
||||
INDEX 01 04:18:34
|
||||
TRACK 04 AUDIO
|
||||
TITLE "WE'RE GONNA RISE"
|
||||
ISRC GBAFL0700216
|
||||
INDEX 01 07:44:22
|
||||
TRACK 05 AUDIO
|
||||
TITLE "GERMAN STUDIES"
|
||||
ISRC GBAFL0700217
|
||||
INDEX 01 11:37:39
|
||||
TRACK 06 AUDIO
|
||||
TITLE "SPARK"
|
||||
ISRC GBAFL0700218
|
||||
INDEX 00 13:51:54
|
||||
INDEX 01 13:53:38
|
||||
TRACK 07 AUDIO
|
||||
TITLE "INSTANBUL"
|
||||
ISRC GBAFL0700219
|
||||
INDEX 00 16:31:20
|
||||
INDEX 01 16:32:49
|
||||
TRACK 08 AUDIO
|
||||
TITLE "WALK IT OFF"
|
||||
ISRC GBAFL0700220
|
||||
INDEX 01 19:30:19
|
||||
TRACK 09 AUDIO
|
||||
TITLE "REGLAME ESTA NOCHE"
|
||||
ISRC GBAFL0700221
|
||||
INDEX 00 22:14:69
|
||||
INDEX 01 22:16:27
|
||||
TRACK 10 AUDIO
|
||||
TITLE "HERE NO MORE"
|
||||
ISRC GBAFL0700222
|
||||
INDEX 00 25:06:18
|
||||
INDEX 01 25:08:01
|
||||
TRACK 11 AUDIO
|
||||
TITLE "NO WAY"
|
||||
ISRC GBAFL0700223
|
||||
INDEX 01 27:46:64
|
||||
TRACK 12 AUDIO
|
||||
TITLE "IT'S THE LOVE"
|
||||
ISRC GBAFL0700224
|
||||
INDEX 01 30:19:39
|
||||
TRACK 13 AUDIO
|
||||
TITLE "MOUNTAIN BATTLES"
|
||||
ISRC GBAFL0700225
|
||||
INDEX 01 32:47:56
|
||||
217
whipper/test/breeders.toc
Normal file
217
whipper/test/breeders.toc
Normal file
@@ -0,0 +1,217 @@
|
||||
CD_DA
|
||||
|
||||
CATALOG "0652637280326"
|
||||
CD_TEXT {
|
||||
LANGUAGE_MAP {
|
||||
0: 9
|
||||
}
|
||||
LANGUAGE 0 {
|
||||
TITLE "MOUNTAIN BATTLES"
|
||||
PERFORMER "THE BREEDERS"
|
||||
DISC_ID "CADD2803CD"
|
||||
SIZE_INFO { 1, 1, 20, 0, 16, 3, 0, 0, 0, 0, 1, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 3, 22, 0, 0, 0,
|
||||
0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0}
|
||||
}
|
||||
}
|
||||
|
||||
// Track 1
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAFL0700213"
|
||||
CD_TEXT {
|
||||
LANGUAGE 0 {
|
||||
TITLE "OVERGLAZED"
|
||||
PERFORMER ""
|
||||
}
|
||||
}
|
||||
FILE "data.wav" 0 02:14:51
|
||||
|
||||
|
||||
// Track 2
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAFL0700214"
|
||||
CD_TEXT {
|
||||
LANGUAGE 0 {
|
||||
TITLE "BANG ON"
|
||||
PERFORMER ""
|
||||
}
|
||||
}
|
||||
FILE "data.wav" 02:14:51 02:03:23
|
||||
START 00:00:50
|
||||
|
||||
|
||||
// Track 3
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAFL0700215"
|
||||
CD_TEXT {
|
||||
LANGUAGE 0 {
|
||||
TITLE "NIGHT OF JOY"
|
||||
PERFORMER ""
|
||||
}
|
||||
}
|
||||
FILE "data.wav" 04:17:74 03:26:23
|
||||
START 00:00:35
|
||||
|
||||
|
||||
// Track 4
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAFL0700216"
|
||||
CD_TEXT {
|
||||
LANGUAGE 0 {
|
||||
TITLE "WE'RE GONNA RISE"
|
||||
PERFORMER ""
|
||||
}
|
||||
}
|
||||
FILE "data.wav" 07:44:22 03:53:17
|
||||
|
||||
|
||||
// Track 5
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAFL0700217"
|
||||
CD_TEXT {
|
||||
LANGUAGE 0 {
|
||||
TITLE "GERMAN STUDIES"
|
||||
PERFORMER ""
|
||||
}
|
||||
}
|
||||
FILE "data.wav" 11:37:39 02:14:15
|
||||
|
||||
|
||||
// Track 6
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAFL0700218"
|
||||
CD_TEXT {
|
||||
LANGUAGE 0 {
|
||||
TITLE "SPARK"
|
||||
PERFORMER ""
|
||||
}
|
||||
}
|
||||
FILE "data.wav" 13:51:54 02:39:41
|
||||
START 00:01:59
|
||||
|
||||
|
||||
// Track 7
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAFL0700219"
|
||||
CD_TEXT {
|
||||
LANGUAGE 0 {
|
||||
TITLE "INSTANBUL"
|
||||
PERFORMER ""
|
||||
}
|
||||
}
|
||||
FILE "data.wav" 16:31:20 02:58:74
|
||||
START 00:01:29
|
||||
|
||||
|
||||
// Track 8
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAFL0700220"
|
||||
CD_TEXT {
|
||||
LANGUAGE 0 {
|
||||
TITLE "WALK IT OFF"
|
||||
PERFORMER ""
|
||||
}
|
||||
}
|
||||
FILE "data.wav" 19:30:19 02:44:50
|
||||
|
||||
|
||||
// Track 9
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAFL0700221"
|
||||
CD_TEXT {
|
||||
LANGUAGE 0 {
|
||||
TITLE "REGLAME ESTA NOCHE"
|
||||
PERFORMER ""
|
||||
}
|
||||
}
|
||||
FILE "data.wav" 22:14:69 02:51:24
|
||||
START 00:01:33
|
||||
|
||||
|
||||
// Track 10
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAFL0700222"
|
||||
CD_TEXT {
|
||||
LANGUAGE 0 {
|
||||
TITLE "HERE NO MORE"
|
||||
PERFORMER ""
|
||||
}
|
||||
}
|
||||
FILE "data.wav" 25:06:18 02:40:46
|
||||
START 00:01:58
|
||||
|
||||
|
||||
// Track 11
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAFL0700223"
|
||||
CD_TEXT {
|
||||
LANGUAGE 0 {
|
||||
TITLE "NO WAY"
|
||||
PERFORMER ""
|
||||
}
|
||||
}
|
||||
FILE "data.wav" 27:46:64 02:32:50
|
||||
|
||||
|
||||
// Track 12
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAFL0700224"
|
||||
CD_TEXT {
|
||||
LANGUAGE 0 {
|
||||
TITLE "IT'S THE LOVE"
|
||||
PERFORMER ""
|
||||
}
|
||||
}
|
||||
FILE "data.wav" 30:19:39 02:28:17
|
||||
|
||||
|
||||
// Track 13
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAFL0700225"
|
||||
CD_TEXT {
|
||||
LANGUAGE 0 {
|
||||
TITLE "MOUNTAIN BATTLES"
|
||||
PERFORMER ""
|
||||
}
|
||||
}
|
||||
FILE "data.wav" 32:47:56 03:53:66
|
||||
|
||||
BIN
whipper/test/cache/result/fe105a11.pickle
vendored
Normal file
BIN
whipper/test/cache/result/fe105a11.pickle
vendored
Normal file
Binary file not shown.
113
whipper/test/capital.1.toc
Normal file
113
whipper/test/capital.1.toc
Normal file
@@ -0,0 +1,113 @@
|
||||
CD_DA
|
||||
|
||||
|
||||
// Track 1
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAAA0300350"
|
||||
SILENCE 05:22:20
|
||||
FILE "data.wav" 0 04:32:55
|
||||
START 05:22:20
|
||||
|
||||
|
||||
// Track 2
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAAA0300351"
|
||||
FILE "data.wav" 04:32:55 04:16:02
|
||||
START 00:01:05
|
||||
|
||||
|
||||
// Track 3
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAAA0300352"
|
||||
FILE "data.wav" 08:48:57 03:03:65
|
||||
START 00:01:38
|
||||
|
||||
|
||||
// Track 4
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAAA0300353"
|
||||
FILE "data.wav" 11:52:47 02:16:03
|
||||
START 00:01:43
|
||||
|
||||
|
||||
// Track 5
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAAA0300355"
|
||||
FILE "data.wav" 14:08:50 03:32:55
|
||||
START 00:01:50
|
||||
|
||||
|
||||
// Track 6
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAAA0300356"
|
||||
FILE "data.wav" 17:41:30 03:09:70
|
||||
START 00:01:20
|
||||
|
||||
|
||||
// Track 7
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAAA0300357"
|
||||
FILE "data.wav" 20:51:25 02:27:25
|
||||
START 00:01:00
|
||||
|
||||
|
||||
// Track 8
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAAA0300358"
|
||||
FILE "data.wav" 23:18:50 02:46:35
|
||||
START 00:00:35
|
||||
|
||||
|
||||
// Track 9
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAAA0300359"
|
||||
FILE "data.wav" 26:05:10 05:02:72
|
||||
START 00:00:60
|
||||
|
||||
|
||||
// Track 10
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAAA0300360"
|
||||
FILE "data.wav" 31:08:07 03:50:38
|
||||
START 00:00:60
|
||||
|
||||
|
||||
// Track 11
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAAA0300361"
|
||||
FILE "data.wav" 34:58:45 03:35:10
|
||||
START 00:00:65
|
||||
|
||||
8
whipper/test/capital.2.toc
Normal file
8
whipper/test/capital.2.toc
Normal file
@@ -0,0 +1,8 @@
|
||||
CD_ROM
|
||||
|
||||
|
||||
// Track 1
|
||||
TRACK MODE1
|
||||
NO COPY
|
||||
DATAFILE "data_1" 27:30:00 // length in bytes: 253440000
|
||||
|
||||
109
whipper/test/capital.fast.toc
Normal file
109
whipper/test/capital.fast.toc
Normal file
@@ -0,0 +1,109 @@
|
||||
CD_ROM
|
||||
|
||||
|
||||
// Track 1
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAAA0300350"
|
||||
FILE "data.wav" 0 04:33:60
|
||||
|
||||
|
||||
// Track 2
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAAA0300351"
|
||||
FILE "data.wav" 04:33:60 04:16:35
|
||||
|
||||
|
||||
// Track 3
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAAA0300352"
|
||||
FILE "data.wav" 08:50:20 03:03:70
|
||||
|
||||
|
||||
// Track 4
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAAA0300353"
|
||||
FILE "data.wav" 11:54:15 02:16:10
|
||||
|
||||
|
||||
// Track 5
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAAA0300355"
|
||||
FILE "data.wav" 14:10:25 03:32:25
|
||||
|
||||
|
||||
// Track 6
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAAA0300356"
|
||||
FILE "data.wav" 17:42:50 03:09:50
|
||||
|
||||
|
||||
// Track 7
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAAA0300357"
|
||||
FILE "data.wav" 20:52:25 02:26:60
|
||||
|
||||
|
||||
// Track 8
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAAA0300358"
|
||||
FILE "data.wav" 23:19:10 02:46:60
|
||||
|
||||
|
||||
// Track 9
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAAA0300359"
|
||||
FILE "data.wav" 26:05:70 05:02:72
|
||||
|
||||
|
||||
// Track 10
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAAA0300360"
|
||||
FILE "data.wav" 31:08:67 03:50:43
|
||||
|
||||
|
||||
// Track 11
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBAAA0300361"
|
||||
FILE "data.wav" 34:59:35 06:04:20
|
||||
|
||||
|
||||
// Track 12
|
||||
TRACK MODE1
|
||||
NO COPY
|
||||
ZERO MODE1 00:02:00
|
||||
DATAFILE "data_12" 27:30:00 // length in bytes: 253440000
|
||||
START 00:02:00
|
||||
|
||||
1932
whipper/test/cdparanoia.progress
Normal file
1932
whipper/test/cdparanoia.progress
Normal file
File diff suppressed because it is too large
Load Diff
2501
whipper/test/cdparanoia.progress.error
Normal file
2501
whipper/test/cdparanoia.progress.error
Normal file
File diff suppressed because it is too large
Load Diff
111
whipper/test/cdparanoia.progress.strokes
Normal file
111
whipper/test/cdparanoia.progress.strokes
Normal file
@@ -0,0 +1,111 @@
|
||||
Sending all callbacks to stderr for wrapper script
|
||||
cdparanoia III release 10.2 (September 11, 2008)
|
||||
|
||||
Ripping from sector 0 (track 0 [0:00.00])
|
||||
to sector 0 (track 0 [0:00.00])
|
||||
|
||||
outputting to cdda.wav
|
||||
|
||||
##: 0 [read] @ 24696
|
||||
##: 0 [read] @ 56448
|
||||
##: 0 [read] @ 88200
|
||||
##: 0 [read] @ 119952
|
||||
##: 0 [read] @ 151704
|
||||
##: 0 [read] @ 183456
|
||||
##: 0 [read] @ 215208
|
||||
##: 0 [read] @ 246960
|
||||
##: 0 [read] @ 278712
|
||||
##: 0 [read] @ 310464
|
||||
##: 0 [read] @ 342216
|
||||
##: 0 [read] @ 373968
|
||||
##: 0 [read] @ 405720
|
||||
##: 0 [read] @ 437472
|
||||
##: 0 [read] @ 469224
|
||||
##: 0 [read] @ 500976
|
||||
##: 0 [read] @ 532728
|
||||
##: 0 [read] @ 564480
|
||||
##: 0 [read] @ 596232
|
||||
##: 0 [read] @ 627984
|
||||
##: 0 [read] @ 659736
|
||||
##: 0 [read] @ 691488
|
||||
##: 0 [read] @ 723240
|
||||
##: 0 [read] @ 754992
|
||||
##: 0 [read] @ 786744
|
||||
##: 0 [read] @ 818496
|
||||
##: 0 [read] @ 850248
|
||||
##: 0 [read] @ 882000
|
||||
##: 0 [read] @ 913752
|
||||
##: 0 [read] @ 945504
|
||||
##: 0 [read] @ 977256
|
||||
##: 0 [read] @ 1009008
|
||||
##: 0 [read] @ 1040760
|
||||
##: 0 [read] @ 1072512
|
||||
##: 0 [read] @ 1104264
|
||||
##: 0 [read] @ 1136016
|
||||
##: 0 [read] @ 1167768
|
||||
##: 0 [read] @ 1199520
|
||||
##: 0 [read] @ 1231272
|
||||
##: 0 [read] @ 1263024
|
||||
##: 0 [read] @ 1294776
|
||||
##: 0 [read] @ 1326528
|
||||
##: 0 [read] @ 1358280
|
||||
##: 0 [read] @ 1390032
|
||||
##: 0 [read] @ 1410024
|
||||
##: 0 [read] @ 23520
|
||||
##: 0 [read] @ 55272
|
||||
##: 0 [read] @ 87024
|
||||
##: 0 [read] @ 118776
|
||||
##: 0 [read] @ 150528
|
||||
##: 0 [read] @ 182280
|
||||
##: 0 [read] @ 214032
|
||||
##: 0 [read] @ 245784
|
||||
##: 0 [read] @ 277536
|
||||
##: 0 [read] @ 309288
|
||||
##: 0 [read] @ 341040
|
||||
##: 0 [read] @ 372792
|
||||
##: 0 [read] @ 404544
|
||||
##: 0 [read] @ 436296
|
||||
##: 0 [read] @ 468048
|
||||
##: 0 [read] @ 499800
|
||||
##: 0 [read] @ 531552
|
||||
##: 0 [read] @ 563304
|
||||
##: 0 [read] @ 595056
|
||||
##: 0 [read] @ 626808
|
||||
##: 0 [read] @ 658560
|
||||
##: 0 [read] @ 690312
|
||||
##: 0 [read] @ 722064
|
||||
##: 0 [read] @ 753816
|
||||
##: 0 [read] @ 785568
|
||||
##: 0 [read] @ 817320
|
||||
##: 0 [read] @ 849072
|
||||
##: 0 [read] @ 880824
|
||||
##: 0 [read] @ 912576
|
||||
##: 0 [read] @ 944328
|
||||
##: 0 [read] @ 976080
|
||||
##: 0 [read] @ 1007832
|
||||
##: 0 [read] @ 1039584
|
||||
##: 0 [read] @ 1071336
|
||||
##: 0 [read] @ 1103088
|
||||
##: 0 [read] @ 1134840
|
||||
##: 0 [read] @ 1166592
|
||||
##: 0 [read] @ 1198344
|
||||
##: 0 [read] @ 1230096
|
||||
##: 0 [read] @ 1261848
|
||||
##: 0 [read] @ 1293600
|
||||
##: 0 [read] @ 1325352
|
||||
##: 0 [read] @ 1357104
|
||||
##: 0 [read] @ 1388856
|
||||
##: 0 [read] @ 1410024
|
||||
##: 1 [verify] @ 0
|
||||
##: 3 [correction] @ 1005459
|
||||
##: 3 [correction] @ 1005480
|
||||
##: 1 [verify] @ 1005480
|
||||
##: 1 [verify] @ 1005480
|
||||
##: -2 [wrote] @ 1175
|
||||
##: -2 [wrote] @ 1176
|
||||
##: -1 [finished] @ 1175
|
||||
|
||||
|
||||
Done.
|
||||
|
||||
|
||||
373
whipper/test/cdparanoia/MATSHITA.cdparanoia-A.log
Normal file
373
whipper/test/cdparanoia/MATSHITA.cdparanoia-A.log
Normal file
@@ -0,0 +1,373 @@
|
||||
cdparanoia -A
|
||||
cdparanoia III release 10.2 (September 11, 2008)
|
||||
|
||||
Using cdda library version: 10.2
|
||||
Using paranoia library version: 10.2
|
||||
|
||||
Attempting to set cdrom to full speed...
|
||||
drive returned OK.
|
||||
|
||||
=================== Checking drive cache/timing behavior ===================
|
||||
|
||||
Seek/read timing:
|
||||
|
||||
[45:24.28]:
|
||||
204328:1:46 204329:27:33 204356:27:35 204383:27:33 204410:27:35 204437:27:33 204464:27:35 204491:27:33 204518:27:35 204545:27:33 204572:27:35 204599:27:32 204626:27:35 204653:27:33 204680:27:35 204707:27:33 204734:27:35 204761:27:33 204788:27:35 204815:27:33 204842:27:35 204869:27:33 204896:27:35 204923:27:32 204950:27:35 204977:27:33 205004:27:35 205031:27:33 205058:27:35 205085:27:33 205112:27:35 205139:27:33 205166:27:35 205193:27:33 205220:27:35 205247:27:33 205274:27:35 205301:27:33
|
||||
Initial seek latency (1000 sectors): 46ms
|
||||
Average read latency: 1.26ms/sector (raw speed: 10.6x)
|
||||
Read latency standard deviation: 0.04ms/sector
|
||||
[45:24.27]:
|
||||
204327:1:45 204328:27:33 204355:27:35 204382:27:33 204409:27:35 204436:27:33 204463:27:35 204490:27:33 204517:27:35 204544:27:32 204571:27:35 204598:27:32 204625:27:35 204652:27:33 204679:27:35 204706:27:33 204733:27:35 204760:27:33 204787:27:35 204814:27:33 204841:27:35 204868:27:32 204895:27:35 204922:27:32 204949:27:35 204976:27:33 205003:27:35 205030:27:33 205057:27:35 205084:27:33 205111:27:35 205138:27:33 205165:27:35 205192:27:33 205219:27:35 205246:27:33 205273:27:35 205300:27:33
|
||||
Initial seek latency (1000 sectors): 45ms
|
||||
Average read latency: 1.25ms/sector (raw speed: 10.6x)
|
||||
Read latency standard deviation: 0.04ms/sector
|
||||
[45:24.26]:
|
||||
204326:1:45 204327:27:33 204354:27:35 204381:27:33 204408:27:35 204435:27:33 204462:27:35 204489:27:33 204516:27:35 204543:27:33 204570:27:35 204597:27:33 204624:27:35 204651:27:33 204678:27:35 204705:27:33 204732:27:35 204759:27:33 204786:27:35 204813:27:33 204840:27:35 204867:27:33 204894:27:35 204921:27:33 204948:27:35 204975:27:33 205002:27:35 205029:27:33 205056:27:35 205083:27:32 205110:27:35 205137:27:33 205164:27:35 205191:27:33 205218:27:35 205245:27:33 205272:27:35 205299:27:32
|
||||
Initial seek latency (1000 sectors): 45ms
|
||||
Average read latency: 1.26ms/sector (raw speed: 10.6x)
|
||||
Read latency standard deviation: 0.04ms/sector
|
||||
[45:24.25]:
|
||||
204325:1:44 204326:27:33 204353:27:35 204380:27:33 204407:27:35 204434:27:32 204461:27:35 204488:27:33 204515:27:35 204542:27:33 204569:27:35 204596:27:33 204623:27:35 204650:27:33 204677:27:35 204704:27:33 204731:27:35 204758:27:32 204785:27:35 204812:27:33 204839:27:35 204866:27:33 204893:27:35 204920:27:33 204947:27:35 204974:27:33 205001:27:35 205028:27:33 205055:27:35 205082:27:33 205109:27:35 205136:27:33 205163:27:35 205190:27:32 205217:27:35 205244:27:33 205271:27:35 205298:27:33
|
||||
Initial seek latency (1000 sectors): 44ms
|
||||
Average read latency: 1.26ms/sector (raw speed: 10.6x)
|
||||
Read latency standard deviation: 0.04ms/sector
|
||||
[45:24.24]:
|
||||
204324:1:45 204325:27:33 204352:27:35 204379:27:32 204406:27:35 204433:27:33 204460:27:35 204487:27:33 204514:27:35 204541:27:33 204568:27:35 204595:27:32 204622:27:35 204649:27:33 204676:27:35 204703:27:33 204730:27:35 204757:27:33 204784:27:35 204811:27:32 204838:27:35 204865:27:33 204892:27:35 204919:27:33 204946:27:35 204973:27:33 205000:27:35 205027:27:33 205054:27:35 205081:27:33 205108:27:35 205135:27:33 205162:27:35 205189:27:33 205216:27:35 205243:27:33 205270:27:35 205297:27:33
|
||||
Initial seek latency (1000 sectors): 45ms
|
||||
Average read latency: 1.26ms/sector (raw speed: 10.6x)
|
||||
Read latency standard deviation: 0.04ms/sector
|
||||
[40:00.00]:
|
||||
180000:1:50 180001:27:34 180028:27:37 180055:27:34 180082:27:37 180109:27:34 180136:27:37 180163:27:34 180190:27:37 180217:27:34 180244:27:37 180271:27:34 180298:27:37 180325:27:34 180352:27:37 180379:27:34 180406:27:37 180433:27:34 180460:27:37 180487:27:34 180514:27:37 180541:27:34 180568:27:37 180595:27:34 180622:27:37 180649:27:34 180676:27:37 180703:27:34 180730:27:37 180757:27:34 180784:27:37 180811:27:34 180838:27:37 180865:27:34 180892:27:37 180919:27:34 180946:27:37 180973:27:34
|
||||
Initial seek latency (1000 sectors): 50ms
|
||||
Average read latency: 1.31ms/sector (raw speed: 10.2x)
|
||||
Read latency standard deviation: 0.06ms/sector
|
||||
[30:00.00]:
|
||||
135000:1:64 135001:27:38 135028:27:41 135055:27:38 135082:27:41 135109:27:38 135136:27:41 135163:27:38 135190:27:41 135217:27:38 135244:27:41 135271:27:38 135298:27:41 135325:27:38 135352:27:41 135379:27:38 135406:27:41 135433:27:38 135460:27:41 135487:27:38 135514:27:41 135541:27:38 135568:27:41 135595:27:38 135622:27:41 135649:27:38 135676:27:41 135703:27:38 135730:27:41 135757:27:38 135784:27:41 135811:27:38 135838:27:41 135865:27:38 135892:27:41 135919:27:38 135946:27:41 135973:27:38
|
||||
Initial seek latency (1000 sectors): 64ms
|
||||
Average read latency: 1.46ms/sector (raw speed: 9.1x)
|
||||
Read latency standard deviation: 0.06ms/sector
|
||||
[20:00.00]:
|
||||
90000:1:63 90001:27:43 90028:27:47 90055:27:43 90082:27:47 90109:27:43 90136:27:46 90163:27:43 90190:27:47 90217:27:43 90244:27:46 90271:27:43 90298:27:47 90325:27:43 90352:27:46 90379:27:43 90406:27:46 90433:27:43 90460:27:46 90487:27:43 90514:27:46 90541:27:43 90568:27:46 90595:27:43 90622:27:46 90649:27:43 90676:27:46 90703:27:43 90730:27:46 90757:27:43 90784:27:46 90811:27:43 90838:27:46 90865:27:43 90892:27:46 90919:27:43 90946:27:46 90973:27:43
|
||||
Initial seek latency (1000 sectors): 63ms
|
||||
Average read latency: 1.65ms/sector (raw speed: 8.1x)
|
||||
Read latency standard deviation: 0.06ms/sector
|
||||
[10:00.00]:
|
||||
45000:1:61 45001:27:51 45028:27:55 45055:27:51 45082:27:55 45109:27:52 45136:27:55 45163:27:51 45190:27:55 45217:27:51 45244:27:55 45271:27:51 45298:27:55 45325:27:51 45352:27:55 45379:27:51 45406:27:55 45433:27:51 45460:27:55 45487:27:51 45514:27:55 45541:27:51 45568:27:55 45595:27:51 45622:27:55 45649:27:51 45676:27:55 45703:27:51 45730:27:55 45757:27:51 45784:27:55 45811:27:51 45838:27:55 45865:27:51 45892:27:55 45919:27:51 45946:27:55 45973:27:51
|
||||
Initial seek latency (1000 sectors): 61ms
|
||||
Average read latency: 1.96ms/sector (raw speed: 6.8x)
|
||||
Read latency standard deviation: 0.07ms/sector
|
||||
[00:00.00]:
|
||||
0:1:84 1:27:67 28:27:72 55:27:67 82:27:72 109:27:67 136:27:72 163:27:67 190:27:72 217:27:67 244:27:72 271:27:67 298:27:72 325:27:67 352:27:72 379:27:67 406:27:72 433:27:67 460:27:72 487:27:67 514:27:72 541:27:67 568:27:72 595:27:67 622:27:72 649:27:67 676:27:72 703:27:67 730:27:72 757:27:67 784:27:72 811:27:67 838:27:72 865:27:67 892:27:72 919:27:67 946:27:72 973:27:67
|
||||
Initial seek latency (1000 sectors): 84ms
|
||||
Average read latency: 2.57ms/sector (raw speed: 5.2x)
|
||||
Read latency standard deviation: 0.09ms/sector
|
||||
|
||||
Analyzing cache behavior...
|
||||
Fast search for approximate cache size... 0 sectors
|
||||
>>> fast_read=10:1:71 seek_read=10:1:0
|
||||
Fast search for approximate cache size... 1 sectors
|
||||
>>> fast_read=11:1:0 seek_read=10:1:65
|
||||
>>> fast_read=11:1:0
|
||||
Fast search for approximate cache size... 2 sectors
|
||||
>>> fast_read=12:1:4 seek_read=10:1:61
|
||||
>>> fast_read=12:1:5
|
||||
Fast search for approximate cache size... 3 sectors
|
||||
>>> fast_read=13:1:0 seek_read=10:1:61
|
||||
>>> fast_read=13:1:5
|
||||
Fast search for approximate cache size... 4 sectors
|
||||
>>> fast_read=14:1:5 seek_read=10:1:56
|
||||
>>> fast_read=14:1:10 seek_read=10:1:56
|
||||
>>> fast_read=14:1:10 seek_read=10:1:56
|
||||
>>> fast_read=14:1:10 seek_read=10:1:56
|
||||
>>> fast_read=14:1:10 seek_read=10:1:56
|
||||
>>> fast_read=14:1:10 seek_read=10:1:56
|
||||
>>> fast_read=14:1:10 seek_read=10:1:56
|
||||
>>> fast_read=14:1:10 seek_read=10:1:56
|
||||
>>> fast_read=14:1:10 seek_read=10:1:56
|
||||
>>> fast_read=14:1:10 seek_read=10:1:56
|
||||
>>> fast_read=14:1:10 seek_read=10:1:56
|
||||
>>> fast_read=14:1:10 seek_read=10:1:56
|
||||
>>> fast_read=14:1:10 seek_read=10:1:56
|
||||
>>> fast_read=14:1:10 seek_read=10:1:56
|
||||
>>> fast_read=14:1:10 seek_read=10:1:56
|
||||
Slow verify for approximate cache size... 4 sectors
|
||||
Attempting to reduce read speed to 1x... drive said OK
|
||||
>>> slow_read=10:5:10 seek_read=10:1:0
|
||||
Attempting to reset read speed to full... drive said OK
|
||||
Fast search for approximate cache size... 5 sectors
|
||||
>>> fast_read=15:1:0 seek_read=10:1:54
|
||||
>>> fast_read=15:1:10 seek_read=10:1:56
|
||||
>>> fast_read=15:1:10 seek_read=10:1:56
|
||||
>>> fast_read=15:1:10 seek_read=10:1:56
|
||||
>>> fast_read=15:1:10 seek_read=10:1:56
|
||||
>>> fast_read=15:1:10 seek_read=10:1:56
|
||||
>>> fast_read=15:1:10 seek_read=10:1:56
|
||||
>>> fast_read=15:1:10 seek_read=10:1:56
|
||||
>>> fast_read=15:1:10 seek_read=10:1:56
|
||||
>>> fast_read=15:1:10 seek_read=10:1:56
|
||||
>>> fast_read=15:1:10 seek_read=10:1:56
|
||||
>>> fast_read=15:1:10 seek_read=10:1:56
|
||||
>>> fast_read=15:1:10 seek_read=10:1:56
|
||||
>>> fast_read=15:1:10 seek_read=10:1:56
|
||||
>>> fast_read=15:1:10 seek_read=10:1:56
|
||||
Slow verify for approximate cache size... 5 sectors
|
||||
Attempting to reduce read speed to 1x... drive said OK
|
||||
>>> slow_read=10:6:9 seek_read=10:1:0
|
||||
Attempting to reset read speed to full... drive said OK
|
||||
Fast search for approximate cache size... 6 sectors
|
||||
>>> fast_read=16:1:4 seek_read=10:1:51
|
||||
>>> fast_read=16:1:15 seek_read=10:1:51
|
||||
>>> fast_read=16:1:15 seek_read=10:1:51
|
||||
>>> fast_read=16:1:15 seek_read=10:1:51
|
||||
>>> fast_read=16:1:15 seek_read=10:1:51
|
||||
>>> fast_read=16:1:15 seek_read=10:1:51
|
||||
>>> fast_read=16:1:15 seek_read=10:1:51
|
||||
>>> fast_read=16:1:15 seek_read=10:1:51
|
||||
>>> fast_read=16:1:15 seek_read=10:1:51
|
||||
>>> fast_read=16:1:15 seek_read=10:1:51
|
||||
>>> fast_read=16:1:15 seek_read=10:1:51
|
||||
>>> fast_read=16:1:15 seek_read=10:1:51
|
||||
>>> fast_read=16:1:15 seek_read=10:1:51
|
||||
>>> fast_read=16:1:15 seek_read=10:1:51
|
||||
>>> fast_read=16:1:15 seek_read=10:1:51
|
||||
Slow verify for approximate cache size... 6 sectors
|
||||
Attempting to reduce read speed to 1x... drive said OK
|
||||
>>> slow_read=10:7:15 seek_read=10:1:0
|
||||
Attempting to reset read speed to full... drive said OK
|
||||
Fast search for approximate cache size... 7 sectors
|
||||
>>> fast_read=17:1:0 seek_read=10:1:49
|
||||
>>> fast_read=17:1:15 seek_read=10:1:51
|
||||
>>> fast_read=17:1:15 seek_read=10:1:51
|
||||
>>> fast_read=17:1:15 seek_read=10:1:51
|
||||
>>> fast_read=17:1:15 seek_read=10:1:51
|
||||
>>> fast_read=17:1:15 seek_read=10:1:51
|
||||
>>> fast_read=17:1:15 seek_read=10:1:51
|
||||
>>> fast_read=17:1:15 seek_read=10:1:51
|
||||
>>> fast_read=17:1:15 seek_read=10:1:51
|
||||
>>> fast_read=17:1:15 seek_read=10:1:51
|
||||
>>> fast_read=17:1:15 seek_read=10:1:51
|
||||
>>> fast_read=17:1:15 seek_read=10:1:51
|
||||
>>> fast_read=17:1:15 seek_read=10:1:51
|
||||
>>> fast_read=17:1:15 seek_read=10:1:51
|
||||
>>> fast_read=17:1:15 seek_read=10:1:51
|
||||
Slow verify for approximate cache size... 7 sectors
|
||||
Attempting to reduce read speed to 1x... drive said OK
|
||||
>>> slow_read=10:8:15 seek_read=10:1:0
|
||||
Attempting to reset read speed to full... drive said OK
|
||||
Fast search for approximate cache size... 8 sectors
|
||||
>>> fast_read=18:1:3 seek_read=10:1:46
|
||||
>>> fast_read=18:1:20 seek_read=10:1:46
|
||||
>>> fast_read=18:1:20 seek_read=10:1:46
|
||||
>>> fast_read=18:1:21 seek_read=10:1:46
|
||||
>>> fast_read=18:1:20 seek_read=10:1:46
|
||||
>>> fast_read=18:1:20 seek_read=10:1:46
|
||||
>>> fast_read=18:1:20 seek_read=10:1:46
|
||||
>>> fast_read=18:1:21 seek_read=10:1:45
|
||||
>>> fast_read=18:1:21 seek_read=10:1:45
|
||||
>>> fast_read=18:1:20 seek_read=10:1:46
|
||||
>>> fast_read=18:1:20 seek_read=10:1:46
|
||||
>>> fast_read=18:1:20 seek_read=10:1:46
|
||||
>>> fast_read=18:1:20 seek_read=10:1:46
|
||||
>>> fast_read=18:1:20 seek_read=10:1:46
|
||||
>>> fast_read=18:1:20 seek_read=10:1:46
|
||||
Slow verify for approximate cache size... 8 sectors
|
||||
Attempting to reduce read speed to 1x... drive said OK
|
||||
>>> slow_read=10:9:18 seek_read=10:1:46
|
||||
>>> slow_read=10:9:20 seek_read=10:1:46
|
||||
>>> slow_read=10:9:20 seek_read=10:1:45
|
||||
>>> slow_read=10:9:20 seek_read=10:1:46
|
||||
>>> slow_read=10:9:20 seek_read=10:1:46
|
||||
>>> slow_read=10:9:20 seek_read=10:1:46
|
||||
>>> slow_read=10:9:20 seek_read=10:1:46
|
||||
>>> slow_read=10:9:20 seek_read=10:1:46
|
||||
>>> slow_read=10:9:20 seek_read=10:1:46
|
||||
>>> slow_read=10:9:20 seek_read=10:1:46
|
||||
Approximate random access cache size: 8 sector(s)
|
||||
Attempting to reset read speed to full... drive said OK
|
||||
Verifying that cache is contiguous... >>> 34:1:61 seek_read:10:1:49
|
||||
>>> 34:1:62 seek_read:10:1:49
|
||||
>>> 34:1:62 seek_read:10:1:49
|
||||
>>> 34:1:62 seek_read:10:1:49
|
||||
>>> 34:1:62 seek_read:10:1:49
|
||||
>>> 34:1:62 seek_read:10:1:49
|
||||
>>> 34:1:62 seek_read:10:1:49
|
||||
>>> 34:1:62 seek_read:10:1:49
|
||||
>>> 34:1:62 seek_read:10:1:49
|
||||
>>> 34:1:62 seek_read:10:1:49
|
||||
>>> 34:1:62 seek_read:10:1:49
|
||||
>>> 34:1:62 seek_read:10:1:49
|
||||
>>> 34:1:62 seek_read:10:1:49
|
||||
>>> 34:1:62 seek_read:10:1:49
|
||||
>>> 34:1:62 seek_read:10:1:49
|
||||
>>> 34:1:62 seek_read:10:1:49
|
||||
>>> 34:1:62 seek_read:10:1:49
|
||||
>>> 34:1:62 seek_read:10:1:49
|
||||
>>> 34:1:62 seek_read:10:1:49
|
||||
>>> 34:1:62 seek_read:10:1:49
|
||||
Drive cache tests as contiguous
|
||||
|
||||
Testing background readahead past read cursor... 64
|
||||
0 >>> 10:8:15 sleep=197299us seek=81:1:0
|
||||
Testing background readahead past read cursor... 128
|
||||
0 >>> 10:8:69 sleep=394598us seek=145:1:0
|
||||
Testing background readahead past read cursor... 192
|
||||
0 >>> 10:8:73 sleep=591897us seek=209:1:0
|
||||
Testing background readahead past read cursor... 256
|
||||
0 >>> 10:8:77 sleep=789196us seek=273:1:0
|
||||
Testing background readahead past read cursor... 320
|
||||
0 >>> 10:8:81 sleep=986496us seek=337:1:50
|
||||
1 >>> 10:8:81 sleep=1150912us seek=337:1:64
|
||||
Retiming drive...
|
||||
10:1:65 11:27:67 38:27:72 65:27:67 92:27:72 119:27:67 146:27:72 173:27:67 200:27:72 227:27:67 254:27:72 281:27:67 308:27:72 335:27:67 362:27:72 389:27:67 416:27:72 443:27:67 470:27:72 497:27:67 524:27:72 551:27:67 578:27:72 605:27:67 632:27:72 659:27:67 686:27:72 713:27:67 740:27:72 767:27:67 794:27:72 821:27:67 848:27:72 875:27:67 902:27:72 929:27:67 956:27:72 983:27:67 1010:27:72 1037:27:67 1064:27:72 1091:27:67 1118:27:72 1145:27:67 1172:27:72 1199:27:67 1226:27:72 1253:27:67 1280:27:72 1307:27:67 1334:27:72 1361:27:67 1388:27:72 1415:27:66 1442:27:72 1469:27:67 1496:27:72 1523:27:66 1550:27:72 1577:27:66 1604:27:71 1631:27:66 1658:27:72 1685:27:66 1712:27:71 1739:27:66 1766:27:71 1793:27:66 1820:27:71 1847:27:66 1874:27:71 1901:27:66 1928:27:71 1955:1:0
|
||||
Initial seek latency (1946 sectors): 65ms
|
||||
Average read latency: 2.57ms/sector (raw speed: 5.2x)
|
||||
Read latency standard deviation: 0.11ms/sector
|
||||
Old mean=2.57ms/sec, New mean=2.56ms/sec
|
||||
|
||||
2 >>> 10:8:106 sleep=1315328us seek=337:1:56
|
||||
Testing background readahead past read cursor... 264
|
||||
0 >>> 10:8:81 sleep=813859us seek=281:1:0
|
||||
Testing background readahead past read cursor... 272
|
||||
0 >>> 10:8:79 sleep=838521us seek=289:1:50
|
||||
1 >>> 10:8:72 sleep=978275us seek=289:1:45
|
||||
Retiming drive...
|
||||
10:1:56 11:27:67 38:27:72 65:27:67 92:27:72 119:27:67 146:27:72 173:27:67 200:27:72 227:27:67 254:27:72 281:27:67 308:27:72 335:27:67 362:27:72 389:27:67 416:27:72 443:27:67 470:27:72 497:27:67 524:27:72 551:27:67 578:27:72 605:27:67 632:27:72 659:27:67 686:27:72 713:27:67 740:27:72 767:27:67 794:27:72 821:27:67 848:27:72 875:27:67 902:27:72 929:27:67 956:27:72 983:27:67 1010:27:72 1037:27:67 1064:27:72 1091:27:67 1118:27:72 1145:27:67 1172:27:72 1199:27:67 1226:27:72 1253:27:67 1280:27:72 1307:27:67 1334:27:72 1361:27:67 1388:27:72 1415:27:67 1442:27:72 1469:27:66 1496:27:72 1523:27:66 1550:27:72 1577:27:66 1604:27:72 1631:27:66 1658:27:72 1685:27:66 1712:27:71 1739:27:66 1766:27:71 1793:27:66 1820:27:71 1847:27:66 1874:27:71 1901:27:66 1928:27:71 1955:1:0
|
||||
Initial seek latency (1946 sectors): 56ms
|
||||
Average read latency: 2.57ms/sector (raw speed: 5.2x)
|
||||
Read latency standard deviation: 0.11ms/sector
|
||||
Old mean=2.57ms/sec, New mean=2.56ms/sec
|
||||
|
||||
2 >>> 10:8:105 sleep=1118028us seek=289:1:39
|
||||
Testing background readahead past read cursor... 265
|
||||
0 >>> 10:8:71 sleep=816942us seek=282:1:54
|
||||
1 >>> 10:8:67 sleep=953098us seek=282:1:52
|
||||
Retiming drive...
|
||||
10:1:51 11:27:67 38:27:72 65:27:67 92:27:72 119:27:67 146:27:72 173:27:67 200:27:72 227:27:67 254:27:72 281:27:67 308:27:72 335:27:67 362:27:72 389:27:67 416:27:72 443:27:67 470:27:72 497:27:67 524:27:72 551:27:67 578:27:72 605:27:67 632:27:72 659:27:67 686:27:72 713:27:67 740:27:72 767:27:67 794:27:72 821:27:67 848:27:72 875:27:67 902:27:72 929:27:67 956:27:72 983:27:67 1010:27:72 1037:27:67 1064:27:72 1091:27:67 1118:27:72 1145:27:67 1172:27:72 1199:27:67 1226:27:72 1253:27:67 1280:27:72 1307:27:67 1334:27:72 1361:27:67 1388:27:72 1415:27:67 1442:27:71 1469:27:67 1496:27:72 1523:27:66 1550:27:72 1577:27:67 1604:27:71 1631:27:66 1658:27:72 1685:27:66 1712:27:72 1739:27:67 1766:27:71 1793:27:66 1820:27:71 1847:27:66 1874:27:71 1901:27:67 1928:27:71 1955:1:0
|
||||
Initial seek latency (1946 sectors): 51ms
|
||||
Average read latency: 2.57ms/sector (raw speed: 5.2x)
|
||||
Read latency standard deviation: 0.11ms/sector
|
||||
Old mean=2.57ms/sec, New mean=2.57ms/sec
|
||||
|
||||
2 >>> 10:8:106 sleep=1089256us seek=282:1:50
|
||||
3 >>> 10:8:67 sleep=1225413us seek=282:1:48
|
||||
4 >>> 10:8:67 sleep=1361569us seek=282:1:46
|
||||
Retiming drive...
|
||||
10:1:52 11:27:67 38:27:72 65:27:67 92:27:72 119:27:67 146:27:72 173:27:67 200:27:72 227:27:67 254:27:72 281:27:67 308:27:72 335:27:67 362:27:72 389:27:67 416:27:72 443:27:67 470:27:72 497:27:67 524:27:72 551:27:67 578:27:72 605:27:67 632:27:72 659:27:67 686:27:72 713:27:67 740:27:72 767:27:67 794:27:72 821:27:67 848:27:72 875:27:67 902:27:72 929:27:67 956:27:72 983:27:67 1010:27:72 1037:27:67 1064:27:72 1091:27:67 1118:27:72 1145:27:67 1172:27:72 1199:27:67 1226:27:72 1253:27:67 1280:27:72 1307:27:67 1334:27:72 1361:27:67 1388:27:72 1415:27:66 1442:27:72 1469:27:66 1496:27:72 1523:27:67 1550:27:72 1577:27:66 1604:27:72 1631:27:66 1658:27:72 1685:27:66 1712:27:71 1739:27:67 1766:27:71 1793:27:66 1820:27:71 1847:27:66 1874:27:71 1901:27:66 1928:27:71 1955:1:0
|
||||
Initial seek latency (1946 sectors): 52ms
|
||||
Average read latency: 2.57ms/sector (raw speed: 5.2x)
|
||||
Read latency standard deviation: 0.11ms/sector
|
||||
Old mean=2.57ms/sec, New mean=2.56ms/sec
|
||||
|
||||
5 >>> 10:8:106 sleep=1497727us seek=282:1:44
|
||||
6 >>> 10:8:90 sleep=1633884us seek=282:1:42
|
||||
7 >>> 10:8:67 sleep=1770041us seek=282:1:40
|
||||
Retiming drive...
|
||||
10:1:52 11:27:67 38:27:72 65:27:67 92:27:72 119:27:67 146:27:72 173:27:67 200:27:72 227:27:67 254:27:72 281:27:67 308:27:72 335:27:67 362:27:72 389:27:67 416:27:72 443:27:67 470:27:72 497:27:67 524:27:72 551:27:67 578:27:72 605:27:67 632:27:72 659:27:67 686:27:72 713:27:67 740:27:72 767:27:67 794:27:72 821:27:67 848:27:72 875:27:67 902:27:72 929:27:67 956:27:72 983:27:67 1010:27:72 1037:27:67 1064:27:72 1091:27:67 1118:27:72 1145:27:67 1172:27:72 1199:27:67 1226:27:72 1253:27:67 1280:27:72 1307:27:66 1334:27:72 1361:27:67 1388:27:72 1415:27:67 1442:27:72 1469:27:66 1496:27:72 1523:27:66 1550:27:72 1577:27:67 1604:27:72 1631:27:66 1658:27:72 1685:27:66 1712:27:71 1739:27:66 1766:27:72 1793:27:66 1820:27:71 1847:27:66 1874:27:71 1901:27:66 1928:27:71 1955:1:0
|
||||
Initial seek latency (1946 sectors): 52ms
|
||||
Average read latency: 2.57ms/sector (raw speed: 5.2x)
|
||||
Read latency standard deviation: 0.11ms/sector
|
||||
Old mean=2.57ms/sec, New mean=2.56ms/sec
|
||||
|
||||
8 >>> 10:8:106 sleep=1906197us seek=282:1:60
|
||||
9 >>> 10:8:67 sleep=2042354us seek=282:1:58
|
||||
Drive readahead past read cursor: 264 sector(s)
|
||||
Testing cache tail cursor...
|
||||
>>> 10:8:67
|
||||
sleeping 1017324 microseconds
|
||||
<<< 7:1:0 6:1:55
|
||||
>>> 10:8:66
|
||||
sleeping 1017324 microseconds
|
||||
<<< 6:1:0 5:1:52
|
||||
>>> 10:8:69
|
||||
sleeping 1017324 microseconds
|
||||
<<< 5:1:0 4:1:49
|
||||
>>> 10:8:72
|
||||
sleeping 1017324 microseconds
|
||||
<<< 4:1:0 3:1:69
|
||||
>>> 10:8:74
|
||||
sleeping 1017324 microseconds
|
||||
<<< 3:1:0 2:1:67
|
||||
>>> 10:8:77
|
||||
sleeping 1017324 microseconds
|
||||
<<< 2:1:0 1:1:64
|
||||
>>> 10:8:79
|
||||
sleeping 1017324 microseconds
|
||||
<<< 1:1:0 0:1:61
|
||||
>>> 10:8:15
|
||||
sleeping 1017324 microseconds
|
||||
<<< 0:1:0
|
||||
Retiming drive...
|
||||
10:1:0 11:27:1 38:27:1 65:27:1 92:27:1 119:27:1 146:27:3 173:27:3 200:27:3 227:27:3 254:27:3 281:27:91 308:27:72 335:27:67 362:27:72 389:27:67 416:27:72 443:27:67 470:27:72 497:27:67 524:27:72 551:27:67 578:27:72 605:27:67 632:27:72 659:27:67 686:27:72 713:27:67 740:27:72 767:27:67 794:27:72 821:27:67 848:27:72 875:27:67 902:27:72 929:27:67 956:27:72 983:27:67 1010:27:72 1037:27:67 1064:27:72 1091:27:67 1118:27:72 1145:27:67 1172:27:72 1199:27:67 1226:27:72 1253:27:67 1280:27:72 1307:27:67 1334:27:72 1361:27:67 1388:27:72 1415:27:66 1442:27:71 1469:27:67 1496:27:72 1523:27:66 1550:27:71 1577:27:67 1604:27:71 1631:27:66 1658:27:72 1685:27:66 1712:27:71 1739:27:66 1766:27:71 1793:27:66 1820:27:71 1847:27:66 1874:27:71 1901:27:66 1928:27:71 1955:1:0
|
||||
Initial seek latency (1946 sectors): 0ms
|
||||
Average read latency: 2.23ms/sector (raw speed: 6.0x)
|
||||
Read latency standard deviation: 0.88ms/sector
|
||||
Old mean=2.57ms/sec, New mean=2.23ms/sec
|
||||
|
||||
Cache tail cursor tied to read cursor
|
||||
Testing granularity of cache tail
|
||||
>>> 10:9:112
|
||||
sleeping 1017324 microseconds
|
||||
<<< 18:1:0 17:1:52
|
||||
>>> 10:9:69
|
||||
sleeping 1017324 microseconds
|
||||
<<< 17:1:0 16:1:72
|
||||
>>> 10:9:80
|
||||
sleeping 1017324 microseconds
|
||||
<<< 16:1:0 15:1:69
|
||||
>>> 10:9:74
|
||||
sleeping 1017324 microseconds
|
||||
<<< 15:1:0 14:1:67
|
||||
>>> 10:9:77
|
||||
sleeping 1017324 microseconds
|
||||
<<< 14:1:0 13:1:64
|
||||
>>> 10:9:79
|
||||
sleeping 1017324 microseconds
|
||||
<<< 13:1:0 12:1:61
|
||||
>>> 10:9:82
|
||||
sleeping 1017324 microseconds
|
||||
<<< 12:1:0 11:1:59
|
||||
>>> 10:9:85
|
||||
sleeping 1017324 microseconds
|
||||
<<< 11:1:0 10:1:56
|
||||
>>> 10:9:20
|
||||
sleeping 1017324 microseconds
|
||||
<<< 10:1:57
|
||||
>>> 10:9:20
|
||||
sleeping 1017324 microseconds
|
||||
<<< 10:1:57
|
||||
>>> 10:9:20
|
||||
sleeping 1017324 microseconds
|
||||
<<< 10:1:57
|
||||
>>> 10:9:20
|
||||
sleeping 1017324 microseconds
|
||||
<<< 10:1:57
|
||||
>>> 10:9:20
|
||||
sleeping 1017324 microseconds
|
||||
<<< 10:1:57
|
||||
>>> 10:9:20
|
||||
sleeping 1017324 microseconds
|
||||
<<< 10:1:57
|
||||
>>> 10:9:20
|
||||
sleeping 1017324 microseconds
|
||||
<<< 10:1:57
|
||||
>>> 10:9:20
|
||||
sleeping 1017324 microseconds
|
||||
<<< 10:1:57
|
||||
>>> 10:9:20
|
||||
sleeping 1017324 microseconds
|
||||
<<< 10:1:57
|
||||
>>> 10:9:20
|
||||
sleeping 1017324 microseconds
|
||||
<<< 10:1:57
|
||||
Retiming drive...
|
||||
10:1:0 11:27:66 38:27:72 65:27:67 92:27:72 119:27:67 146:27:72 173:27:67 200:27:72 227:27:67 254:27:72 281:27:67 308:27:72 335:27:67 362:27:72 389:27:67 416:27:72 443:27:67 470:27:72 497:27:67 524:27:72 551:27:67 578:27:72 605:27:67 632:27:72 659:27:67 686:27:72 713:27:67 740:27:72 767:27:67 794:27:72 821:27:67 848:27:72 875:27:67 902:27:72 929:27:67 956:27:72 983:27:67 1010:27:72 1037:27:67 1064:27:72 1091:27:67 1118:27:72 1145:27:67 1172:27:72 1199:27:67 1226:27:72 1253:27:67 1280:27:72 1307:27:67 1334:27:71 1361:27:67 1388:27:72 1415:27:67 1442:27:72 1469:27:66 1496:27:72 1523:27:66 1550:27:72 1577:27:66 1604:27:71 1631:27:66 1658:27:72 1685:27:66 1712:27:71 1739:27:66 1766:27:71 1793:27:67 1820:27:71 1847:27:66 1874:27:71 1901:27:66 1928:27:71 1955:1:0
|
||||
Initial seek latency (1946 sectors): 0ms
|
||||
Average read latency: 2.56ms/sector (raw speed: 5.2x)
|
||||
Read latency standard deviation: 0.11ms/sector
|
||||
Old mean=2.57ms/sec, New mean=2.56ms/sec
|
||||
|
||||
Cache tail granularity: 1 sector(s)
|
||||
Cache size (considering rollbehind) too small to test cache speed.
|
||||
|
||||
Drive tests OK with Paranoia.
|
||||
|
||||
111
whipper/test/cdparanoia/MATSHITA.cdparanoia-A.stderr
Normal file
111
whipper/test/cdparanoia/MATSHITA.cdparanoia-A.stderr
Normal file
@@ -0,0 +1,111 @@
|
||||
cdparanoia III release 10.2 (September 11, 2008)
|
||||
|
||||
Using cdda library version: 10.2
|
||||
Using paranoia library version: 10.2
|
||||
Checking /dev/cdrom for cdrom...
|
||||
Could not stat /dev/cdrom: No such file or directory
|
||||
|
||||
Checking /dev/cdroms/cdrom0 for cdrom...
|
||||
Could not stat /dev/cdroms/cdrom0: No such file or directory
|
||||
|
||||
Checking /dev/cdroms/cdroma for cdrom...
|
||||
Could not stat /dev/cdroms/cdroma: No such file or directory
|
||||
|
||||
Checking /dev/cdroms/cdrom1 for cdrom...
|
||||
Could not stat /dev/cdroms/cdrom1: No such file or directory
|
||||
|
||||
Checking /dev/cdroms/cdromb for cdrom...
|
||||
Could not stat /dev/cdroms/cdromb: No such file or directory
|
||||
|
||||
Checking /dev/cdroms/cdrom2 for cdrom...
|
||||
Could not stat /dev/cdroms/cdrom2: No such file or directory
|
||||
|
||||
Checking /dev/cdroms/cdromc for cdrom...
|
||||
Could not stat /dev/cdroms/cdromc: No such file or directory
|
||||
|
||||
Checking /dev/cdroms/cdrom3 for cdrom...
|
||||
Could not stat /dev/cdroms/cdrom3: No such file or directory
|
||||
|
||||
Checking /dev/cdroms/cdromd for cdrom...
|
||||
Could not stat /dev/cdroms/cdromd: No such file or directory
|
||||
|
||||
Checking /dev/hd0 for cdrom...
|
||||
Could not stat /dev/hd0: No such file or directory
|
||||
|
||||
Checking /dev/hda for cdrom...
|
||||
Could not stat /dev/hda: No such file or directory
|
||||
|
||||
Checking /dev/hd1 for cdrom...
|
||||
Could not stat /dev/hd1: No such file or directory
|
||||
|
||||
Checking /dev/hdb for cdrom...
|
||||
Could not stat /dev/hdb: No such file or directory
|
||||
|
||||
Checking /dev/hd2 for cdrom...
|
||||
Could not stat /dev/hd2: No such file or directory
|
||||
|
||||
Checking /dev/hdc for cdrom...
|
||||
Could not stat /dev/hdc: No such file or directory
|
||||
|
||||
Checking /dev/hd3 for cdrom...
|
||||
Could not stat /dev/hd3: No such file or directory
|
||||
|
||||
Checking /dev/hdd for cdrom...
|
||||
Could not stat /dev/hdd: No such file or directory
|
||||
|
||||
Checking /dev/sg0 for cdrom...
|
||||
Testing /dev/sg0 for SCSI/MMC interface
|
||||
Could not access device /dev/sg0 to test for SG_IO support: Permission denied
|
||||
no SG_IO support for device: /dev/sg0
|
||||
Could not access device /dev/sg0: Permission denied
|
||||
generic device: /dev/sg0
|
||||
ioctl device: not found
|
||||
Could not open generic SCSI device /dev/sg0: Permission denied
|
||||
Testing /dev/sg0 for cooked ioctl() interface
|
||||
/dev/sg0 is not a cooked ioctl CDROM.
|
||||
|
||||
Checking /dev/sga for cdrom...
|
||||
Could not stat /dev/sga: No such file or directory
|
||||
|
||||
Checking /dev/sg1 for cdrom...
|
||||
Testing /dev/sg1 for SCSI/MMC interface
|
||||
SG_IO device: /dev/sg1
|
||||
|
||||
CDROM model sensed sensed: MATSHITA DVD-RAM UJ8A0A SB02
|
||||
|
||||
Checking for SCSI emulation...
|
||||
Drive is ATAPI (using SG_IO host adaptor emulation)
|
||||
|
||||
Checking for MMC style command set...
|
||||
Drive is MMC style
|
||||
DMA scatter/gather table entries: 167
|
||||
table entry size: 524288 bytes
|
||||
maximum theoretical transfer: 37074 sectors
|
||||
Setting default read size to 27 sectors (63504 bytes).
|
||||
|
||||
Verifying CDDA command set...
|
||||
Expected command set reads OK.
|
||||
|
||||
Attempting to set cdrom to full speed...
|
||||
drive returned OK.
|
||||
|
||||
=================== Checking drive cache/timing behavior ===================
|
||||
|
||||
Seek/read timing:
|
||||
|
||||
[45:24.28]: 46ms seek, 1.26ms/sec read [10.6x] spinning up...
|
||||
[45:24.27]: 45ms seek, 1.25ms/sec read [10.6x] spinning up...
|
||||
[45:24.26]: 45ms seek, 1.26ms/sec read [10.6x] spinning up...
|
||||
[45:24.25]: 44ms seek, 1.26ms/sec read [10.6x] spinning up...
|
||||
[45:24.24]: 45ms seek, 1.26ms/sec read [10.6x]
|
||||
[40:00.00]: 50ms seek, 1.31ms/sec read [10.2x]
|
||||
[30:00.00]: 64ms seek, 1.46ms/sec read [9.1x]
|
||||
[20:00.00]: 63ms seek, 1.65ms/sec read [8.1x]
|
||||
[10:00.00]: 61ms seek, 1.96ms/sec read [6.8x]
|
||||
[00:00.00]: 84ms seek, 2.57ms/sec read [5.2x]
|
||||
|
||||
Analyzing cache behavior...
|
||||
|
||||
Fast search for approximate cache size... 0 sectors
|
||||
Fast search for approximate cache size... 1 sectors
|
||||
Fast search for approximate cache size... 2 sectors
|
||||
158
whipper/test/cdparanoia/PX-L890SA.cdparanoia-A.log
Normal file
158
whipper/test/cdparanoia/PX-L890SA.cdparanoia-A.log
Normal file
@@ -0,0 +1,158 @@
|
||||
cdparanoia -A
|
||||
cdparanoia III release 10.2 (September 11, 2008)
|
||||
|
||||
Using cdda library version: 10.2
|
||||
Using paranoia library version: 10.2
|
||||
|
||||
|
||||
Attempting to set cdrom to full speed...
|
||||
drive returned OK.
|
||||
|
||||
=================== Checking drive cache/timing behavior ===================
|
||||
|
||||
Seek/read timing:
|
||||
|
||||
[39:43.53]:
|
||||
178778:1:19 178779:27:19 178806:27:19 178833:27:19 178860:27:19 178887:27:19 178914:27:19 178941:27:19 178968:27:19 178995:27:19 179022:27:19 179049:27:19 179076:27:19 179103:27:19 179130:27:19 179157:27:19 179184:27:19 179211:27:19 179238:27:19 179265:27:19 179292:27:19 179319:27:19 179346:27:19 179373:27:19 179400:27:19 179427:27:19 179454:27:20 179481:27:19 179508:27:19 179535:27:19 179562:27:19 179589:27:19 179616:27:19 179643:27:19 179670:27:19 179697:27:19 179724:27:19 179751:27:19
|
||||
Initial seek latency (1000 sectors): 19ms
|
||||
Average read latency: 0.70ms/sector (raw speed: 18.9x)
|
||||
Read latency standard deviation: 0.01ms/sector
|
||||
[39:43.52]:
|
||||
178777:1:19 178778:27:20 178805:27:20 178832:27:20 178859:27:20 178886:27:20 178913:27:20 178940:27:20 178967:27:732 178994:27:14 179021:27:14 179048:27:14 179075:27:14 179102:27:14 179129:27:14 179156:27:14 179183:27:14 179210:27:14 179237:27:14 179264:27:14 179291:27:14 179318:27:14 179345:27:14 179372:27:14 179399:27:14 179426:27:14 179453:27:14 179480:27:14 179507:27:14 179534:27:14 179561:27:14 179588:27:14 179615:27:14 179642:27:14 179669:27:14 179696:27:14 179723:27:14 179750:27:14
|
||||
Initial seek latency (1000 sectors): 19ms
|
||||
Average read latency: 1.28ms/sector (raw speed: 10.4x)
|
||||
Read latency standard deviation: 4.31ms/sector
|
||||
[39:43.51]:
|
||||
178776:1:23 178777:27:14 178804:27:14 178831:27:14 178858:27:14 178885:27:14 178912:27:14 178939:27:14 178966:27:14 178993:27:14 179020:27:14 179047:27:14 179074:27:14 179101:27:14 179128:27:14 179155:27:14 179182:27:14 179209:27:14 179236:27:14 179263:27:14 179290:27:14 179317:27:14 179344:27:14 179371:27:14 179398:27:14 179425:27:14 179452:27:14 179479:27:14 179506:27:14 179533:27:14 179560:27:14 179587:27:14 179614:27:14 179641:27:14 179668:27:14 179695:27:14 179722:27:14 179749:27:14
|
||||
Initial seek latency (1000 sectors): 23ms
|
||||
Average read latency: 0.52ms/sector (raw speed: 25.7x)
|
||||
Read latency standard deviation: -nanms/sector
|
||||
[39:43.50]:
|
||||
178775:1:231 178776:27:13 178803:27:13 178830:27:13 178857:27:13 178884:27:13 178911:27:13 178938:27:13 178965:27:13 178992:27:13 179019:27:13 179046:27:13 179073:27:13 179100:27:13 179127:27:13 179154:27:12 179181:27:12 179208:27:12 179235:27:13 179262:27:12 179289:27:12 179316:27:12 179343:27:12 179370:27:12 179397:27:12 179424:27:12 179451:27:12 179478:27:12 179505:27:12 179532:27:12 179559:27:12 179586:27:12 179613:27:12 179640:27:12 179667:27:12 179694:27:12 179721:27:12 179748:27:12
|
||||
Initial seek latency (1000 sectors): 231ms
|
||||
Average read latency: 0.46ms/sector (raw speed: 29.0x)
|
||||
Read latency standard deviation: 0.02ms/sector
|
||||
[39:43.49]:
|
||||
178774:1:18 178775:27:11 178802:27:11 178829:27:11 178856:27:11 178883:27:11 178910:27:11 178937:27:11 178964:27:11 178991:27:11 179018:27:11 179045:27:11 179072:27:11 179099:27:11 179126:27:11 179153:27:11 179180:27:11 179207:27:11 179234:27:11 179261:27:11 179288:27:11 179315:27:11 179342:27:11 179369:27:11 179396:27:11 179423:27:11 179450:27:11 179477:27:11 179504:27:11 179531:27:11 179558:27:11 179585:27:11 179612:27:11 179639:27:11 179666:27:11 179693:27:11 179720:27:11 179747:27:11
|
||||
Initial seek latency (1000 sectors): 18ms
|
||||
Average read latency: 0.41ms/sector (raw speed: 32.7x)
|
||||
Read latency standard deviation: 0.00ms/sector
|
||||
[39:43.48]:
|
||||
178773:1:18 178774:27:11 178801:27:11 178828:27:11 178855:27:11 178882:27:11 178909:27:941 178936:27:9 178963:27:9 178990:27:9 179017:27:9 179044:27:9 179071:27:9 179098:27:9 179125:27:9 179152:27:9 179179:27:9 179206:27:9 179233:27:9 179260:27:9 179287:27:9 179314:27:10 179341:27:9 179368:27:10 179395:27:9 179422:27:9 179449:27:9 179476:27:9 179503:27:10 179530:27:9 179557:27:9 179584:27:9 179611:27:10 179638:27:9 179665:27:9 179692:27:9 179719:27:10 179746:27:9
|
||||
Initial seek latency (1000 sectors): 18ms
|
||||
Average read latency: 1.28ms/sector (raw speed: 10.4x)
|
||||
Read latency standard deviation: 5.60ms/sector
|
||||
[39:43.47]:
|
||||
178772:1:21 178773:27:10 178800:27:10 178827:27:10 178854:27:10 178881:27:9 178908:27:10 178935:27:10 178962:27:10 178989:27:10 179016:27:10 179043:27:10 179070:27:10 179097:27:10 179124:27:10 179151:27:10 179178:27:10 179205:27:10 179232:27:9 179259:27:10 179286:27:10 179313:27:10 179340:27:10 179367:27:10 179394:27:10 179421:27:10 179448:27:10 179475:27:10 179502:27:10 179529:27:10 179556:27:10 179583:27:10 179610:27:10 179637:27:10 179664:27:10 179691:27:10 179718:27:10 179745:27:9
|
||||
Initial seek latency (1000 sectors): 21ms
|
||||
Average read latency: 0.37ms/sector (raw speed: 36.3x)
|
||||
Read latency standard deviation: 0.01ms/sector
|
||||
[39:43.46]:
|
||||
178771:1:21 178772:27:10 178799:27:9 178826:27:10 178853:27:10 178880:27:10 178907:27:10 178934:27:10 178961:27:10 178988:27:10 179015:27:10 179042:27:10 179069:27:10 179096:27:10 179123:27:10 179150:27:10 179177:27:10 179204:27:10 179231:27:10 179258:27:10 179285:27:10 179312:27:10 179339:27:10 179366:27:10 179393:27:10 179420:27:10 179447:27:10 179474:27:10 179501:27:10 179528:27:10 179555:27:10 179582:27:10 179609:27:10 179636:27:10 179663:27:10 179690:27:10 179717:27:10 179744:27:10
|
||||
Initial seek latency (1000 sectors): 21ms
|
||||
Average read latency: 0.37ms/sector (raw speed: 36.1x)
|
||||
Read latency standard deviation: 0.01ms/sector
|
||||
[39:43.45]:
|
||||
178770:1:15 178771:27:10 178798:27:10 178825:27:10 178852:27:10 178879:27:10 178906:27:10 178933:27:10 178960:27:10 178987:27:10 179014:27:10 179041:27:10 179068:27:10 179095:27:10 179122:27:10 179149:27:10 179176:27:10 179203:27:10 179230:27:10 179257:27:10 179284:27:10 179311:27:10 179338:27:10 179365:27:10 179392:27:10 179419:27:10 179446:27:10 179473:27:10 179500:27:10 179527:27:10 179554:27:10 179581:27:10 179608:27:10 179635:27:10 179662:27:10 179689:27:10 179716:27:10 179743:27:10
|
||||
Initial seek latency (1000 sectors): 15ms
|
||||
Average read latency: 0.37ms/sector (raw speed: 36.0x)
|
||||
Read latency standard deviation: -nanms/sector
|
||||
[39:43.44]:
|
||||
178769:1:21 178770:27:10 178797:27:10 178824:27:10 178851:27:10 178878:27:10 178905:27:10 178932:27:10 178959:27:10 178986:27:10 179013:27:10 179040:27:10 179067:27:10 179094:27:10 179121:27:10 179148:27:10 179175:27:10 179202:27:10 179229:27:10 179256:27:10 179283:27:10 179310:27:10 179337:27:10 179364:27:10 179391:27:10 179418:27:10 179445:27:10 179472:27:10 179499:27:10 179526:27:10 179553:27:10 179580:27:10 179607:27:10 179634:27:10 179661:27:10 179688:27:10 179715:27:10 179742:27:10
|
||||
Initial seek latency (1000 sectors): 21ms
|
||||
Average read latency: 0.37ms/sector (raw speed: 36.0x)
|
||||
Read latency standard deviation: -nanms/sector
|
||||
[39:43.43]:
|
||||
178768:1:15 178769:27:10 178796:27:10 178823:27:10 178850:27:10 178877:27:10 178904:27:10 178931:27:10 178958:27:10 178985:27:10 179012:27:10 179039:27:10 179066:27:10 179093:27:10 179120:27:10 179147:27:10 179174:27:10 179201:27:10 179228:27:10 179255:27:10 179282:27:10 179309:27:10 179336:27:10 179363:27:10 179390:27:10 179417:27:10 179444:27:10 179471:27:10 179498:27:10 179525:27:10 179552:27:10 179579:27:10 179606:27:10 179633:27:10 179660:27:10 179687:27:10 179714:27:10 179741:27:10
|
||||
Initial seek latency (1000 sectors): 15ms
|
||||
Average read latency: 0.37ms/sector (raw speed: 36.0x)
|
||||
Read latency standard deviation: -nanms/sector
|
||||
[39:43.42]:
|
||||
178767:1:21 178768:27:10 178795:27:10 178822:27:10 178849:27:10 178876:27:10 178903:27:10 178930:27:10 178957:27:10 178984:27:10 179011:27:10 179038:27:10 179065:27:10 179092:27:10 179119:27:10 179146:27:10 179173:27:10 179200:27:10 179227:27:10 179254:27:10 179281:27:10 179308:27:10 179335:27:10 179362:27:10 179389:27:10 179416:27:10 179443:27:10 179470:27:10 179497:27:10 179524:27:10 179551:27:10 179578:27:10 179605:27:10 179632:27:10 179659:27:10 179686:27:10 179713:27:10 179740:27:10
|
||||
Initial seek latency (1000 sectors): 21ms
|
||||
Average read latency: 0.37ms/sector (raw speed: 36.0x)
|
||||
Read latency standard deviation: -nanms/sector
|
||||
[39:43.41]:
|
||||
178766:1:15 178767:27:10 178794:27:10 178821:27:10 178848:27:10 178875:27:10 178902:27:10 178929:27:10 178956:27:10 178983:27:10 179010:27:10 179037:27:10 179064:27:10 179091:27:10 179118:27:10 179145:27:10 179172:27:10 179199:27:10 179226:27:10 179253:27:10 179280:27:10 179307:27:10 179334:27:10 179361:27:10 179388:27:10 179415:27:10 179442:27:10 179469:27:10 179496:27:10 179523:27:10 179550:27:10 179577:27:10 179604:27:10 179631:27:10 179658:27:10 179685:27:10 179712:27:10 179739:27:10
|
||||
Initial seek latency (1000 sectors): 15ms
|
||||
Average read latency: 0.37ms/sector (raw speed: 36.0x)
|
||||
Read latency standard deviation: -nanms/sector
|
||||
[39:43.40]:
|
||||
178765:1:21 178766:27:10 178793:27:10 178820:27:10 178847:27:10 178874:27:10 178901:27:10 178928:27:10 178955:27:10 178982:27:10 179009:27:10 179036:27:10 179063:27:10 179090:27:10 179117:27:10 179144:27:10 179171:27:10 179198:27:10 179225:27:10 179252:27:10 179279:27:10 179306:27:10 179333:27:10 179360:27:10 179387:27:10 179414:27:10 179441:27:10 179468:27:10 179495:27:10 179522:27:10 179549:27:10 179576:27:10 179603:27:10 179630:27:10 179657:27:10 179684:27:10 179711:27:10 179738:27:10
|
||||
Initial seek latency (1000 sectors): 21ms
|
||||
Average read latency: 0.37ms/sector (raw speed: 36.0x)
|
||||
Read latency standard deviation: -nanms/sector
|
||||
[39:43.39]:
|
||||
178764:1:21 178765:27:10 178792:27:10 178819:27:10 178846:27:10 178873:27:10 178900:27:10 178927:27:10 178954:27:10 178981:27:10 179008:27:10 179035:27:10 179062:27:10 179089:27:10 179116:27:10 179143:27:10 179170:27:10 179197:27:10 179224:27:10 179251:27:10 179278:27:10 179305:27:10 179332:27:10 179359:27:10 179386:27:10 179413:27:10 179440:27:10 179467:27:10 179494:27:10 179521:27:10 179548:27:10 179575:27:10 179602:27:10 179629:27:10 179656:27:10 179683:27:10 179710:27:10 179737:27:10
|
||||
Initial seek latency (1000 sectors): 21ms
|
||||
Average read latency: 0.37ms/sector (raw speed: 36.0x)
|
||||
Read latency standard deviation: -nanms/sector
|
||||
[39:43.38]:
|
||||
178763:1:15 178764:27:10 178791:27:10 178818:27:10 178845:27:10 178872:27:10 178899:27:10 178926:27:10 178953:27:10 178980:27:10 179007:27:10 179034:27:10 179061:27:10 179088:27:10 179115:27:10 179142:27:10 179169:27:10 179196:27:10 179223:27:10 179250:27:10 179277:27:10 179304:27:10 179331:27:10 179358:27:10 179385:27:10 179412:27:10 179439:27:10 179466:27:10 179493:27:10 179520:27:10 179547:27:10 179574:27:10 179601:27:10 179628:27:10 179655:27:10 179682:27:10 179709:27:10 179736:27:10
|
||||
Initial seek latency (1000 sectors): 15ms
|
||||
Average read latency: 0.37ms/sector (raw speed: 36.0x)
|
||||
Read latency standard deviation: -nanms/sector
|
||||
[39:43.37]:
|
||||
178762:1:21 178763:27:10 178790:27:10 178817:27:10 178844:27:10 178871:27:10 178898:27:10 178925:27:10 178952:27:10 178979:27:10 179006:27:10 179033:27:10 179060:27:10 179087:27:10 179114:27:10 179141:27:10 179168:27:10 179195:27:10 179222:27:10 179249:27:10 179276:27:10 179303:27:10 179330:27:10 179357:27:10 179384:27:10 179411:27:10 179438:27:10 179465:27:10 179492:27:10 179519:27:10 179546:27:10 179573:27:10 179600:27:10 179627:27:10 179654:27:10 179681:27:10 179708:27:10 179735:27:10
|
||||
Initial seek latency (1000 sectors): 21ms
|
||||
Average read latency: 0.37ms/sector (raw speed: 36.0x)
|
||||
Read latency standard deviation: -nanms/sector
|
||||
[39:43.36]:
|
||||
178761:1:15 178762:27:10 178789:27:10 178816:27:10 178843:27:10 178870:27:10 178897:27:10 178924:27:10 178951:27:10 178978:27:10 179005:27:10 179032:27:10 179059:27:10 179086:27:10 179113:27:10 179140:27:10 179167:27:10 179194:27:10 179221:27:10 179248:27:10 179275:27:10 179302:27:10 179329:27:10 179356:27:10 179383:27:10 179410:27:10 179437:27:10 179464:27:10 179491:27:10 179518:27:10 179545:27:10 179572:27:10 179599:27:10 179626:27:10 179653:27:10 179680:27:10 179707:27:10 179734:27:10
|
||||
Initial seek latency (1000 sectors): 15ms
|
||||
Average read latency: 0.37ms/sector (raw speed: 36.0x)
|
||||
Read latency standard deviation: -nanms/sector
|
||||
[30:00.00]:
|
||||
135000:1:21 135001:27:11 135028:27:11 135055:27:11 135082:27:11 135109:27:11 135136:27:11 135163:27:11 135190:27:11 135217:27:11 135244:27:11 135271:27:11 135298:27:11 135325:27:11 135352:27:11 135379:27:11 135406:27:11 135433:27:11 135460:27:11 135487:27:11 135514:27:11 135541:27:11 135568:27:11 135595:27:11 135622:27:11 135649:27:11 135676:27:11 135703:27:11 135730:27:11 135757:27:11 135784:27:11 135811:27:11 135838:27:11 135865:27:11 135892:27:11 135919:27:11 135946:27:11 135973:27:11
|
||||
Initial seek latency (1000 sectors): 21ms
|
||||
Average read latency: 0.41ms/sector (raw speed: 32.7x)
|
||||
Read latency standard deviation: 0.00ms/sector
|
||||
[20:00.00]:
|
||||
90000:1:22 90001:27:12 90028:27:12 90055:27:12 90082:27:12 90109:27:12 90136:27:12 90163:27:12 90190:27:12 90217:27:12 90244:27:12 90271:27:12 90298:27:12 90325:27:12 90352:27:12 90379:27:12 90406:27:12 90433:27:12 90460:27:12 90487:27:12 90514:27:12 90541:27:12 90568:27:12 90595:27:12 90622:27:12 90649:27:12 90676:27:12 90703:27:12 90730:27:12 90757:27:12 90784:27:12 90811:27:12 90838:27:12 90865:27:12 90892:27:12 90919:27:12 90946:27:12 90973:27:12
|
||||
Initial seek latency (1000 sectors): 22ms
|
||||
Average read latency: 0.44ms/sector (raw speed: 30.0x)
|
||||
Read latency standard deviation: 0.00ms/sector
|
||||
[10:00.00]:
|
||||
45000:1:30 45001:27:14 45028:27:14 45055:27:14 45082:27:14 45109:27:14 45136:27:14 45163:27:14 45190:27:14 45217:27:14 45244:27:14 45271:27:14 45298:27:14 45325:27:14 45352:27:14 45379:27:14 45406:27:14 45433:27:14 45460:27:14 45487:27:14 45514:27:14 45541:27:14 45568:27:14 45595:27:14 45622:27:14 45649:27:14 45676:27:14 45703:27:14 45730:27:14 45757:27:14 45784:27:14 45811:27:14 45838:27:14 45865:27:14 45892:27:14 45919:27:14 45946:27:14 45973:27:14
|
||||
Initial seek latency (1000 sectors): 30ms
|
||||
Average read latency: 0.52ms/sector (raw speed: 25.7x)
|
||||
Read latency standard deviation: -nanms/sector
|
||||
[00:00.00]:
|
||||
0:1:33 1:27:19 28:27:19 55:27:19 82:27:19 109:27:19 136:27:19 163:27:19 190:27:19 217:27:19 244:27:19 271:27:19 298:27:19 325:27:19 352:27:19 379:27:19 406:27:19 433:27:19 460:27:19 487:27:19 514:27:19 541:27:19 568:27:19 595:27:19 622:27:19 649:27:19 676:27:19 703:27:19 730:27:19 757:27:19 784:27:19 811:27:19 838:27:19 865:27:19 892:27:19 919:27:19 946:27:19 973:27:19
|
||||
Initial seek latency (1000 sectors): 33ms
|
||||
Average read latency: 0.70ms/sector (raw speed: 18.9x)
|
||||
Read latency standard deviation: -nanms/sector
|
||||
|
||||
Analyzing cache behavior...
|
||||
Fast search for approximate cache size... 0 sectors
|
||||
>>> fast_read=10:1:35 seek_read=10:1:18
|
||||
>>> fast_read=10:1:18 seek_read=10:1:18
|
||||
>>> fast_read=10:1:18 seek_read=10:1:18
|
||||
>>> fast_read=10:1:18 seek_read=10:1:18
|
||||
>>> fast_read=10:1:18 seek_read=10:1:18
|
||||
>>> fast_read=10:1:18 seek_read=10:1:18
|
||||
>>> fast_read=10:1:18 seek_read=10:1:18
|
||||
>>> fast_read=10:1:18 seek_read=10:1:18
|
||||
>>> fast_read=10:1:18 seek_read=10:1:364
|
||||
>>> fast_read=10:1:21 seek_read=10:1:21
|
||||
>>> fast_read=10:1:22 seek_read=10:1:22
|
||||
>>> fast_read=10:1:22 seek_read=10:1:22
|
||||
>>> fast_read=10:1:22 seek_read=10:1:22
|
||||
>>> fast_read=10:1:22 seek_read=10:1:22
|
||||
>>> fast_read=10:1:22 seek_read=10:1:22
|
||||
Slow verify for approximate cache size... 0 sectors
|
||||
Attempting to reduce read speed to 1x... drive said OK
|
||||
>>> slow_read=10:1:21 seek_read=10:1:22
|
||||
>>> slow_read=10:1:22 seek_read=10:1:22
|
||||
>>> slow_read=10:1:22 seek_read=10:1:22
|
||||
>>> slow_read=10:1:22 seek_read=10:1:22
|
||||
>>> slow_read=10:1:22 seek_read=10:1:22
|
||||
>>> slow_read=10:1:22 seek_read=10:1:22
|
||||
>>> slow_read=10:1:22 seek_read=10:1:22
|
||||
>>> slow_read=10:1:22 seek_read=10:1:22
|
||||
>>> slow_read=10:1:22 seek_read=10:1:22
|
||||
>>> slow_read=10:1:22 seek_read=10:1:22
|
||||
Drive does not cache nonlinear access
|
||||
|
||||
Drive tests OK with Paranoia.
|
||||
|
||||
41
whipper/test/cdparanoia/PX-L890SA.cdparanoia-A.stderr
Normal file
41
whipper/test/cdparanoia/PX-L890SA.cdparanoia-A.stderr
Normal file
@@ -0,0 +1,41 @@
|
||||
cdparanoia III release 10.2 (September 11, 2008)
|
||||
|
||||
Using cdda library version: 10.2
|
||||
Using paranoia library version: 10.2
|
||||
Checking /dev/cdrom for cdrom...
|
||||
Testing /dev/cdrom for SCSI/MMC interface
|
||||
SG_IO device: /dev/sr0
|
||||
|
||||
CDROM model sensed sensed: PLEXTOR DVDR PX-L890SA 1.05
|
||||
|
||||
|
||||
Checking for SCSI emulation...
|
||||
Drive is ATAPI (using SG_IO host adaptor emulation)
|
||||
|
||||
Checking for MMC style command set...
|
||||
Drive is MMC style
|
||||
DMA scatter/gather table entries: 1
|
||||
table entry size: 524288 bytes
|
||||
maximum theoretical transfer: 222 sectors
|
||||
Setting default read size to 27 sectors (63504 bytes).
|
||||
|
||||
Verifying CDDA command set...
|
||||
Expected command set reads OK.
|
||||
|
||||
Attempting to set cdrom to full speed...
|
||||
drive returned OK.
|
||||
|
||||
=================== Checking drive cache/timing behavior ===================
|
||||
|
||||
Seek/read timing:
|
||||
|
||||
[39:43.53]: 19ms seek, 0.70ms/sec read [18.9x] spinning up...
|
||||
[39:43.52]: 19ms seek, 1.28ms/sec read [10.4x] spinning up...
|
||||
[39:43.51]: 23ms seek, 0.52ms/sec read [25.7x] spinning up...
|
||||
[39:43.50]: 231ms seek, 0.46ms/sec read [29.0x] spinning up...
|
||||
[39:43.49]: 18ms seek, 0.41ms/sec read [32.7x] spinning up...
|
||||
[39:43.48]: 18ms seek, 1.28ms/sec read [10.4x] spinning up...
|
||||
[39:43.47]: 21ms seek, 0.37ms/sec read [36.3x] spinning up...
|
||||
[39:43.46]: 21ms seek, 0.37ms/sec read [36.1x] spinning up...
|
||||
[39:43.45]: 15ms seek, 0.37ms/sec read [36.0x] spinning up...
|
||||
[39:43.44]: 21ms seek, 0.37ms/sec read [36.0x] spinning up...
|
||||
71
whipper/test/cdrdao.readtoc.progress
Normal file
71
whipper/test/cdrdao.readtoc.progress
Normal file
@@ -0,0 +1,71 @@
|
||||
Cdrdao version 1.2.2 - (C) Andreas Mueller <andreas@daneb.de>
|
||||
SCSI interface library - (C) Joerg Schilling
|
||||
Paranoia DAE library - (C) Monty
|
||||
|
||||
Check http://cdrdao.sourceforge.net/drives.html#dt for current driver tables.
|
||||
|
||||
Using libscg version 'schily-0.8'
|
||||
|
||||
/dev/cdrecorder: PLEXTOR DVDR PX-810SA Rev: 1.00
|
||||
Using driver: Generic SCSI-3/MMC - Version 2.0 (options 0x0000)
|
||||
|
||||
Reading toc data...
|
||||
|
||||
Track Mode Flags Start Length
|
||||
------------------------------------------------------------
|
||||
1 AUDIO 0 00:00:00( 0) 03:04:64( 13864)
|
||||
2 AUDIO 0 03:04:64( 13864) 04:00:57( 18057)
|
||||
3 AUDIO 0 07:05:46( 31921) 03:38:61( 16411)
|
||||
4 AUDIO 0 10:44:32( 48332) 02:58:51( 13401)
|
||||
5 AUDIO 0 13:43:08( 61733) 04:16:28( 19228)
|
||||
6 AUDIO 0 17:59:36( 80961) 04:16:58( 19258)
|
||||
7 AUDIO 0 22:16:19(100219) 03:34:22( 16072)
|
||||
8 AUDIO 0 25:50:41(116291) 04:25:22( 19897)
|
||||
9 AUDIO 0 30:15:63(136188) 04:44:16( 21316)
|
||||
10 AUDIO 0 35:00:04(157504) 03:56:71( 17771)
|
||||
11 AUDIO 0 38:57:00(175275) 06:24:30( 28830)
|
||||
Leadout AUDIO 0 45:21:30(204105)
|
||||
|
||||
PQ sub-channel reading (audio track) is supported, data format is BCD.
|
||||
Raw P-W sub-channel reading (audio track) is supported.
|
||||
Analyzing track 01 (AUDIO): start 00:00:00, length 03:04:64...
|
||||
00:01:00
|
||||
00:02:00
|
||||
00:03:00
|
||||
00:04:00
|
||||
00:05:00
|
||||
00:06:00
|
||||
00:07:00
|
||||
00:08:00
|
||||
00:09:00
|
||||
00:10:00
|
||||
00:11:00
|
||||
00:12:00
|
||||
00:13:00
|
||||
00:14:00
|
||||
00:15:00
|
||||
00:16:00
|
||||
00:17:00
|
||||
00:18:00
|
||||
00:19:00
|
||||
00:20:00
|
||||
00:21:00
|
||||
00:22:00
|
||||
00:23:00
|
||||
00:24:00
|
||||
00:25:00
|
||||
00:26:00
|
||||
00:27:00
|
||||
00:28:00
|
||||
00:29:00
|
||||
00:30:00
|
||||
00:31:00
|
||||
00:32:00
|
||||
00:33:00
|
||||
00:34:00
|
||||
00:35:00
|
||||
00:36:00
|
||||
00:37:00
|
||||
00:38:00
|
||||
00:39:00
|
||||
00:40:00
|
||||
87
whipper/test/common.py
Normal file
87
whipper/test/common.py
Normal file
@@ -0,0 +1,87 @@
|
||||
# -*- Mode: Python -*-
|
||||
# vi:si:et:sw=4:sts=4:ts=4
|
||||
|
||||
import re
|
||||
import os
|
||||
import sys
|
||||
|
||||
import whipper
|
||||
|
||||
# twisted's unittests have skip support, standard unittest don't
|
||||
from twisted.trial import unittest
|
||||
|
||||
# lifted from flumotion
|
||||
|
||||
|
||||
def _diff(old, new, desc):
|
||||
import difflib
|
||||
lines = difflib.unified_diff(old, new)
|
||||
lines = list(lines)
|
||||
if not lines:
|
||||
return
|
||||
output = ''
|
||||
for line in lines:
|
||||
output += '%s: %s\n' % (desc, line[:-1])
|
||||
|
||||
raise AssertionError(
|
||||
("\nError while comparing strings:\n"
|
||||
"%s") % (output.encode('utf-8'), ))
|
||||
|
||||
|
||||
def diffStrings(orig, new, desc='input'):
|
||||
|
||||
assert type(orig) == type(new), 'type %s and %s are different' % (
|
||||
type(orig), type(new))
|
||||
|
||||
def _tolines(s):
|
||||
return [line + '\n' for line in s.split('\n')]
|
||||
|
||||
return _diff(_tolines(orig),
|
||||
_tolines(new),
|
||||
desc=desc)
|
||||
|
||||
|
||||
class TestCase(unittest.TestCase):
|
||||
# unittest.TestCase.failUnlessRaises does not return the exception,
|
||||
# and we'd like to check for the actual exception under TaskException,
|
||||
# so override the way twisted.trial.unittest does, without failure
|
||||
|
||||
def failUnlessRaises(self, exception, f, *args, **kwargs):
|
||||
try:
|
||||
result = f(*args, **kwargs)
|
||||
except exception, inst:
|
||||
return inst
|
||||
except exception, e:
|
||||
raise Exception('%s raised instead of %s:\n %s' %
|
||||
(sys.exec_info()[0], exception.__name__, str(e))
|
||||
)
|
||||
else:
|
||||
raise Exception('%s not raised (%r returned)' %
|
||||
(exception.__name__, result)
|
||||
)
|
||||
|
||||
assertRaises = failUnlessRaises
|
||||
|
||||
def readCue(self, name):
|
||||
"""
|
||||
Read a .cue file, and replace the version comment with the current
|
||||
version so we can use it in comparisons.
|
||||
"""
|
||||
ret = open(os.path.join(os.path.dirname(__file__), name)).read(
|
||||
).decode('utf-8')
|
||||
ret = re.sub(
|
||||
'REM COMMENT "whipper.*',
|
||||
'REM COMMENT "whipper %s"' % (whipper.__version__),
|
||||
ret, re.MULTILINE)
|
||||
|
||||
return ret
|
||||
|
||||
class UnicodeTestMixin:
|
||||
# A helper mixin to skip tests if we're not in a UTF-8 locale
|
||||
|
||||
try:
|
||||
os.stat(u'morituri.test.B\xeate Noire.empty')
|
||||
except UnicodeEncodeError:
|
||||
skip = 'No UTF-8 locale'
|
||||
except OSError:
|
||||
pass
|
||||
55
whipper/test/cure.cue
Normal file
55
whipper/test/cure.cue
Normal file
@@ -0,0 +1,55 @@
|
||||
REM DISCID B90C650D
|
||||
REM COMMENT "whipper 0.5.1"
|
||||
CATALOG 0602517642256
|
||||
FILE "data.wav" WAVE
|
||||
TRACK 01 AUDIO
|
||||
ISRC USUM70839873
|
||||
INDEX 01 00:00:00
|
||||
TRACK 02 AUDIO
|
||||
ISRC USUM70839874
|
||||
INDEX 00 06:16:45
|
||||
INDEX 01 06:17:49
|
||||
TRACK 03 AUDIO
|
||||
ISRC USUM70839875
|
||||
INDEX 00 10:13:02
|
||||
INDEX 01 10:14:60
|
||||
TRACK 04 AUDIO
|
||||
ISRC USUM70839876
|
||||
INDEX 00 14:50:07
|
||||
INDEX 01 14:50:17
|
||||
TRACK 05 AUDIO
|
||||
ISRC USUM70839877
|
||||
INDEX 00 17:18:42
|
||||
INDEX 01 17:20:47
|
||||
TRACK 06 AUDIO
|
||||
ISRC USUM70839878
|
||||
INDEX 00 19:43:06
|
||||
INDEX 01 19:43:10
|
||||
TRACK 07 AUDIO
|
||||
ISRC USUM70839879
|
||||
INDEX 00 24:25:07
|
||||
INDEX 01 24:26:41
|
||||
TRACK 08 AUDIO
|
||||
ISRC USUM70839880
|
||||
INDEX 00 28:56:00
|
||||
INDEX 01 28:56:09
|
||||
TRACK 09 AUDIO
|
||||
ISRC USUM70839881
|
||||
INDEX 00 32:38:11
|
||||
INDEX 01 32:40:45
|
||||
TRACK 10 AUDIO
|
||||
ISRC USUM70839882
|
||||
INDEX 00 36:01:58
|
||||
INDEX 01 36:02:04
|
||||
TRACK 11 AUDIO
|
||||
ISRC USUM70839883
|
||||
INDEX 00 40:08:30
|
||||
INDEX 01 40:08:53
|
||||
TRACK 12 AUDIO
|
||||
ISRC USUM70839884
|
||||
INDEX 00 43:59:51
|
||||
INDEX 01 44:00:27
|
||||
TRACK 13 AUDIO
|
||||
ISRC USUM70839885
|
||||
INDEX 00 48:35:63
|
||||
INDEX 01 48:36:71
|
||||
132
whipper/test/cure.toc
Normal file
132
whipper/test/cure.toc
Normal file
@@ -0,0 +1,132 @@
|
||||
CD_DA
|
||||
|
||||
CATALOG "0602517642256"
|
||||
|
||||
// Track 1
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "USUM70839873"
|
||||
FILE "data.wav" 0 06:16:45
|
||||
|
||||
|
||||
// Track 2
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "USUM70839874"
|
||||
FILE "data.wav" 06:16:45 03:56:32
|
||||
START 00:01:04
|
||||
|
||||
|
||||
// Track 3
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "USUM70839875"
|
||||
FILE "data.wav" 10:13:02 04:37:05
|
||||
START 00:01:58
|
||||
|
||||
|
||||
// Track 4
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "USUM70839876"
|
||||
FILE "data.wav" 14:50:07 02:28:35
|
||||
START 00:00:10
|
||||
|
||||
|
||||
// Track 5
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "USUM70839877"
|
||||
FILE "data.wav" 17:18:42 02:24:39
|
||||
START 00:02:05
|
||||
|
||||
|
||||
// Track 6
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "USUM70839878"
|
||||
FILE "data.wav" 19:43:06 04:42:01
|
||||
START 00:00:04
|
||||
|
||||
|
||||
// Track 7
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "USUM70839879"
|
||||
FILE "data.wav" 24:25:07 04:30:68
|
||||
START 00:01:34
|
||||
|
||||
|
||||
// Track 8
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "USUM70839880"
|
||||
FILE "data.wav" 28:56:00 03:42:11
|
||||
START 00:00:09
|
||||
|
||||
|
||||
// Track 9
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "USUM70839881"
|
||||
FILE "data.wav" 32:38:11 03:23:47
|
||||
START 00:02:34
|
||||
|
||||
|
||||
// Track 10
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "USUM70839882"
|
||||
FILE "data.wav" 36:01:58 04:06:47
|
||||
START 00:00:21
|
||||
|
||||
|
||||
// Track 11
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "USUM70839883"
|
||||
FILE "data.wav" 40:08:30 03:51:21
|
||||
START 00:00:23
|
||||
|
||||
|
||||
// Track 12
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "USUM70839884"
|
||||
FILE "data.wav" 43:59:51 04:36:12
|
||||
START 00:00:51
|
||||
|
||||
|
||||
// Track 13
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "USUM70839885"
|
||||
FILE "data.wav" 48:35:63 04:17:71
|
||||
START 00:01:08
|
||||
|
||||
BIN
whipper/test/dBAR-011-0010e284-009228a3-9809ff0b.bin
Normal file
BIN
whipper/test/dBAR-011-0010e284-009228a3-9809ff0b.bin
Normal file
Binary file not shown.
BIN
whipper/test/dBAR-020-002e5023-029d8e49-040eaa14.bin
Normal file
BIN
whipper/test/dBAR-020-002e5023-029d8e49-040eaa14.bin
Normal file
Binary file not shown.
167
whipper/test/jose.toc
Normal file
167
whipper/test/jose.toc
Normal file
@@ -0,0 +1,167 @@
|
||||
CD_DA
|
||||
|
||||
CD_TEXT {
|
||||
LANGUAGE_MAP {
|
||||
0: 9
|
||||
}
|
||||
LANGUAGE 0 {
|
||||
TITLE "In Our Nature"
|
||||
PERFORMER "Jos\351 Gonz\341lez"
|
||||
GENRE { 0, 0, 0}
|
||||
SIZE_INFO { 1, 1, 10, 0, 12, 13, 0, 0, 0, 0, 0, 1,
|
||||
0, 0, 0, 0, 0, 0, 0, 3, 28, 0, 0, 0,
|
||||
0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0}
|
||||
}
|
||||
}
|
||||
|
||||
// Track 1
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "SEVVX0700301"
|
||||
CD_TEXT {
|
||||
LANGUAGE 0 {
|
||||
TITLE "How Low"
|
||||
PERFORMER "Jos\351 Gonz\341lez"
|
||||
}
|
||||
}
|
||||
FILE "data.wav" 0 02:40:01
|
||||
|
||||
|
||||
// Track 2
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "SEVVX0700302"
|
||||
CD_TEXT {
|
||||
LANGUAGE 0 {
|
||||
TITLE "Down The Line"
|
||||
PERFORMER "Jos\351 Gonz\341lez"
|
||||
}
|
||||
}
|
||||
FILE "data.wav" 02:40:01 03:10:62
|
||||
|
||||
|
||||
// Track 3
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "SEVVX0700303"
|
||||
CD_TEXT {
|
||||
LANGUAGE 0 {
|
||||
TITLE "Killing For Love"
|
||||
PERFORMER "Jos\351 Gonz\341lez"
|
||||
}
|
||||
}
|
||||
FILE "data.wav" 05:50:63 03:02:67
|
||||
|
||||
|
||||
// Track 4
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "SEVVX0700304"
|
||||
CD_TEXT {
|
||||
LANGUAGE 0 {
|
||||
TITLE "In Our Nature"
|
||||
PERFORMER "Jos\351 Gonz\341lez"
|
||||
}
|
||||
}
|
||||
FILE "data.wav" 08:53:55 02:42:51
|
||||
|
||||
|
||||
// Track 5
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "SEVVX0700305"
|
||||
CD_TEXT {
|
||||
LANGUAGE 0 {
|
||||
TITLE "Teardrop"
|
||||
PERFORMER "Jos\351 Gonz\341lez"
|
||||
}
|
||||
}
|
||||
FILE "data.wav" 11:36:31 03:20:64
|
||||
|
||||
|
||||
// Track 6
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "SEVVX0700306"
|
||||
CD_TEXT {
|
||||
LANGUAGE 0 {
|
||||
TITLE "Abram"
|
||||
PERFORMER "Jos\351 Gonz\341lez"
|
||||
}
|
||||
}
|
||||
FILE "data.wav" 14:57:20 01:58:56
|
||||
START 00:12:24
|
||||
|
||||
|
||||
// Track 7
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "SEVVX0700307"
|
||||
CD_TEXT {
|
||||
LANGUAGE 0 {
|
||||
TITLE "Time To Send Someone Away"
|
||||
PERFORMER "Jos\351 Gonz\341lez"
|
||||
}
|
||||
}
|
||||
FILE "data.wav" 16:56:01 02:49:68
|
||||
START 00:02:05
|
||||
|
||||
|
||||
// Track 8
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "SEVVX0700308"
|
||||
CD_TEXT {
|
||||
LANGUAGE 0 {
|
||||
TITLE "The Nest"
|
||||
PERFORMER "Jos\351 Gonz\341lez"
|
||||
}
|
||||
}
|
||||
FILE "data.wav" 19:45:69 02:23:66
|
||||
|
||||
|
||||
// Track 9
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "SEVVX0700309"
|
||||
CD_TEXT {
|
||||
LANGUAGE 0 {
|
||||
TITLE "Fold"
|
||||
PERFORMER "Jos\351 Gonz\341lez"
|
||||
}
|
||||
}
|
||||
FILE "data.wav" 22:09:60 02:54:58
|
||||
|
||||
|
||||
// Track 10
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "SEVVX0700310"
|
||||
CD_TEXT {
|
||||
LANGUAGE 0 {
|
||||
TITLE "Cycling Trivialities"
|
||||
PERFORMER "Jos\351 Gonz\341lez"
|
||||
}
|
||||
}
|
||||
FILE "data.wav" 25:04:43 08:09:16
|
||||
|
||||
88
whipper/test/kanye.cue
Normal file
88
whipper/test/kanye.cue
Normal file
@@ -0,0 +1,88 @@
|
||||
REM GENRE "Hip Hop"
|
||||
REM DATE 2008
|
||||
REM DISCID A90D2E0D
|
||||
REM COMMENT "ExactAudioCopy v0.99pb4"
|
||||
CATALOG 0602517931596
|
||||
PERFORMER "Kanye West"
|
||||
TITLE "808s & Heartbreak"
|
||||
FILE "Kanye West - 808s & Heartbreak\Kanye West - Say You Will.wav" WAVE
|
||||
TRACK 01 AUDIO
|
||||
TITLE "Say You Will"
|
||||
PERFORMER "Kanye West"
|
||||
ISRC USUM70846386
|
||||
INDEX 01 00:00:00
|
||||
FILE "Kanye West - 808s & Heartbreak\Kanye West - Welcome To Heartbreak (Feat. Kid Cudi).wav" WAVE
|
||||
TRACK 02 AUDIO
|
||||
TITLE "Welcome To Heartbreak (Feat. Kid Cudi)"
|
||||
PERFORMER "Kanye West"
|
||||
ISRC USUM70846387
|
||||
INDEX 01 00:00:00
|
||||
TRACK 03 AUDIO
|
||||
TITLE "Heartless"
|
||||
PERFORMER "Kanye West"
|
||||
ISRC USUM70840511
|
||||
INDEX 00 04:22:70
|
||||
FILE "Kanye West - 808s & Heartbreak\Kanye West - Heartless.wav" WAVE
|
||||
INDEX 01 00:00:00
|
||||
FILE "Kanye West - 808s & Heartbreak\Kanye West - Amazing (Feat. Young Jeezy).wav" WAVE
|
||||
TRACK 04 AUDIO
|
||||
TITLE "Amazing (Feat. Young Jeezy)"
|
||||
PERFORMER "Kanye West"
|
||||
ISRC USUM70846401
|
||||
INDEX 01 00:00:00
|
||||
FILE "Kanye West - 808s & Heartbreak\Kanye West - Love Lockdown.wav" WAVE
|
||||
TRACK 05 AUDIO
|
||||
TITLE "Love Lockdown"
|
||||
PERFORMER "Kanye West"
|
||||
ISRC USUM70837229
|
||||
INDEX 01 00:00:00
|
||||
TRACK 06 AUDIO
|
||||
TITLE "Paranoid (Feat. Mr. Hudson)"
|
||||
PERFORMER "Kanye West"
|
||||
ISRC USUM70846402
|
||||
INDEX 00 04:30:23
|
||||
FILE "Kanye West - 808s & Heartbreak\Kanye West - Paranoid (Feat. Mr. Hudson).wav" WAVE
|
||||
INDEX 01 00:00:00
|
||||
FILE "Kanye West - 808s & Heartbreak\Kanye West - RoboCop.wav" WAVE
|
||||
TRACK 07 AUDIO
|
||||
TITLE "RoboCop"
|
||||
PERFORMER "Kanye West"
|
||||
ISRC USUM70846388
|
||||
INDEX 01 00:00:00
|
||||
TRACK 08 AUDIO
|
||||
TITLE "Street Lights"
|
||||
PERFORMER "Kanye West"
|
||||
ISRC USUM70846403
|
||||
INDEX 00 04:34:27
|
||||
FILE "Kanye West - 808s & Heartbreak\Kanye West - Street Lights.wav" WAVE
|
||||
INDEX 01 00:00:00
|
||||
FILE "Kanye West - 808s & Heartbreak\Kanye West - Bad News.wav" WAVE
|
||||
TRACK 09 AUDIO
|
||||
TITLE "Bad News"
|
||||
PERFORMER "Kanye West"
|
||||
ISRC USUM70846389
|
||||
INDEX 01 00:00:00
|
||||
FILE "Kanye West - 808s & Heartbreak\Kanye West - See You In My Nightmares (Feat. Lil Wayne).wav" WAVE
|
||||
TRACK 10 AUDIO
|
||||
TITLE "See You In My Nightmares (Feat. Lil Wayne)"
|
||||
PERFORMER "Kanye West"
|
||||
ISRC USUM70846390
|
||||
INDEX 01 00:00:00
|
||||
TRACK 11 AUDIO
|
||||
TITLE "Coldest Winter"
|
||||
PERFORMER "Kanye West"
|
||||
ISRC USUM70846400
|
||||
INDEX 00 04:18:09
|
||||
FILE "Kanye West - 808s & Heartbreak\Kanye West - Coldest Winter.wav" WAVE
|
||||
INDEX 01 00:00:00
|
||||
TRACK 12 AUDIO
|
||||
TITLE "Pinocchio Story (Freestyle Live From Singapore)"
|
||||
PERFORMER "Kanye West"
|
||||
ISRC USUM70846838
|
||||
INDEX 00 02:44:25
|
||||
FILE "Kanye West - 808s & Heartbreak\Kanye West - Pinocchio Story (Freestyle Live From Singapore).wav" WAVE
|
||||
INDEX 01 00:00:00
|
||||
TRACK 13 MODEx/2xxx
|
||||
TITLE "Data Track"
|
||||
PERFORMER "Kanye West"
|
||||
INDEX 00 06:01:45
|
||||
61
whipper/test/kings-separate.cue
Normal file
61
whipper/test/kings-separate.cue
Normal file
@@ -0,0 +1,61 @@
|
||||
REM GENRE Alternative
|
||||
REM DATE 2008
|
||||
REM DISCID 9809FF0B
|
||||
REM COMMENT "ExactAudioCopy v0.99pb4"
|
||||
PERFORMER "Kings of Leon"
|
||||
TITLE "Only By the Night"
|
||||
FILE "Kings of Leon - Only By the Night\Kings of Leon - Closer.wav" WAVE
|
||||
TRACK 01 AUDIO
|
||||
TITLE "Closer"
|
||||
PERFORMER "Kings of Leon"
|
||||
INDEX 01 00:00:00
|
||||
FILE "Kings of Leon - Only By the Night\Kings of Leon - Crawl.wav" WAVE
|
||||
TRACK 02 AUDIO
|
||||
TITLE "Crawl"
|
||||
PERFORMER "Kings of Leon"
|
||||
INDEX 01 00:00:00
|
||||
FILE "Kings of Leon - Only By the Night\Kings of Leon - Sex On Fire.wav" WAVE
|
||||
TRACK 03 AUDIO
|
||||
TITLE "Sex On Fire"
|
||||
PERFORMER "Kings of Leon"
|
||||
INDEX 01 00:00:00
|
||||
FILE "Kings of Leon - Only By the Night\Kings of Leon - Use Somebody.wav" WAVE
|
||||
TRACK 04 AUDIO
|
||||
TITLE "Use Somebody"
|
||||
PERFORMER "Kings of Leon"
|
||||
INDEX 01 00:00:00
|
||||
FILE "Kings of Leon - Only By the Night\Kings of Leon - Manhattan.wav" WAVE
|
||||
TRACK 05 AUDIO
|
||||
TITLE "Manhattan"
|
||||
PERFORMER "Kings of Leon"
|
||||
INDEX 01 00:00:00
|
||||
FILE "Kings of Leon - Only By the Night\Kings of Leon - Revelry.wav" WAVE
|
||||
TRACK 06 AUDIO
|
||||
TITLE "Revelry"
|
||||
PERFORMER "Kings of Leon"
|
||||
INDEX 01 00:00:00
|
||||
FILE "Kings of Leon - Only By the Night\Kings of Leon - 17.wav" WAVE
|
||||
TRACK 07 AUDIO
|
||||
TITLE "17"
|
||||
PERFORMER "Kings of Leon"
|
||||
INDEX 01 00:00:00
|
||||
FILE "Kings of Leon - Only By the Night\Kings of Leon - Notion.wav" WAVE
|
||||
TRACK 08 AUDIO
|
||||
TITLE "Notion"
|
||||
PERFORMER "Kings of Leon"
|
||||
INDEX 01 00:00:00
|
||||
FILE "Kings of Leon - Only By the Night\Kings of Leon - I Want You.wav" WAVE
|
||||
TRACK 09 AUDIO
|
||||
TITLE "I Want You"
|
||||
PERFORMER "Kings of Leon"
|
||||
INDEX 01 00:00:00
|
||||
FILE "Kings of Leon - Only By the Night\Kings of Leon - Be Somebody.wav" WAVE
|
||||
TRACK 10 AUDIO
|
||||
TITLE "Be Somebody"
|
||||
PERFORMER "Kings of Leon"
|
||||
INDEX 01 00:00:00
|
||||
FILE "Kings of Leon - Only By the Night\Kings of Leon - Cold Desert.wav" WAVE
|
||||
TRACK 11 AUDIO
|
||||
TITLE "Cold Desert"
|
||||
PERFORMER "Kings of Leon"
|
||||
INDEX 01 00:00:00
|
||||
23
whipper/test/kings-single.cue
Normal file
23
whipper/test/kings-single.cue
Normal file
@@ -0,0 +1,23 @@
|
||||
FILE "dummy.wav" WAVE
|
||||
TRACK 01 AUDIO
|
||||
INDEX 01 00:00:00
|
||||
TRACK 02 AUDIO
|
||||
INDEX 01 03:57:36
|
||||
TRACK 03 AUDIO
|
||||
INDEX 01 08:03:67
|
||||
TRACK 04 AUDIO
|
||||
INDEX 01 11:27:18
|
||||
TRACK 05 AUDIO
|
||||
INDEX 01 15:18:00
|
||||
TRACK 06 AUDIO
|
||||
INDEX 01 18:42:17
|
||||
TRACK 07 AUDIO
|
||||
INDEX 01 22:03:72
|
||||
TRACK 08 AUDIO
|
||||
INDEX 01 25:09:25
|
||||
TRACK 09 AUDIO
|
||||
INDEX 01 28:10:13
|
||||
TRACK 10 AUDIO
|
||||
INDEX 01 33:17:47
|
||||
TRACK 11 AUDIO
|
||||
INDEX 01 37:04:58
|
||||
130
whipper/test/ladyhawke.toc
Normal file
130
whipper/test/ladyhawke.toc
Normal file
@@ -0,0 +1,130 @@
|
||||
CD_ROM_XA
|
||||
|
||||
CATALOG "0602517818866"
|
||||
|
||||
// Track 1
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBUM70808708"
|
||||
FILE "data.wav" 0 03:26:53
|
||||
|
||||
|
||||
// Track 2
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBUM70810780"
|
||||
FILE "data.wav" 03:26:53 03:35:46
|
||||
START 00:00:34
|
||||
|
||||
|
||||
// Track 3
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBUM70808705"
|
||||
FILE "data.wav" 07:02:24 04:15:03
|
||||
START 00:00:17
|
||||
|
||||
|
||||
// Track 4
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBUM70810804"
|
||||
FILE "data.wav" 11:17:27 03:26:60
|
||||
START 00:00:64
|
||||
|
||||
|
||||
// Track 5
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBUM70810795"
|
||||
FILE "data.wav" 14:44:12 03:17:34
|
||||
START 00:02:04
|
||||
|
||||
|
||||
// Track 6
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBUM70810805"
|
||||
FILE "data.wav" 18:01:46 04:03:13
|
||||
START 00:01:06
|
||||
|
||||
|
||||
// Track 7
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "AUUM70800167"
|
||||
FILE "data.wav" 22:04:59 03:40:53
|
||||
START 00:00:50
|
||||
|
||||
|
||||
// Track 8
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBUM70808467"
|
||||
FILE "data.wav" 25:45:37 03:47:38
|
||||
START 00:00:08
|
||||
|
||||
|
||||
// Track 9
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBUM70810807"
|
||||
FILE "data.wav" 29:33:00 03:44:32
|
||||
START 00:01:43
|
||||
|
||||
|
||||
// Track 10
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBUM70811315"
|
||||
FILE "data.wav" 33:17:32 02:36:03
|
||||
START 00:00:40
|
||||
|
||||
|
||||
// Track 11
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBUM70810809"
|
||||
FILE "data.wav" 35:53:35 03:34:50
|
||||
START 00:00:50
|
||||
|
||||
|
||||
// Track 12
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "GBUM70810814"
|
||||
FILE "data.wav" 39:28:10 06:31:21
|
||||
START 00:00:72
|
||||
|
||||
|
||||
// Track 13
|
||||
TRACK MODE2_FORM_MIX
|
||||
NO COPY
|
||||
ZERO MODE2_FORM_MIX 00:02:00
|
||||
DATAFILE "data_13" 00:43:54 // length in bytes: 7659744
|
||||
START 00:02:00
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
{"release": {"status": "Official", "artist-credit": [{"artist": {"sort-name": "Buckley, Jeff", "id": "e6e879c0-3d56-4f12-b3c5-3ce459661a8e", "name": "Jeff Buckley"}}], "text-representation": {"language": "eng", "script": "Latn"}, "title": "Everybody Here Wants You", "artist-credit-phrase": "Jeff Buckley", "quality": "normal", "id": "3451f29c-9bb8-4cc5-bfcc-bd50104b94f8", "medium-list": [{"disc-list": [{"id": "C6N7.QADBQ968Qr8OOjxfQlGtA8-", "sectors": "122983"}, {"id": "wbjbST2jUHRZaB1inCyxxsL7Eqc-", "sectors": "122833"}], "position": "1", "track-list": [{"recording": {"artist-credit": [{"artist": {"sort-name": "Buckley, Jeff", "id": "e6e879c0-3d56-4f12-b3c5-3ce459661a8e", "name": "Jeff Buckley"}}], "length": "286920", "artist-credit-phrase": "Jeff Buckley", "id": "8f8c284b-6818-4a66-a517-37dc8c04a881", "title": "Everybody Here Wants You"}, "position": "1"}, {"recording": {"artist-credit": [{"artist": {"sort-name": "Buckley, Jeff", "id": "e6e879c0-3d56-4f12-b3c5-3ce459661a8e", "name": "Jeff Buckley"}}], "length": "204746", "artist-credit-phrase": "Jeff Buckley", "id": "7d939d14-06a2-478e-b279-ebe20fae8b2f", "title": "Thousand Fold"}, "position": "2"}, {"recording": {"artist-credit": [{"artist": {"sort-name": "Buckley, Jeff", "id": "e6e879c0-3d56-4f12-b3c5-3ce459661a8e", "name": "Jeff Buckley"}}], "length": "288466", "artist-credit-phrase": "Jeff Buckley", "id": "54323c4c-e0f6-4a81-8b80-e1c0b822a3f7", "title": "Eternal Life (road version)"}, "position": "3"}, {"recording": {"artist-credit": [{"artist": {"sort-name": "Buckley, Jeff", "id": "e6e879c0-3d56-4f12-b3c5-3ce459661a8e", "name": "Jeff Buckley"}}], "length": "574026", "artist-credit-phrase": "Jeff Buckley", "id": "4dda67d1-8123-4545-9a78-7b4232089e96", "title": "Hallelujah (live)"}, "position": "4"}, {"recording": {"artist-credit": [{"artist": {"sort-name": "Buckley, Jeff", "id": "e6e879c0-3d56-4f12-b3c5-3ce459661a8e", "name": "Jeff Buckley"}}], "length": "284000", "artist-credit-phrase": "Jeff Buckley", "id": "5db42013-aa5c-4eb4-a549-46ca721990cf", "title": "Last Goodbye (live from Sydney)"}, "position": "5"}], "format": "CD"}]}}
|
||||
@@ -0,0 +1 @@
|
||||
{"release": {"status": "Official", "asin": "B008R78K1Y", "label-info-list": [{"label": {"sort-name": "Brownswood Recordings", "id": "6483a614-d00f-42b0-af39-a602b3ce5daa", "name": "Brownswood Recordings"}, "catalog-number": "BWOOD090CD"}], "title": "Mala in Cuba", "country": "GB", "barcode": "5060180321505", "artist-credit": [{"artist": {"sort-name": "Mala", "id": "09f221eb-c97e-4da5-ac22-d7ab7c555bbb", "name": "Mala"}}], "medium-list": [{"disc-list": [{"id": "u0aKVpO.59JBy6eQRX2vYcoqQZ0-", "sectors": "257868"}], "position": "1", "track-list": [{"recording": {"artist-credit": [{"artist": {"sort-name": "Mala", "id": "09f221eb-c97e-4da5-ac22-d7ab7c555bbb", "name": "Mala"}}], "length": "155000", "artist-credit-phrase": "Mala", "id": "3fa9c442-6ae7-4242-ae3b-0150a3002da4", "title": "Introduction"}, "position": "1"}, {"recording": {"artist-credit": [{"artist": {"sort-name": "Mala", "id": "09f221eb-c97e-4da5-ac22-d7ab7c555bbb", "name": "Mala"}}], "length": "195626", "artist-credit-phrase": "Mala", "id": "983ad5e0-c52e-459d-8828-85718ceff2cc", "title": "Mulata"}, "position": "2"}, {"recording": {"artist-credit": [{"artist": {"sort-name": "Mala", "id": "09f221eb-c97e-4da5-ac22-d7ab7c555bbb", "name": "Mala"}}], "length": "242826", "artist-credit-phrase": "Mala", "id": "6855abf0-32a3-4fe2-a3fb-858f3157d42b", "title": "Tribal"}, "position": "3"}, {"recording": {"artist-credit": [{"artist": {"sort-name": "Mala", "id": "09f221eb-c97e-4da5-ac22-d7ab7c555bbb", "name": "Mala"}}], "length": "263760", "artist-credit-phrase": "Mala", "id": "2f938885-94ad-4b11-b251-f18c3a2a5fa9", "title": "Changuito"}, "position": "4"}, {"recording": {"artist-credit": [{"artist": {"sort-name": "Mala", "id": "09f221eb-c97e-4da5-ac22-d7ab7c555bbb", "name": "Mala"}}], "length": "274520", "artist-credit-phrase": "Mala", "id": "a5ecfa15-06d0-44cf-a28e-c748e8270488", "title": "Revolution"}, "position": "5"}, {"recording": {"artist-credit": [{"artist": {"sort-name": "Mala", "id": "09f221eb-c97e-4da5-ac22-d7ab7c555bbb", "name": "Mala"}}, " feat. ", {"artist": {"sort-name": "Dreiser", "id": "ec07a209-55ff-4084-bc41-9d4d1764e075", "name": "Dreiser"}}, " & ", {"artist": {"sort-name": "Sexto Sentido", "id": "f626b92e-07b1-4a19-ad13-c09d690db66c", "name": "Sexto Sentido"}}], "length": "227800", "artist-credit-phrase": "Mala feat. Dreiser & Sexto Sentido", "id": "cfb3ddaf-584c-4c86-b58c-752c63977bb8", "title": "Como como"}, "position": "6"}, {"recording": {"artist-credit": [{"artist": {"sort-name": "Mala", "id": "09f221eb-c97e-4da5-ac22-d7ab7c555bbb", "name": "Mala"}}], "length": "276693", "artist-credit-phrase": "Mala", "id": "90da8ada-21e2-4e7b-ab46-ff04004a3d84", "title": "Cuba Electronic"}, "position": "7"}, {"recording": {"artist-credit": [{"artist": {"sort-name": "Mala", "id": "09f221eb-c97e-4da5-ac22-d7ab7c555bbb", "name": "Mala"}}], "length": "267973", "artist-credit-phrase": "Mala", "id": "2bf67b46-30f5-4746-ab91-4c9675221a21", "title": "The Tunnel"}, "position": "8"}, {"recording": {"artist-credit": [{"artist": {"sort-name": "Mala", "id": "09f221eb-c97e-4da5-ac22-d7ab7c555bbb", "name": "Mala"}}], "length": "246000", "artist-credit-phrase": "Mala", "id": "0cd61fa9-a97a-41e3-b3c3-db36f633b611", "title": "Ghost"}, "position": "9"}, {"recording": {"artist-credit": [{"artist": {"sort-name": "Mala", "id": "09f221eb-c97e-4da5-ac22-d7ab7c555bbb", "name": "Mala"}}], "length": "250000", "artist-credit-phrase": "Mala", "id": "136989e9-f24f-4872-9026-1487869cc8de", "title": "Curfew"}, "position": "10"}, {"recording": {"artist-credit": [{"artist": {"sort-name": "Mala", "id": "09f221eb-c97e-4da5-ac22-d7ab7c555bbb", "name": "Mala"}}], "length": "174000", "artist-credit-phrase": "Mala", "id": "26b6fd89-7021-4239-b6a7-76eca8c0515a", "title": "The Tourist"}, "position": "11"}, {"recording": {"artist-credit": [{"artist": {"sort-name": "Mala", "id": "09f221eb-c97e-4da5-ac22-d7ab7c555bbb", "name": "Mala"}}], "length": "270733", "artist-credit-phrase": "Mala", "id": "62f7a892-f63b-4a2b-866f-db2a36533f8c", "title": "Change"}, "position": "12"}, {"recording": {"artist-credit": [{"artist": {"sort-name": "Mala", "id": "09f221eb-c97e-4da5-ac22-d7ab7c555bbb", "name": "Mala"}}], "length": "251853", "artist-credit-phrase": "Mala", "id": "4395c91a-d5e9-4fe4-92d2-deee3e0ebb5a", "title": "Calle F"}, "position": "13"}, {"recording": {"artist-credit": [{"artist": {"sort-name": "Mala", "id": "09f221eb-c97e-4da5-ac22-d7ab7c555bbb", "name": "Mala"}}, " feat. ", {"artist": {"sort-name": "Suarez, Danay", "id": "82f04998-7da8-4259-aa7f-d623e6ea2b91", "name": "Danay Suarez"}}], "length": "338000", "artist-credit-phrase": "Mala feat. Danay Suarez", "id": "e47a4fd9-8359-4a33-add8-e8c690e59055", "title": "Noche sue\u00f1os"}, "position": "14"}], "format": "CD"}], "text-representation": {"language": "eng", "script": "Latn"}, "date": "2012-09-17", "artist-credit-phrase": "Mala", "quality": "normal", "id": "61c6fd9b-18f8-4a45-963a-ba3c5d990cae"}}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,49 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- gotten from http://www.musicbrainz.org/ws/1/release/08397059-86c1-463b-8ed0-cd596dbd174f?type=xml&inc=tracks+release-events+artist -->
|
||||
<metadata xmlns="http://musicbrainz.org/ns/mmd-1.0#" >
|
||||
<release type="Album Official" id="08397059-86c1-463b-8ed0-cd596dbd174f">
|
||||
<title>Das Capital: The Songwriting Genius of Luke Haines and The Auteurs</title><text-representation script="Latn" language="ENG" />
|
||||
<asin>B00009XG2O</asin>
|
||||
<artist id="08bca401-88d5-4de7-b9c3-560a2e4c1abc">
|
||||
<name>Luke Haines</name><sort-name>Haines, Luke</sort-name>
|
||||
</artist>
|
||||
<track-list>
|
||||
<track id="38afa7d3-ddc4-4c19-a54b-1de33657417e">
|
||||
<title>How Could I Be Wrong</title><duration>273800</duration>
|
||||
</track>
|
||||
<track id="811fb30e-5d6d-4a03-b2c7-989032039317">
|
||||
<title>Showgirl</title><duration>256466</duration>
|
||||
</track>
|
||||
<track id="40a5b530-c65b-4ca0-9cfa-79f4f9075d38">
|
||||
<title>Baader Meinhof</title><duration>183933</duration>
|
||||
</track>
|
||||
<track id="939ca81e-d633-47ad-a662-08705a4c8ff9">
|
||||
<title>Lenny Valentino</title><duration>136133</duration>
|
||||
</track>
|
||||
<track id="fe713beb-362c-4fac-91a8-f212fd5e59a7">
|
||||
<title>Starstruck</title><duration>212333</duration>
|
||||
</track>
|
||||
<track id="52f15292-2a52-41a7-a46d-fa84321c26a2">
|
||||
<title>Satan Wants Me</title><duration>189666</duration>
|
||||
</track>
|
||||
<track id="9fd3460a-34c3-488c-82b4-9c95c6b8278d">
|
||||
<title>Unsolved Child Murder</title><duration>146800</duration>
|
||||
</track>
|
||||
<track id="ab3aa8d7-309d-45b4-8533-2f779e3952c1">
|
||||
<title>Junk Shop Clothes</title><duration>166800</duration>
|
||||
</track>
|
||||
<track id="12fed492-5e10-4959-af15-ddf5379e5850">
|
||||
<title>The Mitford Sisters</title><duration>302960</duration>
|
||||
</track>
|
||||
<track id="8c773366-373d-432b-b287-8357d77958d5">
|
||||
<title>Bugger Bognor</title><duration>230573</duration>
|
||||
</track>
|
||||
<track id="48c92b0a-3b99-4662-99b9-21649c33f3ef">
|
||||
<title>Future Generation</title><duration>216266</duration>
|
||||
</track>
|
||||
</track-list>
|
||||
<release-event-list>
|
||||
<event country="GB" format="CD" date="2003-07-21" barcode="724359051727" catalog-number="CDHUT 81" />
|
||||
</release-event-list>
|
||||
</release>
|
||||
</metadata>
|
||||
@@ -0,0 +1,50 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<metadata xmlns="http://musicbrainz.org/ns/mmd-1.0#" >
|
||||
<release type="Album Official" id="93a6268c-ddf1-4898-bf93-fb862b1c5c5e">
|
||||
<title>Ladyhawke</title><text-representation script="Latn" language="ENG" />
|
||||
<artist id="2e547c75-36c1-49d0-984e-b14498c936f0">
|
||||
<name>Ladyhawke</name><sort-name>Ladyhawke</sort-name>
|
||||
</artist>
|
||||
<track-list>
|
||||
<track id="ad89d86b-f5c7-47f2-a97a-f2e91a05129a">
|
||||
<title>Magic</title><duration>207000</duration>
|
||||
</track>
|
||||
<track id="05b6718a-eab1-424a-a403-54ff1ef2300f">
|
||||
<title>Manipulating Woman</title><duration>215000</duration>
|
||||
</track>
|
||||
<track id="fc7c9e1e-c68f-41c7-a545-9bcd6b798e1e">
|
||||
<title>My Delirium</title><duration>255000</duration>
|
||||
</track>
|
||||
<track id="2c64b152-63ad-4c91-af62-14a1633ae346">
|
||||
<title>Better Than Sunday</title><duration>208000</duration>
|
||||
</track>
|
||||
<track id="2d85d4e3-8dc4-40e7-b8c7-b44c92d71c47">
|
||||
<title>Another Runaway</title><duration>196000</duration>
|
||||
</track>
|
||||
<track id="a0f8fba5-7c49-43c8-8e52-1834aaa09604">
|
||||
<title>Love Don't Live Here</title><duration>242000</duration>
|
||||
</track>
|
||||
<track id="7cf5b2b6-b39d-4357-8fba-210189f656c2">
|
||||
<title>Back of the Van</title><duration>220000</duration>
|
||||
</track>
|
||||
<track id="0830bd0d-5ffe-40e4-93b3-c125eeff36a0">
|
||||
<title>Paris Is Burning</title><duration>229000</duration>
|
||||
</track>
|
||||
<track id="b7b99255-f4ed-4602-96d0-0de712f37cc7">
|
||||
<title>Professional Suicide</title><duration>223000</duration>
|
||||
</track>
|
||||
<track id="3b5d71ca-bd52-4204-bd82-7ae098f96e58">
|
||||
<title>Dusk Till Dawn</title><duration>156000</duration>
|
||||
</track>
|
||||
<track id="1a2ab650-7084-4b2b-85bd-6d6a91593084">
|
||||
<title>Crazy World</title><duration>215000</duration>
|
||||
</track>
|
||||
<track id="070a3ce4-5cdb-4a99-8b1c-675c02eaf236">
|
||||
<title>Morning Dreams</title><duration>240000</duration>
|
||||
</track>
|
||||
</track-list>
|
||||
<release-event-list>
|
||||
<event country="AU" format="CD" date="2008-09-20" barcode="00602517801974" catalog-number="MODCD093" />
|
||||
</release-event-list>
|
||||
</release>
|
||||
</metadata>
|
||||
@@ -0,0 +1,50 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- gotten from get "http://www.musicbrainz.org/ws/1/release/c7d919f4-3ea0-4c4b-a230-b3605f069440?type=xml&inc=tracks+release-events+artist"
|
||||
-->
|
||||
<metadata xmlns="http://musicbrainz.org/ns/mmd-1.0#" >
|
||||
<release type="Album Official" id="c7d919f4-3ea0-4c4b-a230-b3605f069440">
|
||||
<title>Lamprey</title><text-representation script="Latn" language="ENG" />
|
||||
<asin>B00000581T</asin>
|
||||
<artist id="89e4aade-fc77-4a18-8d0c-3554cc9b8c54">
|
||||
<name>Bettie Serveert</name><sort-name>Bettie Serveert</sort-name>
|
||||
</artist>
|
||||
<track-list>
|
||||
<track id="a89c2320-1eae-4f2d-8b0e-6dfac4ae1451">
|
||||
<title>Keepsake</title><duration>378693</duration>
|
||||
</track>
|
||||
<track id="730df656-f504-4866-b5d0-c59ee01524a3">
|
||||
<title>Ray Ray Rain</title><duration>262106</duration>
|
||||
</track>
|
||||
<track id="62ff731e-3cec-4f7c-a614-72adb062fd6c">
|
||||
<title>D. Feathers</title><duration>332626</duration>
|
||||
</track>
|
||||
<track id="e2702c6e-1dae-4a5d-ab16-aed1be105f94">
|
||||
<title>Re-Feel-It</title><duration>238240</duration>
|
||||
</track>
|
||||
<track id="8bc5865e-6286-4cf2-83c8-94061cf4e25f">
|
||||
<title>21 Days</title><duration>203826</duration>
|
||||
</track>
|
||||
<track id="484f7bc6-51bd-44dd-bac6-b8218602d3f0">
|
||||
<title>Cybor*D</title><duration>241800</duration>
|
||||
</track>
|
||||
<track id="e0f2ce29-392e-499d-8ff9-f573e01fb3dc">
|
||||
<title>Tell Me, Sad</title><duration>318333</duration>
|
||||
</track>
|
||||
<track id="a6d4d047-fef8-41f8-88c0-ed077de875a8">
|
||||
<title>Crutches</title><duration>292373</duration>
|
||||
</track>
|
||||
<track id="8a05d376-b09f-4f92-b0d4-10cf177df0f3">
|
||||
<title>Something So Wild</title><duration>171466</duration>
|
||||
</track>
|
||||
<track id="8b3402bd-aa83-4c01-961b-8fd01cf47228">
|
||||
<title>Totally Freaked Out</title><duration>250893</duration>
|
||||
</track>
|
||||
<track id="b5628295-f5be-438e-ae89-6213666fd552">
|
||||
<title>Silent Spring</title><duration>272533</duration>
|
||||
</track>
|
||||
</track-list>
|
||||
<release-event-list>
|
||||
<event country="US" format="CD" date="1995-04-16" barcode="075679250421" catalog-number="OLE-121-2" />
|
||||
</release-event-list>
|
||||
</release>
|
||||
</metadata>
|
||||
408
whipper/test/silentalarm.result.pickle
Normal file
408
whipper/test/silentalarm.result.pickle
Normal file
@@ -0,0 +1,408 @@
|
||||
(lp0
|
||||
(iwhipper.result.result
|
||||
TrackResult
|
||||
p1
|
||||
(dp2
|
||||
S'testcrc'
|
||||
p3
|
||||
L133637600L
|
||||
sS'peak'
|
||||
p4
|
||||
F0.651947021484375
|
||||
sS'copycrc'
|
||||
p5
|
||||
L133637600L
|
||||
sS'quality'
|
||||
p6
|
||||
F1.0
|
||||
sS'number'
|
||||
p7
|
||||
I0
|
||||
sS'filename'
|
||||
p8
|
||||
V/home/thomas/Bloc Party - Silent Alarm/00. Bloc Party - Hidden Track One Audio.flac
|
||||
p9
|
||||
sba(iwhipper.result.result
|
||||
TrackResult
|
||||
p10
|
||||
(dp11
|
||||
S'ARCRC'
|
||||
p12
|
||||
L1726732487L
|
||||
sg3
|
||||
L1476997036L
|
||||
sS'ARDBConfidence'
|
||||
p13
|
||||
I66
|
||||
sg7
|
||||
I1
|
||||
sS'ARDBMaxConfidence'
|
||||
p14
|
||||
I66
|
||||
sS'ARDBCRC'
|
||||
p15
|
||||
I1726732487
|
||||
sg4
|
||||
F0.99993896484375
|
||||
sg6
|
||||
F1.0
|
||||
sS'accurip'
|
||||
p16
|
||||
I01
|
||||
sg8
|
||||
V/home/thomas/Bloc Party - Silent Alarm/01. Bloc Party - Like Eating Glass.flac
|
||||
p17
|
||||
sS'pregap'
|
||||
p18
|
||||
I15220
|
||||
sg5
|
||||
L1476997036L
|
||||
sba(iwhipper.result.result
|
||||
TrackResult
|
||||
p19
|
||||
(dp20
|
||||
g12
|
||||
L3896378645L
|
||||
sg3
|
||||
L2118180996L
|
||||
sg13
|
||||
I65
|
||||
sg7
|
||||
I2
|
||||
sg14
|
||||
I65
|
||||
sg15
|
||||
L3896378645L
|
||||
sg4
|
||||
F0.99908447265625
|
||||
sg6
|
||||
F1.0
|
||||
sg16
|
||||
I01
|
||||
sg8
|
||||
V/home/thomas/Bloc Party - Silent Alarm/02. Bloc Party - Helicopter.flac
|
||||
p21
|
||||
sg18
|
||||
I0
|
||||
sg5
|
||||
L2118180996L
|
||||
sba(iwhipper.result.result
|
||||
TrackResult
|
||||
p22
|
||||
(dp23
|
||||
g12
|
||||
L1246554911L
|
||||
sg3
|
||||
L2397618238L
|
||||
sg13
|
||||
I66
|
||||
sg7
|
||||
I3
|
||||
sg14
|
||||
I66
|
||||
sg15
|
||||
I1246554911
|
||||
sg4
|
||||
F0.999969482421875
|
||||
sg6
|
||||
F1.0
|
||||
sg16
|
||||
I01
|
||||
sg8
|
||||
V/home/thomas/Bloc Party - Silent Alarm/03. Bloc Party - Positive Tension.flac
|
||||
p24
|
||||
sg18
|
||||
I0
|
||||
sg5
|
||||
L2397618238L
|
||||
sba(iwhipper.result.result
|
||||
TrackResult
|
||||
p25
|
||||
(dp26
|
||||
g12
|
||||
L175751014L
|
||||
sg3
|
||||
L1340624205L
|
||||
sg13
|
||||
I65
|
||||
sg7
|
||||
I4
|
||||
sg14
|
||||
I65
|
||||
sg15
|
||||
I175751014
|
||||
sg4
|
||||
F0.9990234375
|
||||
sg6
|
||||
F1.0
|
||||
sg16
|
||||
I01
|
||||
sg8
|
||||
V/home/thomas/Bloc Party - Silent Alarm/04. Bloc Party - Banquet.flac
|
||||
p27
|
||||
sg18
|
||||
I0
|
||||
sg5
|
||||
L1340624205L
|
||||
sba(iwhipper.result.result
|
||||
TrackResult
|
||||
p28
|
||||
(dp29
|
||||
g12
|
||||
L3375033750L
|
||||
sg3
|
||||
L183201985L
|
||||
sg13
|
||||
I66
|
||||
sg7
|
||||
I5
|
||||
sg14
|
||||
I66
|
||||
sg15
|
||||
L3375033750L
|
||||
sg4
|
||||
F0.9990234375
|
||||
sg6
|
||||
F1.0
|
||||
sg16
|
||||
I01
|
||||
sg8
|
||||
V/home/thomas/Bloc Party - Silent Alarm/05. Bloc Party - Blue Light.flac
|
||||
p30
|
||||
sg18
|
||||
I72
|
||||
sg5
|
||||
L183201985L
|
||||
sba(iwhipper.result.result
|
||||
TrackResult
|
||||
p31
|
||||
(dp32
|
||||
g12
|
||||
L3357757503L
|
||||
sg3
|
||||
L221401921L
|
||||
sg13
|
||||
I66
|
||||
sg7
|
||||
I6
|
||||
sg14
|
||||
I66
|
||||
sg15
|
||||
L3357757503L
|
||||
sg4
|
||||
F0.9990234375
|
||||
sg6
|
||||
F1.0
|
||||
sg16
|
||||
I01
|
||||
sg8
|
||||
V/home/thomas/Bloc Party - Silent Alarm/06. Bloc Party - She's Hearing Voices.flac
|
||||
p33
|
||||
sg18
|
||||
I41
|
||||
sg5
|
||||
L221401921L
|
||||
sba(iwhipper.result.result
|
||||
TrackResult
|
||||
p34
|
||||
(dp35
|
||||
g12
|
||||
L3964329421L
|
||||
sg3
|
||||
L3133726276L
|
||||
sg13
|
||||
I65
|
||||
sg7
|
||||
I7
|
||||
sg14
|
||||
I65
|
||||
sg15
|
||||
L3964329421L
|
||||
sg4
|
||||
F0.999969482421875
|
||||
sg6
|
||||
F1.0
|
||||
sg16
|
||||
I01
|
||||
sg8
|
||||
V/home/thomas/Bloc Party - Silent Alarm/07. Bloc Party - This Modern Love.flac
|
||||
p36
|
||||
sg18
|
||||
I17
|
||||
sg5
|
||||
L3133726276L
|
||||
sba(iwhipper.result.result
|
||||
TrackResult
|
||||
p37
|
||||
(dp38
|
||||
g12
|
||||
L1808393808L
|
||||
sg3
|
||||
L2318646110L
|
||||
sg13
|
||||
I66
|
||||
sg7
|
||||
I8
|
||||
sg14
|
||||
I66
|
||||
sg15
|
||||
I1808393808
|
||||
sg4
|
||||
F0.9990234375
|
||||
sg6
|
||||
F1.0
|
||||
sg16
|
||||
I01
|
||||
sg8
|
||||
V/home/thomas/Bloc Party - Silent Alarm/08. Bloc Party - The Pioneers.flac
|
||||
p39
|
||||
sg18
|
||||
I4
|
||||
sg5
|
||||
L2318646110L
|
||||
sba(iwhipper.result.result
|
||||
TrackResult
|
||||
p40
|
||||
(dp41
|
||||
g12
|
||||
L4144642428L
|
||||
sg3
|
||||
L3145161267L
|
||||
sg13
|
||||
I66
|
||||
sg7
|
||||
I9
|
||||
sg14
|
||||
I66
|
||||
sg15
|
||||
L4144642428L
|
||||
sg4
|
||||
F0.9990234375
|
||||
sg6
|
||||
F1.0
|
||||
sg16
|
||||
I01
|
||||
sg8
|
||||
V/home/thomas/Bloc Party - Silent Alarm/09. Bloc Party - Price of Gasoline.flac
|
||||
p42
|
||||
sg18
|
||||
I11
|
||||
sg5
|
||||
L3145161267L
|
||||
sba(iwhipper.result.result
|
||||
TrackResult
|
||||
p43
|
||||
(dp44
|
||||
g12
|
||||
L4287362638L
|
||||
sg3
|
||||
L3022257630L
|
||||
sg13
|
||||
I65
|
||||
sg7
|
||||
I10
|
||||
sg14
|
||||
I65
|
||||
sg15
|
||||
L4287362638L
|
||||
sg4
|
||||
F0.9990234375
|
||||
sg6
|
||||
F1.0
|
||||
sg16
|
||||
I01
|
||||
sg8
|
||||
V/home/thomas/Bloc Party - Silent Alarm/10. Bloc Party - So Here We Are.flac
|
||||
p45
|
||||
sg18
|
||||
I0
|
||||
sg5
|
||||
L3022257630L
|
||||
sba(iwhipper.result.result
|
||||
TrackResult
|
||||
p46
|
||||
(dp47
|
||||
g12
|
||||
L4127263616L
|
||||
sg3
|
||||
L2011827324L
|
||||
sg13
|
||||
I65
|
||||
sg7
|
||||
I11
|
||||
sg14
|
||||
I65
|
||||
sg15
|
||||
L4127263616L
|
||||
sg4
|
||||
F0.999481201171875
|
||||
sg6
|
||||
F1.0
|
||||
sg16
|
||||
I01
|
||||
sg8
|
||||
V/home/thomas/Bloc Party - Silent Alarm/11. Bloc Party - Luno.flac
|
||||
p48
|
||||
sg18
|
||||
I43
|
||||
sg5
|
||||
L2011827324L
|
||||
sba(iwhipper.result.result
|
||||
TrackResult
|
||||
p49
|
||||
(dp50
|
||||
g12
|
||||
L2559991386L
|
||||
sg3
|
||||
L933582879L
|
||||
sg13
|
||||
I65
|
||||
sg7
|
||||
I12
|
||||
sg14
|
||||
I65
|
||||
sg15
|
||||
L2559991386L
|
||||
sg4
|
||||
F0.999969482421875
|
||||
sg6
|
||||
F1.0
|
||||
sg16
|
||||
I01
|
||||
sg8
|
||||
V/home/thomas/Bloc Party - Silent Alarm/12. Bloc Party - Plans.flac
|
||||
p51
|
||||
sg18
|
||||
I116
|
||||
sg5
|
||||
L933582879L
|
||||
sba(iwhipper.result.result
|
||||
TrackResult
|
||||
p52
|
||||
(dp53
|
||||
g12
|
||||
L2915053507L
|
||||
sg3
|
||||
L1187281525L
|
||||
sg13
|
||||
I66
|
||||
sg7
|
||||
I13
|
||||
sg14
|
||||
I66
|
||||
sg15
|
||||
L2915053507L
|
||||
sg4
|
||||
F0.999969482421875
|
||||
sg6
|
||||
F1.0
|
||||
sg16
|
||||
I01
|
||||
sg8
|
||||
V/home/thomas/Bloc Party - Silent Alarm/13. Bloc Party - Compliments.flac
|
||||
p54
|
||||
sg18
|
||||
I22
|
||||
sg5
|
||||
L1187281525L
|
||||
sba.
|
||||
13
whipper/test/strokes-someday.eac.cue
Normal file
13
whipper/test/strokes-someday.eac.cue
Normal file
@@ -0,0 +1,13 @@
|
||||
REM GENRE "Alternative Rock"
|
||||
REM DATE 2001
|
||||
REM DISCID 0200BA01
|
||||
REM COMMENT "ExactAudioCopy v0.99pb4"
|
||||
PERFORMER "The Strokes"
|
||||
TITLE "Someday"
|
||||
FILE "The Strokes - Someday\01 - The Strokes - Someday.wav" WAVE
|
||||
TRACK 01 AUDIO
|
||||
TITLE "Someday"
|
||||
PERFORMER "The Strokes"
|
||||
FLAGS DCP
|
||||
PREGAP 00:00:01
|
||||
INDEX 01 00:00:00
|
||||
12
whipper/test/strokes-someday.toc
Normal file
12
whipper/test/strokes-someday.toc
Normal file
@@ -0,0 +1,12 @@
|
||||
CD_DA
|
||||
|
||||
|
||||
// Track 1
|
||||
TRACK AUDIO
|
||||
COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
SILENCE 00:00:01
|
||||
FILE "data.wav" 0 03:06:59
|
||||
START 00:00:01
|
||||
|
||||
136
whipper/test/surferrosa.eac.corrected.cue
Normal file
136
whipper/test/surferrosa.eac.corrected.cue
Normal file
@@ -0,0 +1,136 @@
|
||||
REM GENRE Alternative
|
||||
REM DATE 1987
|
||||
REM DISCID 350CAA15
|
||||
REM COMMENT "ExactAudioCopy v0.99pb4"
|
||||
CATALOG 0000000000000
|
||||
PERFORMER "Pixies"
|
||||
TITLE "Surfer Rosa & Come on Pilgrim"
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\01 - Pixies - Bone Machine.wav" WAVE
|
||||
TRACK 01 AUDIO
|
||||
TITLE "Bone Machine"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 00 00:00:00
|
||||
INDEX 01 00:00:32
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\02 - Pixies - Break My Body.wav" WAVE
|
||||
TRACK 02 AUDIO
|
||||
TITLE "Break My Body"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\03 - Pixies - Something Against You.wav" WAVE
|
||||
TRACK 03 AUDIO
|
||||
TITLE "Something Against You"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 00 00:00:00
|
||||
INDEX 01 00:00:45
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\04 - Pixies - Broken Face.wav" WAVE
|
||||
TRACK 04 AUDIO
|
||||
TITLE "Broken Face"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\05 - Pixies - Gigantic.wav" WAVE
|
||||
TRACK 05 AUDIO
|
||||
TITLE "Gigantic"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\06 - Pixies - River Euphrates.wav" WAVE
|
||||
TRACK 06 AUDIO
|
||||
TITLE "River Euphrates"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\07 - Pixies - Where Is My Mind .wav" WAVE
|
||||
TRACK 07 AUDIO
|
||||
TITLE "Where Is My Mind?"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\08 - Pixies - Cactus.wav" WAVE
|
||||
TRACK 08 AUDIO
|
||||
TITLE "Cactus"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\09 - Pixies - Tony's Theme.wav" WAVE
|
||||
TRACK 09 AUDIO
|
||||
TITLE "Tony's Theme"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\10 - Pixies - Oh My Golly!.wav" WAVE
|
||||
TRACK 10 AUDIO
|
||||
TITLE "Oh My Golly!"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\11 - Pixies - Vamos.wav" WAVE
|
||||
TRACK 11 AUDIO
|
||||
TITLE "Vamos"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
INDEX 02 00:44:70
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\12 - Pixies - I'm Amazed.wav" WAVE
|
||||
TRACK 12 AUDIO
|
||||
TITLE "I'm Amazed"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\13 - Pixies - Brick is Red.wav" WAVE
|
||||
TRACK 13 AUDIO
|
||||
TITLE "Brick is Red"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\14 - Pixies - Caribou.wav" WAVE
|
||||
TRACK 14 AUDIO
|
||||
TITLE "Caribou"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\15 - Pixies - Vamos.wav" WAVE
|
||||
TRACK 15 AUDIO
|
||||
TITLE "Vamos"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\16 - Pixies - Isla de Encanta.wav" WAVE
|
||||
TRACK 16 AUDIO
|
||||
TITLE "Isla de Encanta"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\17 - Pixies - Ed is Dead.wav" WAVE
|
||||
TRACK 17 AUDIO
|
||||
TITLE "Ed is Dead"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\18 - Pixies - The Holyday Song.wav" WAVE
|
||||
TRACK 18 AUDIO
|
||||
TITLE "The Holyday Song"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\19 - Pixies - Nimrod's Son.wav" WAVE
|
||||
TRACK 19 AUDIO
|
||||
TITLE "Nimrod's Son"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\20 - Pixies - I've Been Tired.wav" WAVE
|
||||
TRACK 20 AUDIO
|
||||
TITLE "I've Been Tired"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\21 - Pixies - Levitate Me.wav" WAVE
|
||||
TRACK 21 AUDIO
|
||||
TITLE "Levitate Me"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
136
whipper/test/surferrosa.eac.currentgap.cue
Normal file
136
whipper/test/surferrosa.eac.currentgap.cue
Normal file
@@ -0,0 +1,136 @@
|
||||
REM GENRE Alternative
|
||||
REM DATE 1987
|
||||
REM DISCID 350CAA15
|
||||
REM COMMENT "ExactAudioCopy v0.99pb4"
|
||||
CATALOG 0000000000000
|
||||
PERFORMER "Pixies"
|
||||
TITLE "Surfer Rosa & Come on Pilgrim"
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\01 - Pixies - Bone Machine.wav" WAVE
|
||||
TRACK 01 AUDIO
|
||||
TITLE "Bone Machine"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
PREGAP 00:00:32
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\02 - Pixies - Break My Body.wav" WAVE
|
||||
TRACK 02 AUDIO
|
||||
TITLE "Break My Body"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
TRACK 03 AUDIO
|
||||
TITLE "Something Against You"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 00 02:05:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\03 - Pixies - Something Against You.wav" WAVE
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\04 - Pixies - Broken Face.wav" WAVE
|
||||
TRACK 04 AUDIO
|
||||
TITLE "Broken Face"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\05 - Pixies - Gigantic.wav" WAVE
|
||||
TRACK 05 AUDIO
|
||||
TITLE "Gigantic"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\06 - Pixies - River Euphrates.wav" WAVE
|
||||
TRACK 06 AUDIO
|
||||
TITLE "River Euphrates"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\07 - Pixies - Where Is My Mind .wav" WAVE
|
||||
TRACK 07 AUDIO
|
||||
TITLE "Where Is My Mind?"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\08 - Pixies - Cactus.wav" WAVE
|
||||
TRACK 08 AUDIO
|
||||
TITLE "Cactus"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\09 - Pixies - Tony's Theme.wav" WAVE
|
||||
TRACK 09 AUDIO
|
||||
TITLE "Tony's Theme"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\10 - Pixies - Oh My Golly!.wav" WAVE
|
||||
TRACK 10 AUDIO
|
||||
TITLE "Oh My Golly!"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\11 - Pixies - Vamos.wav" WAVE
|
||||
TRACK 11 AUDIO
|
||||
TITLE "Vamos"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
INDEX 02 00:44:70
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\12 - Pixies - I'm Amazed.wav" WAVE
|
||||
TRACK 12 AUDIO
|
||||
TITLE "I'm Amazed"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\13 - Pixies - Brick is Red.wav" WAVE
|
||||
TRACK 13 AUDIO
|
||||
TITLE "Brick is Red"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\14 - Pixies - Caribou.wav" WAVE
|
||||
TRACK 14 AUDIO
|
||||
TITLE "Caribou"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\15 - Pixies - Vamos.wav" WAVE
|
||||
TRACK 15 AUDIO
|
||||
TITLE "Vamos"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\16 - Pixies - Isla de Encanta.wav" WAVE
|
||||
TRACK 16 AUDIO
|
||||
TITLE "Isla de Encanta"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\17 - Pixies - Ed is Dead.wav" WAVE
|
||||
TRACK 17 AUDIO
|
||||
TITLE "Ed is Dead"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\18 - Pixies - The Holyday Song.wav" WAVE
|
||||
TRACK 18 AUDIO
|
||||
TITLE "The Holyday Song"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\19 - Pixies - Nimrod's Son.wav" WAVE
|
||||
TRACK 19 AUDIO
|
||||
TITLE "Nimrod's Son"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\20 - Pixies - I've Been Tired.wav" WAVE
|
||||
TRACK 20 AUDIO
|
||||
TITLE "I've Been Tired"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\21 - Pixies - Levitate Me.wav" WAVE
|
||||
TRACK 21 AUDIO
|
||||
TITLE "Levitate Me"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
136
whipper/test/surferrosa.eac.leftout.cue
Normal file
136
whipper/test/surferrosa.eac.leftout.cue
Normal file
@@ -0,0 +1,136 @@
|
||||
REM GENRE Alternative
|
||||
REM DATE 1987
|
||||
REM DISCID 350CAA15
|
||||
REM COMMENT "ExactAudioCopy v0.99pb4"
|
||||
CATALOG 0000000000000
|
||||
PERFORMER "Pixies"
|
||||
TITLE "Surfer Rosa & Come on Pilgrim"
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\01 - Pixies - Bone Machine.wav" WAVE
|
||||
TRACK 01 AUDIO
|
||||
TITLE "Bone Machine"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
PREGAP 00:00:32
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\02 - Pixies - Break My Body.wav" WAVE
|
||||
TRACK 02 AUDIO
|
||||
TITLE "Break My Body"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\03 - Pixies - Something Against You.wav" WAVE
|
||||
TRACK 03 AUDIO
|
||||
TITLE "Something Against You"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
PREGAP 00:00:45
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\04 - Pixies - Broken Face.wav" WAVE
|
||||
TRACK 04 AUDIO
|
||||
TITLE "Broken Face"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\05 - Pixies - Gigantic.wav" WAVE
|
||||
TRACK 05 AUDIO
|
||||
TITLE "Gigantic"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\06 - Pixies - River Euphrates.wav" WAVE
|
||||
TRACK 06 AUDIO
|
||||
TITLE "River Euphrates"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\07 - Pixies - Where Is My Mind .wav" WAVE
|
||||
TRACK 07 AUDIO
|
||||
TITLE "Where Is My Mind?"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\08 - Pixies - Cactus.wav" WAVE
|
||||
TRACK 08 AUDIO
|
||||
TITLE "Cactus"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\09 - Pixies - Tony's Theme.wav" WAVE
|
||||
TRACK 09 AUDIO
|
||||
TITLE "Tony's Theme"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\10 - Pixies - Oh My Golly!.wav" WAVE
|
||||
TRACK 10 AUDIO
|
||||
TITLE "Oh My Golly!"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\11 - Pixies - Vamos.wav" WAVE
|
||||
TRACK 11 AUDIO
|
||||
TITLE "Vamos"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
INDEX 02 00:44:70
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\12 - Pixies - I'm Amazed.wav" WAVE
|
||||
TRACK 12 AUDIO
|
||||
TITLE "I'm Amazed"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\13 - Pixies - Brick is Red.wav" WAVE
|
||||
TRACK 13 AUDIO
|
||||
TITLE "Brick is Red"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\14 - Pixies - Caribou.wav" WAVE
|
||||
TRACK 14 AUDIO
|
||||
TITLE "Caribou"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\15 - Pixies - Vamos.wav" WAVE
|
||||
TRACK 15 AUDIO
|
||||
TITLE "Vamos"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\16 - Pixies - Isla de Encanta.wav" WAVE
|
||||
TRACK 16 AUDIO
|
||||
TITLE "Isla de Encanta"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\17 - Pixies - Ed is Dead.wav" WAVE
|
||||
TRACK 17 AUDIO
|
||||
TITLE "Ed is Dead"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\18 - Pixies - The Holyday Song.wav" WAVE
|
||||
TRACK 18 AUDIO
|
||||
TITLE "The Holyday Song"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\19 - Pixies - Nimrod's Son.wav" WAVE
|
||||
TRACK 19 AUDIO
|
||||
TITLE "Nimrod's Son"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\20 - Pixies - I've Been Tired.wav" WAVE
|
||||
TRACK 20 AUDIO
|
||||
TITLE "I've Been Tired"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\21 - Pixies - Levitate Me.wav" WAVE
|
||||
TRACK 21 AUDIO
|
||||
TITLE "Levitate Me"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
136
whipper/test/surferrosa.eac.noncompliant.cue
Normal file
136
whipper/test/surferrosa.eac.noncompliant.cue
Normal file
@@ -0,0 +1,136 @@
|
||||
REM GENRE Alternative
|
||||
REM DATE 1987
|
||||
REM DISCID 350CAA15
|
||||
REM COMMENT "ExactAudioCopy v0.99pb4"
|
||||
CATALOG 0000000000000
|
||||
PERFORMER "Pixies"
|
||||
TITLE "Surfer Rosa & Come on Pilgrim"
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\01 - Pixies - Bone Machine.wav" WAVE
|
||||
TRACK 01 AUDIO
|
||||
TITLE "Bone Machine"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
PREGAP 00:00:32
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\02 - Pixies - Break My Body.wav" WAVE
|
||||
TRACK 02 AUDIO
|
||||
TITLE "Break My Body"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
TRACK 03 AUDIO
|
||||
TITLE "Something Against You"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 00 02:05:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\03 - Pixies - Something Against You.wav" WAVE
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\04 - Pixies - Broken Face.wav" WAVE
|
||||
TRACK 04 AUDIO
|
||||
TITLE "Broken Face"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\05 - Pixies - Gigantic.wav" WAVE
|
||||
TRACK 05 AUDIO
|
||||
TITLE "Gigantic"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\06 - Pixies - River Euphrates.wav" WAVE
|
||||
TRACK 06 AUDIO
|
||||
TITLE "River Euphrates"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\07 - Pixies - Where Is My Mind .wav" WAVE
|
||||
TRACK 07 AUDIO
|
||||
TITLE "Where Is My Mind?"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\08 - Pixies - Cactus.wav" WAVE
|
||||
TRACK 08 AUDIO
|
||||
TITLE "Cactus"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\09 - Pixies - Tony's Theme.wav" WAVE
|
||||
TRACK 09 AUDIO
|
||||
TITLE "Tony's Theme"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\10 - Pixies - Oh My Golly!.wav" WAVE
|
||||
TRACK 10 AUDIO
|
||||
TITLE "Oh My Golly!"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\11 - Pixies - Vamos.wav" WAVE
|
||||
TRACK 11 AUDIO
|
||||
TITLE "Vamos"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
INDEX 02 00:44:70
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\12 - Pixies - I'm Amazed.wav" WAVE
|
||||
TRACK 12 AUDIO
|
||||
TITLE "I'm Amazed"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\13 - Pixies - Brick is Red.wav" WAVE
|
||||
TRACK 13 AUDIO
|
||||
TITLE "Brick is Red"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\14 - Pixies - Caribou.wav" WAVE
|
||||
TRACK 14 AUDIO
|
||||
TITLE "Caribou"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\15 - Pixies - Vamos.wav" WAVE
|
||||
TRACK 15 AUDIO
|
||||
TITLE "Vamos"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\16 - Pixies - Isla de Encanta.wav" WAVE
|
||||
TRACK 16 AUDIO
|
||||
TITLE "Isla de Encanta"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\17 - Pixies - Ed is Dead.wav" WAVE
|
||||
TRACK 17 AUDIO
|
||||
TITLE "Ed is Dead"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\18 - Pixies - The Holyday Song.wav" WAVE
|
||||
TRACK 18 AUDIO
|
||||
TITLE "The Holyday Song"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\19 - Pixies - Nimrod's Son.wav" WAVE
|
||||
TRACK 19 AUDIO
|
||||
TITLE "Nimrod's Son"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\20 - Pixies - I've Been Tired.wav" WAVE
|
||||
TRACK 20 AUDIO
|
||||
TITLE "I've Been Tired"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
FILE "Pixies - Surfer Rosa & Come on Pilgrim\21 - Pixies - Levitate Me.wav" WAVE
|
||||
TRACK 21 AUDIO
|
||||
TITLE "Levitate Me"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 00:00:00
|
||||
116
whipper/test/surferrosa.eac.single.cue
Normal file
116
whipper/test/surferrosa.eac.single.cue
Normal file
@@ -0,0 +1,116 @@
|
||||
REM GENRE Alternative
|
||||
REM DATE 1987
|
||||
REM DISCID 350CAA15
|
||||
REM COMMENT "ExactAudioCopy v0.99pb4"
|
||||
CATALOG 0000000000000
|
||||
PERFORMER "Pixies"
|
||||
TITLE "Surfer Rosa & Come on Pilgrim"
|
||||
FILE "Range.wav" WAVE
|
||||
TRACK 01 AUDIO
|
||||
TITLE "Bone Machine"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 00 00:00:00
|
||||
INDEX 01 00:00:32
|
||||
TRACK 02 AUDIO
|
||||
TITLE "Break My Body"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 03:03:42
|
||||
TRACK 03 AUDIO
|
||||
TITLE "Something Against You"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 00 05:08:42
|
||||
INDEX 01 05:09:12
|
||||
TRACK 04 AUDIO
|
||||
TITLE "Broken Face"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 06:56:67
|
||||
TRACK 05 AUDIO
|
||||
TITLE "Gigantic"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 08:27:00
|
||||
TRACK 06 AUDIO
|
||||
TITLE "River Euphrates"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 12:21:70
|
||||
TRACK 07 AUDIO
|
||||
TITLE "Where Is My Mind?"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 14:53:60
|
||||
TRACK 08 AUDIO
|
||||
TITLE "Cactus"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 18:47:15
|
||||
TRACK 09 AUDIO
|
||||
TITLE "Tony's Theme"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 21:03:70
|
||||
TRACK 10 AUDIO
|
||||
TITLE "Oh My Golly!"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 22:56:15
|
||||
TRACK 11 AUDIO
|
||||
TITLE "Vamos"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 24:43:32
|
||||
INDEX 02 25:28:27
|
||||
TRACK 12 AUDIO
|
||||
TITLE "I'm Amazed"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 29:49:20
|
||||
TRACK 13 AUDIO
|
||||
TITLE "Brick is Red"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 31:31:27
|
||||
TRACK 14 AUDIO
|
||||
TITLE "Caribou"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 33:32:20
|
||||
TRACK 15 AUDIO
|
||||
TITLE "Vamos"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 36:46:45
|
||||
TRACK 16 AUDIO
|
||||
TITLE "Isla de Encanta"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 39:40:22
|
||||
TRACK 17 AUDIO
|
||||
TITLE "Ed is Dead"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 41:21:47
|
||||
TRACK 18 AUDIO
|
||||
TITLE "The Holyday Song"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 43:51:47
|
||||
TRACK 19 AUDIO
|
||||
TITLE "Nimrod's Son"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 46:06:10
|
||||
TRACK 20 AUDIO
|
||||
TITLE "I've Been Tired"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 48:23:25
|
||||
TRACK 21 AUDIO
|
||||
TITLE "Levitate Me"
|
||||
PERFORMER "Pixies"
|
||||
ISRC 000000000000
|
||||
INDEX 01 51:24:07
|
||||
196
whipper/test/surferrosa.toc
Normal file
196
whipper/test/surferrosa.toc
Normal file
@@ -0,0 +1,196 @@
|
||||
CD_DA
|
||||
|
||||
CATALOG "0000000000000"
|
||||
|
||||
// Track 1
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "000000000000"
|
||||
SILENCE 00:00:32
|
||||
FILE "data.wav" 0 03:03:10
|
||||
START 00:00:32
|
||||
|
||||
|
||||
// Track 2
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "000000000000"
|
||||
FILE "data.wav" 03:03:10 02:05:00
|
||||
|
||||
|
||||
// Track 3
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "000000000000"
|
||||
FILE "data.wav" 05:08:10 01:48:25
|
||||
START 00:00:45
|
||||
|
||||
|
||||
// Track 4
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "000000000000"
|
||||
FILE "data.wav" 06:56:35 01:30:08
|
||||
|
||||
|
||||
// Track 5
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "000000000000"
|
||||
FILE "data.wav" 08:26:43 03:54:70
|
||||
|
||||
|
||||
// Track 6
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "000000000000"
|
||||
FILE "data.wav" 12:21:38 02:31:65
|
||||
|
||||
|
||||
// Track 7
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "000000000000"
|
||||
FILE "data.wav" 14:53:28 03:53:30
|
||||
|
||||
|
||||
// Track 8
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "000000000000"
|
||||
FILE "data.wav" 18:46:58 02:16:55
|
||||
|
||||
|
||||
// Track 9
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "000000000000"
|
||||
FILE "data.wav" 21:03:38 01:52:20
|
||||
|
||||
|
||||
// Track 10
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "000000000000"
|
||||
FILE "data.wav" 22:55:58 01:47:17
|
||||
|
||||
|
||||
// Track 11
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "000000000000"
|
||||
FILE "data.wav" 24:43:00 05:05:63
|
||||
INDEX 00:44:70
|
||||
|
||||
|
||||
// Track 12
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "000000000000"
|
||||
FILE "data.wav" 29:48:63 01:42:07
|
||||
|
||||
|
||||
// Track 13
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "000000000000"
|
||||
FILE "data.wav" 31:30:70 02:00:68
|
||||
|
||||
|
||||
// Track 14
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "000000000000"
|
||||
FILE "data.wav" 33:31:63 03:14:25
|
||||
|
||||
|
||||
// Track 15
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "000000000000"
|
||||
FILE "data.wav" 36:46:13 02:53:52
|
||||
|
||||
|
||||
// Track 16
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "000000000000"
|
||||
FILE "data.wav" 39:39:65 01:41:25
|
||||
|
||||
|
||||
// Track 17
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "000000000000"
|
||||
FILE "data.wav" 41:21:15 02:30:00
|
||||
|
||||
|
||||
// Track 18
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "000000000000"
|
||||
FILE "data.wav" 43:51:15 02:14:38
|
||||
|
||||
|
||||
// Track 19
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "000000000000"
|
||||
FILE "data.wav" 46:05:53 02:17:15
|
||||
|
||||
|
||||
// Track 20
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "000000000000"
|
||||
FILE "data.wav" 48:22:68 03:00:57
|
||||
|
||||
|
||||
// Track 21
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
ISRC "000000000000"
|
||||
FILE "data.wav" 51:23:50 02:38:38
|
||||
|
||||
32
whipper/test/test_common_accurip.py
Normal file
32
whipper/test/test_common_accurip.py
Normal file
@@ -0,0 +1,32 @@
|
||||
# -*- Mode: Python; test-case-name: whipper.test.test_common_accurip -*-
|
||||
# vi:si:et:sw=4:sts=4:ts=4
|
||||
|
||||
import os
|
||||
|
||||
from whipper.common import accurip
|
||||
|
||||
from whipper.test import common as tcommon
|
||||
|
||||
|
||||
class AccurateRipResponseTestCase(tcommon.TestCase):
|
||||
|
||||
def testResponse(self):
|
||||
path = os.path.join(os.path.dirname(__file__),
|
||||
'dBAR-011-0010e284-009228a3-9809ff0b.bin')
|
||||
data = open(path, "rb").read()
|
||||
|
||||
responses = accurip.getAccurateRipResponses(data)
|
||||
self.assertEquals(len(responses), 3)
|
||||
|
||||
|
||||
response = responses[0]
|
||||
|
||||
self.assertEquals(response.trackCount, 11)
|
||||
self.assertEquals(response.discId1, "0010e284")
|
||||
self.assertEquals(response.discId2, "009228a3")
|
||||
self.assertEquals(response.cddbDiscId, "9809ff0b")
|
||||
|
||||
for i in range(11):
|
||||
self.assertEquals(response.confidences[i], 35)
|
||||
self.assertEquals(response.checksums[0], "beea32c8")
|
||||
self.assertEquals(response.checksums[10], "acee98ca")
|
||||
23
whipper/test/test_common_cache.py
Normal file
23
whipper/test/test_common_cache.py
Normal file
@@ -0,0 +1,23 @@
|
||||
# -*- Mode: Python; test-case-name: whipper.test.test_common_cache -*-
|
||||
# vi:si:et:sw=4:sts=4:ts=4
|
||||
|
||||
import os
|
||||
|
||||
from whipper.common import cache
|
||||
|
||||
from whipper.test import common as tcommon
|
||||
|
||||
|
||||
class ResultCacheTestCase(tcommon.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.cache = cache.ResultCache(
|
||||
os.path.join(os.path.dirname(__file__), 'cache', 'result'))
|
||||
|
||||
def testGetResult(self):
|
||||
result = self.cache.getRipResult('fe105a11')
|
||||
self.assertEquals(result.object.title, "The Writing's on the Wall")
|
||||
|
||||
def testGetIds(self):
|
||||
ids = self.cache.getIds()
|
||||
self.assertEquals(ids, ['fe105a11'])
|
||||
67
whipper/test/test_common_common.py
Normal file
67
whipper/test/test_common_common.py
Normal file
@@ -0,0 +1,67 @@
|
||||
# -*- Mode: Python; test-case-name: whipper.test.test_common_common -*-
|
||||
# vi:si:et:sw=4:sts=4:ts=4
|
||||
|
||||
import os
|
||||
import tempfile
|
||||
|
||||
from whipper.common import common
|
||||
|
||||
from whipper.test import common as tcommon
|
||||
|
||||
|
||||
class ShrinkTestCase(tcommon.TestCase):
|
||||
|
||||
def testSufjan(self):
|
||||
path = (u'morituri/Sufjan Stevens - Illinois/02. Sufjan Stevens - '
|
||||
'The Black Hawk War, or, How to Demolish an Entire '
|
||||
'Civilization and Still Feel Good About Yourself in the '
|
||||
'Morning, or, We Apologize for the Inconvenience but '
|
||||
'You\'re Going to Have to Leave Now, or, "I Have Fought '
|
||||
'the Big Knives and Will Continue to Fight Them Until They '
|
||||
'Are Off Our Lands!".flac')
|
||||
|
||||
shorter = common.shrinkPath(path)
|
||||
self.failUnless(os.path.splitext(path)[0].startswith(
|
||||
os.path.splitext(shorter)[0]))
|
||||
self.failIfEquals(path, shorter)
|
||||
|
||||
|
||||
class FramesTestCase(tcommon.TestCase):
|
||||
|
||||
def testFrames(self):
|
||||
self.assertEquals(common.framesToHMSF(123456), '00:27:26.06')
|
||||
|
||||
|
||||
class FormatTimeTestCase(tcommon.TestCase):
|
||||
|
||||
def testFormatTime(self):
|
||||
self.assertEquals(common.formatTime(7202), '02:00:02.000')
|
||||
|
||||
|
||||
class GetRelativePathTestCase(tcommon.TestCase):
|
||||
|
||||
def testRelativeOutputDirectory(self):
|
||||
directory = '.Placebo - Black Market Music (2000)'
|
||||
cue = './' + directory + '/Placebo - Black Market Music (2000)'
|
||||
track = './' + directory + '/01. Placebo - Taste in Men.flac'
|
||||
|
||||
self.assertEquals(common.getRelativePath(track, cue),
|
||||
'01. Placebo - Taste in Men.flac')
|
||||
|
||||
|
||||
class GetRealPathTestCase(tcommon.TestCase):
|
||||
|
||||
def testRealWithBackslash(self):
|
||||
fd, path = tempfile.mkstemp(suffix=u'back\\slash.flac')
|
||||
refPath = os.path.join(os.path.dirname(path), 'fake.cue')
|
||||
|
||||
self.assertEquals(common.getRealPath(refPath, path),
|
||||
path)
|
||||
|
||||
# same path, but with wav extension, will point to flac file
|
||||
wavPath = path[:-4] + 'wav'
|
||||
self.assertEquals(common.getRealPath(refPath, wavPath),
|
||||
path)
|
||||
|
||||
os.close(fd)
|
||||
os.unlink(path)
|
||||
68
whipper/test/test_common_config.py
Normal file
68
whipper/test/test_common_config.py
Normal file
@@ -0,0 +1,68 @@
|
||||
# -*- Mode: Python; test-case-name: whipper.test.test_common_config -*-
|
||||
# vi:si:et:sw=4:sts=4:ts=4
|
||||
|
||||
import os
|
||||
import tempfile
|
||||
|
||||
from whipper.common import config
|
||||
|
||||
from whipper.test import common as tcommon
|
||||
|
||||
|
||||
class ConfigTestCase(tcommon.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
fd, self._path = tempfile.mkstemp(suffix=u'.morituri.test.config')
|
||||
os.close(fd)
|
||||
self._config = config.Config(self._path)
|
||||
|
||||
def tearDown(self):
|
||||
os.unlink(self._path)
|
||||
|
||||
def testAddReadOffset(self):
|
||||
self.assertRaises(KeyError,
|
||||
self._config.getReadOffset, 'PLEXTOR ', 'DVDR PX-L890SA', '1.05')
|
||||
self._config.setReadOffset('PLEXTOR ', 'DVDR PX-L890SA', '1.05', 6)
|
||||
|
||||
# getting it from memory should work
|
||||
offset = self._config.getReadOffset('PLEXTOR ', 'DVDR PX-L890SA',
|
||||
'1.05')
|
||||
self.assertEquals(offset, 6)
|
||||
|
||||
# and so should getting it after reading it again
|
||||
self._config.open()
|
||||
offset = self._config.getReadOffset('PLEXTOR ', 'DVDR PX-L890SA',
|
||||
'1.05')
|
||||
self.assertEquals(offset, 6)
|
||||
|
||||
def testAddReadOffsetSpaced(self):
|
||||
self.assertRaises(KeyError,
|
||||
self._config.getReadOffset, 'Slimtype', 'eSAU208 2 ', 'ML03')
|
||||
self._config.setReadOffset('Slimtype', 'eSAU208 2 ', 'ML03', 6)
|
||||
|
||||
# getting it from memory should work
|
||||
offset = self._config.getReadOffset(
|
||||
'Slimtype', 'eSAU208 2 ', 'ML03')
|
||||
self.assertEquals(offset, 6)
|
||||
|
||||
# and so should getting it after reading it again
|
||||
self._config.open()
|
||||
offset = self._config.getReadOffset(
|
||||
'Slimtype', 'eSAU208 2 ', 'ML03')
|
||||
self.assertEquals(offset, 6)
|
||||
|
||||
def testDefeatsCache(self):
|
||||
self.assertRaises(KeyError, self._config.getDefeatsCache,
|
||||
'PLEXTOR ', 'DVDR PX-L890SA', '1.05')
|
||||
|
||||
self._config.setDefeatsCache(
|
||||
'PLEXTOR ', 'DVDR PX-L890SA', '1.05', False)
|
||||
defeats = self._config.getDefeatsCache(
|
||||
'PLEXTOR ', 'DVDR PX-L890SA', '1.05')
|
||||
self.assertEquals(defeats, False)
|
||||
|
||||
self._config.setDefeatsCache(
|
||||
'PLEXTOR ', 'DVDR PX-L890SA', '1.05', True)
|
||||
defeats = self._config.getDefeatsCache(
|
||||
'PLEXTOR ', 'DVDR PX-L890SA', '1.05')
|
||||
self.assertEquals(defeats, True)
|
||||
16
whipper/test/test_common_directory.py
Normal file
16
whipper/test/test_common_directory.py
Normal file
@@ -0,0 +1,16 @@
|
||||
# -*- Mode: Python; test-case-name: whipper.test.test_common_directory -*-
|
||||
# vi:si:et:sw=4:sts=4:ts=4
|
||||
|
||||
from whipper.common import directory
|
||||
|
||||
from whipper.test import common
|
||||
|
||||
|
||||
class DirectoryTestCase(common.TestCase):
|
||||
|
||||
def testAll(self):
|
||||
path = directory.config_path()
|
||||
self.failUnless(path.startswith('/home'))
|
||||
|
||||
path = directory.cache_path()
|
||||
self.failUnless(path.startswith('/home'))
|
||||
16
whipper/test/test_common_drive.py
Normal file
16
whipper/test/test_common_drive.py
Normal file
@@ -0,0 +1,16 @@
|
||||
# -*- Mode: Python; test-case-name: whipper.test.test_common_drive -*-
|
||||
# vi:si:et:sw=4:sts=4:ts=4
|
||||
|
||||
from whipper.test import common
|
||||
from whipper.common import drive
|
||||
|
||||
|
||||
class ListifyTestCase(common.TestCase):
|
||||
|
||||
def testString(self):
|
||||
string = '/dev/sr0'
|
||||
self.assertEquals(drive._listify(string), [string, ])
|
||||
|
||||
def testList(self):
|
||||
lst = ['/dev/scd0', '/dev/sr0']
|
||||
self.assertEquals(drive._listify(lst), lst)
|
||||
118
whipper/test/test_common_mbngs.py
Normal file
118
whipper/test/test_common_mbngs.py
Normal file
@@ -0,0 +1,118 @@
|
||||
# -*- Mode: Python; test-case-name: whipper.test.test_common_mbngs -*-
|
||||
# vi:si:et:sw=4:sts=4:ts=4
|
||||
|
||||
import os
|
||||
import json
|
||||
|
||||
import unittest
|
||||
|
||||
from whipper.common import mbngs
|
||||
|
||||
|
||||
class MetadataTestCase(unittest.TestCase):
|
||||
|
||||
# Generated with rip -R cd info
|
||||
def testJeffEverybodySingle(self):
|
||||
path = os.path.join(os.path.dirname(__file__),
|
||||
'morituri.release.3451f29c-9bb8-4cc5-bfcc-bd50104b94f8.json')
|
||||
handle = open(path, "rb")
|
||||
response = json.loads(handle.read())
|
||||
handle.close()
|
||||
discid = "wbjbST2jUHRZaB1inCyxxsL7Eqc-"
|
||||
|
||||
metadata = mbngs._getMetadata({}, response['release'], discid)
|
||||
|
||||
self.failIf(metadata.release)
|
||||
|
||||
def test2MeterSessies10(self):
|
||||
# various artists, multiple artists per track
|
||||
path = os.path.join(os.path.dirname(__file__),
|
||||
'morituri.release.a76714e0-32b1-4ed4-b28e-f86d99642193.json')
|
||||
handle = open(path, "rb")
|
||||
response = json.loads(handle.read())
|
||||
handle.close()
|
||||
discid = "f7XO36a7n1LCCskkCiulReWbwZA-"
|
||||
|
||||
metadata = mbngs._getMetadata({}, response['release'], discid)
|
||||
|
||||
self.assertEquals(metadata.artist, u'Various Artists')
|
||||
self.assertEquals(metadata.release, u'2001-10-15')
|
||||
self.assertEquals(metadata.mbidArtist,
|
||||
u'89ad4ac3-39f7-470e-963a-56509c546377')
|
||||
|
||||
self.assertEquals(len(metadata.tracks), 18)
|
||||
|
||||
track16 = metadata.tracks[15]
|
||||
|
||||
self.assertEquals(track16.artist, 'Tom Jones & Stereophonics')
|
||||
self.assertEquals(track16.mbidArtist,
|
||||
u'57c6f649-6cde-48a7-8114-2a200247601a'
|
||||
';0bfba3d3-6a04-4779-bb0a-df07df5b0558'
|
||||
)
|
||||
self.assertEquals(track16.sortName,
|
||||
u'Jones, Tom & Stereophonics')
|
||||
|
||||
def testBalladOfTheBrokenSeas(self):
|
||||
# various artists disc
|
||||
path = os.path.join(os.path.dirname(__file__),
|
||||
'morituri.release.e32ae79a-336e-4d33-945c-8c5e8206dbd3.json')
|
||||
handle = open(path, "rb")
|
||||
response = json.loads(handle.read())
|
||||
handle.close()
|
||||
discid = "xAq8L4ELMW14.6wI6tt7QAcxiDI-"
|
||||
|
||||
metadata = mbngs._getMetadata({}, response['release'], discid)
|
||||
|
||||
self.assertEquals(metadata.artist, u'Isobel Campbell & Mark Lanegan')
|
||||
self.assertEquals(metadata.sortName,
|
||||
u'Campbell, Isobel & Lanegan, Mark')
|
||||
self.assertEquals(metadata.release, u'2006-01-30')
|
||||
self.assertEquals(metadata.mbidArtist,
|
||||
u'd51f3a15-12a2-41a0-acfa-33b5eae71164;'
|
||||
'a9126556-f555-4920-9617-6e013f8228a7')
|
||||
|
||||
self.assertEquals(len(metadata.tracks), 12)
|
||||
|
||||
track12 = metadata.tracks[11]
|
||||
|
||||
self.assertEquals(track12.artist, u'Isobel Campbell & Mark Lanegan')
|
||||
self.assertEquals(track12.sortName,
|
||||
u'Campbell, Isobel'
|
||||
' & Lanegan, Mark'
|
||||
)
|
||||
self.assertEquals(track12.mbidArtist,
|
||||
u'd51f3a15-12a2-41a0-acfa-33b5eae71164;'
|
||||
'a9126556-f555-4920-9617-6e013f8228a7')
|
||||
|
||||
def testMalaInCuba(self):
|
||||
# single artist disc, but with multiple artists tracks
|
||||
# see https://github.com/thomasvs/morituri/issues/19
|
||||
path = os.path.join(os.path.dirname(__file__),
|
||||
'morituri.release.61c6fd9b-18f8-4a45-963a-ba3c5d990cae.json')
|
||||
handle = open(path, "rb")
|
||||
response = json.loads(handle.read())
|
||||
handle.close()
|
||||
discid = "u0aKVpO.59JBy6eQRX2vYcoqQZ0-"
|
||||
|
||||
metadata = mbngs._getMetadata({}, response['release'], discid)
|
||||
|
||||
self.assertEquals(metadata.artist, u'Mala')
|
||||
self.assertEquals(metadata.sortName, u'Mala')
|
||||
self.assertEquals(metadata.release, u'2012-09-17')
|
||||
self.assertEquals(metadata.mbidArtist,
|
||||
u'09f221eb-c97e-4da5-ac22-d7ab7c555bbb')
|
||||
|
||||
self.assertEquals(len(metadata.tracks), 14)
|
||||
|
||||
track6 = metadata.tracks[5]
|
||||
|
||||
self.assertEquals(track6.artist, u'Mala feat. Dreiser & Sexto Sentido')
|
||||
self.assertEquals(track6.sortName,
|
||||
u'Mala feat. Dreiser & Sexto Sentido')
|
||||
self.assertEquals(track6.mbidArtist,
|
||||
u'09f221eb-c97e-4da5-ac22-d7ab7c555bbb'
|
||||
';ec07a209-55ff-4084-bc41-9d4d1764e075'
|
||||
';f626b92e-07b1-4a19-ad13-c09d690db66c'
|
||||
)
|
||||
|
||||
|
||||
30
whipper/test/test_common_path.py
Normal file
30
whipper/test/test_common_path.py
Normal file
@@ -0,0 +1,30 @@
|
||||
# -*- Mode: Python; test-case-name: whipper.test.test_common_path -*-
|
||||
# vi:si:et:sw=4:sts=4:ts=4
|
||||
|
||||
from whipper.common import path
|
||||
|
||||
from whipper.test import common
|
||||
|
||||
|
||||
class FilterTestCase(common.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self._filter = path.PathFilter(special=True)
|
||||
|
||||
def testSlash(self):
|
||||
part = u'A Charm/A Blade'
|
||||
self.assertEquals(self._filter.filter(part), u'A Charm-A Blade')
|
||||
|
||||
def testFat(self):
|
||||
part = u'A Word: F**k you?'
|
||||
self.assertEquals(self._filter.filter(part), u'A Word - F__k you_')
|
||||
|
||||
def testSpecial(self):
|
||||
part = u'<<< $&*!\' "()`{}[]spaceship>>>'
|
||||
self.assertEquals(self._filter.filter(part),
|
||||
u'___ _____ ________spaceship___')
|
||||
|
||||
def testGreatest(self):
|
||||
part = u'Greatest Ever! Soul: The Definitive Collection'
|
||||
self.assertEquals(self._filter.filter(part),
|
||||
u'Greatest Ever_ Soul - The Definitive Collection')
|
||||
118
whipper/test/test_common_program.py
Normal file
118
whipper/test/test_common_program.py
Normal file
@@ -0,0 +1,118 @@
|
||||
# -*- Mode: Python; test-case-name: whipper.test.test_common_program -*-
|
||||
# vi:si:et:sw=4:sts=4:ts=4
|
||||
|
||||
|
||||
import os
|
||||
import pickle
|
||||
|
||||
import unittest
|
||||
|
||||
from whipper.result import result
|
||||
from whipper.common import program, accurip, mbngs, config
|
||||
from whipper.command.cd import DEFAULT_DISC_TEMPLATE
|
||||
|
||||
|
||||
class TrackImageVerifyTestCase(unittest.TestCase):
|
||||
# example taken from a rip of Luke Haines Is Dead, disc 1
|
||||
# AccurateRip database has 0 confidence for 1st track
|
||||
# Rip had a wrong result for track 9
|
||||
|
||||
def testVerify(self):
|
||||
path = os.path.join(os.path.dirname(__file__),
|
||||
'dBAR-020-002e5023-029d8e49-040eaa14.bin')
|
||||
data = open(path, "rb").read()
|
||||
responses = accurip.getAccurateRipResponses(data)
|
||||
|
||||
# these crc's were calculated from an actual rip
|
||||
checksums = [1644890007, 2945205445, 3983436658, 1528082495,
|
||||
1203704270, 1163423644, 3649097244, 100524219, 1583356174, 373652058,
|
||||
1842579359, 2850056507, 1329730252, 2526965856, 2525886806, 209743350,
|
||||
3184062337, 2099956663, 2943874164, 2321637196]
|
||||
|
||||
prog = program.Program(config.Config())
|
||||
prog.result = result.RipResult()
|
||||
# fill it with empty trackresults
|
||||
for i, c in enumerate(checksums):
|
||||
r = result.TrackResult()
|
||||
r.number = i + 1
|
||||
prog.result.tracks.append(r)
|
||||
|
||||
prog._verifyImageWithChecksums(responses, checksums)
|
||||
|
||||
# now check if the results were filled in properly
|
||||
tr = prog.result.getTrackResult(1)
|
||||
self.assertEquals(tr.accurip, False)
|
||||
self.assertEquals(tr.ARDBMaxConfidence, 0)
|
||||
self.assertEquals(tr.ARDBCRC, 0)
|
||||
self.assertEquals(tr.ARDBCRC, 0)
|
||||
|
||||
tr = prog.result.getTrackResult(2)
|
||||
self.assertEquals(tr.accurip, True)
|
||||
self.assertEquals(tr.ARDBMaxConfidence, 2)
|
||||
self.assertEquals(tr.ARDBCRC, checksums[2 - 1])
|
||||
|
||||
tr = prog.result.getTrackResult(10)
|
||||
self.assertEquals(tr.accurip, False)
|
||||
self.assertEquals(tr.ARDBMaxConfidence, 2)
|
||||
# we know track 10 was ripped wrong
|
||||
self.assertNotEquals(tr.ARDBCRC, checksums[10 - 1])
|
||||
|
||||
res = prog.getAccurateRipResults()
|
||||
self.assertEquals(res[1 - 1],
|
||||
"Track 1: rip NOT accurate (not found) "
|
||||
"[620b0797], DB [notfound]")
|
||||
self.assertEquals(res[2 - 1],
|
||||
"Track 2: rip accurate (max confidence 2) "
|
||||
"[af8c44c5], DB [af8c44c5]")
|
||||
self.assertEquals(res[10 - 1],
|
||||
"Track 10: rip NOT accurate (max confidence 2) "
|
||||
"[16457a5a], DB [eb6e55b4]")
|
||||
|
||||
|
||||
class HTOATestCase(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
path = os.path.join(os.path.dirname(__file__),
|
||||
'silentalarm.result.pickle')
|
||||
self._tracks = pickle.load(open(path, 'rb'))
|
||||
|
||||
def testGetAccurateRipResults(self):
|
||||
prog = program.Program(config.Config())
|
||||
prog.result = result.RipResult()
|
||||
prog.result.tracks = self._tracks
|
||||
|
||||
prog.getAccurateRipResults()
|
||||
|
||||
|
||||
class PathTestCase(unittest.TestCase):
|
||||
|
||||
def testStandardTemplateEmpty(self):
|
||||
prog = program.Program(config.Config())
|
||||
|
||||
path = prog.getPath(u'/tmp', DEFAULT_DISC_TEMPLATE,
|
||||
'mbdiscid', 0)
|
||||
self.assertEquals(path,
|
||||
u'/tmp/unknown/Unknown Artist - mbdiscid/Unknown Artist - mbdiscid')
|
||||
|
||||
def testStandardTemplateFilled(self):
|
||||
prog = program.Program(config.Config())
|
||||
md = mbngs.DiscMetadata()
|
||||
md.artist = md.sortName = 'Jeff Buckley'
|
||||
md.title = 'Grace'
|
||||
prog.metadata = md
|
||||
|
||||
path = prog.getPath(u'/tmp', DEFAULT_DISC_TEMPLATE,
|
||||
'mbdiscid', 0)
|
||||
self.assertEquals(path,
|
||||
u'/tmp/unknown/Jeff Buckley - Grace/Jeff Buckley - Grace')
|
||||
|
||||
def testIssue66TemplateFilled(self):
|
||||
prog = program.Program(config.Config())
|
||||
md = mbngs.DiscMetadata()
|
||||
md.artist = md.sortName = 'Jeff Buckley'
|
||||
md.title = 'Grace'
|
||||
prog.metadata = md
|
||||
|
||||
path = prog.getPath(u'/tmp', u'%A/%d', 'mbdiscid', 0)
|
||||
self.assertEquals(path,
|
||||
u'/tmp/Jeff Buckley/Grace')
|
||||
154
whipper/test/test_common_renamer.py
Normal file
154
whipper/test/test_common_renamer.py
Normal file
@@ -0,0 +1,154 @@
|
||||
# -*- Mode: Python; test-case-name: whipper.test.test_image_cue -*-
|
||||
# vi:si:et:sw=4:sts=4:ts=4
|
||||
|
||||
import os
|
||||
import tempfile
|
||||
|
||||
import unittest
|
||||
|
||||
from whipper.common import renamer
|
||||
|
||||
|
||||
class RenameInFileTestcase(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
(fd, self._path) = tempfile.mkstemp(suffix='.morituri.renamer.infile')
|
||||
os.write(fd, 'This is a test\nThis is another\n')
|
||||
os.close(fd)
|
||||
|
||||
def testVerify(self):
|
||||
o = renamer.RenameInFile(self._path, 'is is a', 'at was some')
|
||||
self.assertEquals(o.verify(), None)
|
||||
os.unlink(self._path)
|
||||
self.assertRaises(AssertionError, o.verify)
|
||||
|
||||
def testDo(self):
|
||||
o = renamer.RenameInFile(self._path, 'is is a', 'at was some')
|
||||
o.do()
|
||||
output = open(self._path).read()
|
||||
self.assertEquals(output, 'That was some test\nThat was somenother\n')
|
||||
os.unlink(self._path)
|
||||
|
||||
def testSerialize(self):
|
||||
o = renamer.RenameInFile(self._path, 'is is a', 'at was some')
|
||||
data = o.serialize()
|
||||
o2 = renamer.RenameInFile.deserialize(data)
|
||||
o2.do()
|
||||
output = open(self._path).read()
|
||||
self.assertEquals(output, 'That was some test\nThat was somenother\n')
|
||||
os.unlink(self._path)
|
||||
|
||||
|
||||
class RenameFileTestcase(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
(fd, self._source) = tempfile.mkstemp(suffix='.morituri.renamer.file')
|
||||
os.write(fd, 'This is a test\nThis is another\n')
|
||||
os.close(fd)
|
||||
(fd, self._destination) = tempfile.mkstemp(
|
||||
suffix='.morituri.renamer.file')
|
||||
os.close(fd)
|
||||
os.unlink(self._destination)
|
||||
self._operation = renamer.RenameFile(self._source, self._destination)
|
||||
|
||||
def testVerify(self):
|
||||
self.assertEquals(self._operation.verify(), None)
|
||||
|
||||
handle = open(self._destination, 'w')
|
||||
handle.close()
|
||||
self.assertRaises(AssertionError, self._operation.verify)
|
||||
|
||||
os.unlink(self._destination)
|
||||
self.assertEquals(self._operation.verify(), None)
|
||||
|
||||
os.unlink(self._source)
|
||||
self.assertRaises(AssertionError, self._operation.verify)
|
||||
|
||||
def testDo(self):
|
||||
self._operation.do()
|
||||
output = open(self._destination).read()
|
||||
self.assertEquals(output, 'This is a test\nThis is another\n')
|
||||
os.unlink(self._destination)
|
||||
|
||||
def testSerialize(self):
|
||||
data = self._operation.serialize()
|
||||
o = renamer.RenameFile.deserialize(data)
|
||||
o.do()
|
||||
output = open(self._destination).read()
|
||||
self.assertEquals(output, 'This is a test\nThis is another\n')
|
||||
os.unlink(self._destination)
|
||||
|
||||
|
||||
class OperatorTestCase(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self._statePath = tempfile.mkdtemp(suffix='.morituri.renamer.operator')
|
||||
self._operator = renamer.Operator(self._statePath, 'test')
|
||||
|
||||
(fd, self._source) = tempfile.mkstemp(
|
||||
suffix='.morituri.renamer.operator')
|
||||
os.write(fd, 'This is a test\nThis is another\n')
|
||||
os.close(fd)
|
||||
(fd, self._destination) = tempfile.mkstemp(
|
||||
suffix='.morituri.renamer.operator')
|
||||
os.close(fd)
|
||||
os.unlink(self._destination)
|
||||
self._operator.addOperation(
|
||||
renamer.RenameInFile(self._source, 'is is a', 'at was some'))
|
||||
self._operator.addOperation(
|
||||
renamer.RenameFile(self._source, self._destination))
|
||||
|
||||
def tearDown(self):
|
||||
os.system('rm -rf %s' % self._statePath)
|
||||
|
||||
def testLoadNoneDone(self):
|
||||
self._operator.save()
|
||||
|
||||
o = renamer.Operator(self._statePath, 'test')
|
||||
o.load()
|
||||
|
||||
self.assertEquals(o._todo, self._operator._todo)
|
||||
self.assertEquals(o._done, [])
|
||||
os.unlink(self._source)
|
||||
|
||||
def testLoadOneDone(self):
|
||||
self.assertEquals(len(self._operator._done), 0)
|
||||
self._operator.save()
|
||||
self._operator.next()
|
||||
self.assertEquals(len(self._operator._done), 1)
|
||||
|
||||
o = renamer.Operator(self._statePath, 'test')
|
||||
o.load()
|
||||
|
||||
self.assertEquals(len(o._done), 1)
|
||||
self.assertEquals(o._todo, self._operator._todo)
|
||||
self.assertEquals(o._done, self._operator._done)
|
||||
|
||||
# now continue
|
||||
o.next()
|
||||
self.assertEquals(len(o._done), 2)
|
||||
os.unlink(self._destination)
|
||||
|
||||
def testLoadOneInterrupted(self):
|
||||
self.assertEquals(len(self._operator._done), 0)
|
||||
self._operator.save()
|
||||
|
||||
# cheat by doing a task without saving
|
||||
self._operator._todo[0].do()
|
||||
|
||||
self.assertEquals(len(self._operator._done), 0)
|
||||
|
||||
o = renamer.Operator(self._statePath, 'test')
|
||||
o.load()
|
||||
|
||||
self.assertEquals(len(o._done), 0)
|
||||
self.assertEquals(o._todo, self._operator._todo)
|
||||
self.assertEquals(o._done, self._operator._done)
|
||||
|
||||
# now continue, resuming
|
||||
o.next()
|
||||
self.assertEquals(len(o._done), 1)
|
||||
o.next()
|
||||
self.assertEquals(len(o._done), 2)
|
||||
|
||||
os.unlink(self._destination)
|
||||
89
whipper/test/test_image_cue.py
Normal file
89
whipper/test/test_image_cue.py
Normal file
@@ -0,0 +1,89 @@
|
||||
# -*- Mode: Python; test-case-name: whipper.test.test_image_cue -*-
|
||||
# vi:si:et:sw=4:sts=4:ts=4
|
||||
|
||||
import os
|
||||
import tempfile
|
||||
import unittest
|
||||
|
||||
import whipper
|
||||
|
||||
from whipper.image import table, cue
|
||||
|
||||
from whipper.test import common
|
||||
|
||||
class KingsSingleTestCase(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.cue = cue.CueFile(os.path.join(os.path.dirname(__file__),
|
||||
u'kings-single.cue'))
|
||||
self.cue.parse()
|
||||
self.assertEquals(len(self.cue.table.tracks), 11)
|
||||
|
||||
def testGetTrackLength(self):
|
||||
t = self.cue.table.tracks[0]
|
||||
self.assertEquals(self.cue.getTrackLength(t), 17811)
|
||||
# last track has unknown length
|
||||
t = self.cue.table.tracks[-1]
|
||||
self.assertEquals(self.cue.getTrackLength(t), -1)
|
||||
|
||||
|
||||
class KingsSeparateTestCase(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.cue = cue.CueFile(os.path.join(os.path.dirname(__file__),
|
||||
u'kings-separate.cue'))
|
||||
self.cue.parse()
|
||||
self.assertEquals(len(self.cue.table.tracks), 11)
|
||||
|
||||
def testGetTrackLength(self):
|
||||
# all tracks have unknown length
|
||||
t = self.cue.table.tracks[0]
|
||||
self.assertEquals(self.cue.getTrackLength(t), -1)
|
||||
t = self.cue.table.tracks[-1]
|
||||
self.assertEquals(self.cue.getTrackLength(t), -1)
|
||||
|
||||
|
||||
class KanyeMixedTestCase(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.cue = cue.CueFile(os.path.join(os.path.dirname(__file__),
|
||||
u'kanye.cue'))
|
||||
self.cue.parse()
|
||||
self.assertEquals(len(self.cue.table.tracks), 13)
|
||||
|
||||
def testGetTrackLength(self):
|
||||
t = self.cue.table.tracks[0]
|
||||
self.assertEquals(self.cue.getTrackLength(t), -1)
|
||||
|
||||
|
||||
class WriteCueFileTestCase(unittest.TestCase):
|
||||
|
||||
def testWrite(self):
|
||||
fd, path = tempfile.mkstemp(suffix=u'.morituri.test.cue')
|
||||
os.close(fd)
|
||||
|
||||
it = table.Table()
|
||||
|
||||
t = table.Track(1)
|
||||
t.index(1, absolute=0, path=u'track01.wav', relative=0, counter=1)
|
||||
it.tracks.append(t)
|
||||
|
||||
t = table.Track(2)
|
||||
t.index(0, absolute=1000, path=u'track01.wav',
|
||||
relative=1000, counter=1)
|
||||
t.index(1, absolute=2000, path=u'track02.wav', relative=0, counter=2)
|
||||
it.tracks.append(t)
|
||||
it.absolutize()
|
||||
it.leadout = 3000
|
||||
|
||||
common.diffStrings(u"""REM DISCID 0C002802
|
||||
REM COMMENT "whipper %s"
|
||||
FILE "track01.wav" WAVE
|
||||
TRACK 01 AUDIO
|
||||
INDEX 01 00:00:00
|
||||
TRACK 02 AUDIO
|
||||
INDEX 00 00:13:25
|
||||
FILE "track02.wav" WAVE
|
||||
INDEX 01 00:00:00
|
||||
""" % whipper.__version__, it.cue())
|
||||
os.unlink(path)
|
||||
117
whipper/test/test_image_table.py
Normal file
117
whipper/test/test_image_table.py
Normal file
@@ -0,0 +1,117 @@
|
||||
# -*- Mode: Python; test-case-name: whipper.test.test_image_table -*-
|
||||
# vi:si:et:sw=4:sts=4:ts=4
|
||||
|
||||
from whipper.image import table
|
||||
|
||||
from whipper.test import common as tcommon
|
||||
|
||||
|
||||
def h(i):
|
||||
return "0x%08x" % i
|
||||
|
||||
|
||||
class TrackTestCase(tcommon.TestCase):
|
||||
|
||||
def testRepr(self):
|
||||
track = table.Track(1)
|
||||
self.assertEquals(repr(track), "<Track 01>")
|
||||
|
||||
track.index(1, 100)
|
||||
self.failUnless(repr(track.indexes[1]).startswith('<Index 01 '))
|
||||
|
||||
|
||||
class LadyhawkeTestCase(tcommon.TestCase):
|
||||
# Ladyhawke - Ladyhawke - 0602517818866
|
||||
# contains 12 audio tracks and one data track
|
||||
# CDDB has been verified against freedb:
|
||||
# http://www.freedb.org/freedb/misc/c60af50d
|
||||
# http://www.freedb.org/freedb/jazz/c60af50d
|
||||
# AccurateRip URL has been verified against EAC's, using wireshark
|
||||
|
||||
def setUp(self):
|
||||
self.table = table.Table()
|
||||
|
||||
for i in range(12):
|
||||
self.table.tracks.append(table.Track(i + 1, audio=True))
|
||||
self.table.tracks.append(table.Track(13, audio=False))
|
||||
|
||||
offsets = [0, 15537, 31691, 50866, 66466, 81202, 99409,
|
||||
115920, 133093, 149847, 161560, 177682, 207106]
|
||||
t = self.table.tracks
|
||||
for i, offset in enumerate(offsets):
|
||||
t[i].index(1, absolute=offset)
|
||||
|
||||
self.failIf(self.table.hasTOC())
|
||||
|
||||
self.table.leadout = 210385
|
||||
|
||||
self.failUnless(self.table.hasTOC())
|
||||
self.assertEquals(self.table.tracks[0].getPregap(), 0)
|
||||
|
||||
def testCDDB(self):
|
||||
self.assertEquals(self.table.getCDDBDiscId(), "c60af50d")
|
||||
|
||||
def testMusicBrainz(self):
|
||||
# output from mb-submit-disc:
|
||||
# https://musicbrainz.org/cdtoc/attach?toc=1+12+195856+150+
|
||||
# 15687+31841+51016+66616+81352+99559+116070+133243+149997+161710+
|
||||
# 177832&tracks=12&id=KnpGsLhvH.lPrNc1PBL21lb9Bg4-
|
||||
# however, not (yet) in musicbrainz database
|
||||
|
||||
self.assertEquals(self.table.getMusicBrainzDiscId(),
|
||||
"KnpGsLhvH.lPrNc1PBL21lb9Bg4-")
|
||||
|
||||
def testAccurateRip(self):
|
||||
self.assertEquals(self.table.getAccurateRipIds(), (
|
||||
"0013bd5a", "00b8d489"))
|
||||
self.assertEquals(self.table.getAccurateRipURL(),
|
||||
"http://www.accuraterip.com/accuraterip/a/5/d/"
|
||||
"dBAR-012-0013bd5a-00b8d489-c60af50d.bin")
|
||||
|
||||
def testDuration(self):
|
||||
self.assertEquals(self.table.duration(), 2761413)
|
||||
|
||||
|
||||
class MusicBrainzTestCase(tcommon.TestCase):
|
||||
# example taken from https://musicbrainz.org/doc/Disc_ID_Calculation
|
||||
# disc is Ettella Diamant
|
||||
|
||||
def setUp(self):
|
||||
self.table = table.Table()
|
||||
|
||||
for i in range(6):
|
||||
self.table.tracks.append(table.Track(i + 1, audio=True))
|
||||
|
||||
offsets = [0, 15213, 32164, 46442, 63264, 80339]
|
||||
t = self.table.tracks
|
||||
for i, offset in enumerate(offsets):
|
||||
t[i].index(1, absolute=offset)
|
||||
|
||||
self.failIf(self.table.hasTOC())
|
||||
|
||||
self.table.leadout = 95312
|
||||
|
||||
self.failUnless(self.table.hasTOC())
|
||||
|
||||
def testMusicBrainz(self):
|
||||
self.assertEquals(self.table.getMusicBrainzDiscId(),
|
||||
'49HHV7Eb8UKF3aQiNmu1GR8vKTY-')
|
||||
|
||||
|
||||
class PregapTestCase(tcommon.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.table = table.Table()
|
||||
|
||||
for i in range(2):
|
||||
self.table.tracks.append(table.Track(i + 1, audio=True))
|
||||
|
||||
offsets = [0, 15537]
|
||||
t = self.table.tracks
|
||||
for i, offset in enumerate(offsets):
|
||||
t[i].index(1, absolute=offset)
|
||||
t[1].index(0, offsets[1] - 200)
|
||||
|
||||
def testPreGap(self):
|
||||
self.assertEquals(self.table.tracks[0].getPregap(), 0)
|
||||
self.assertEquals(self.table.tracks[1].getPregap(), 200)
|
||||
445
whipper/test/test_image_toc.py
Normal file
445
whipper/test/test_image_toc.py
Normal file
@@ -0,0 +1,445 @@
|
||||
# -*- Mode: Python; test-case-name: whipper.test.test_image_toc -*-
|
||||
# vi:si:et:sw=4:sts=4:ts=4
|
||||
|
||||
import os
|
||||
import copy
|
||||
import shutil
|
||||
import tempfile
|
||||
|
||||
from whipper.image import toc
|
||||
|
||||
from whipper.test import common
|
||||
|
||||
|
||||
class CureTestCase(common.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.path = os.path.join(os.path.dirname(__file__),
|
||||
u'cure.toc')
|
||||
self.toc = toc.TocFile(self.path)
|
||||
self.toc.parse()
|
||||
self.assertEquals(len(self.toc.table.tracks), 13)
|
||||
|
||||
def testGetTrackLength(self):
|
||||
t = self.toc.table.tracks[0]
|
||||
# first track has known length because the .toc is a single file
|
||||
# its length is all of track 1 from .toc, plus the INDEX 00 length
|
||||
# of track 2
|
||||
self.assertEquals(self.toc.getTrackLength(t),
|
||||
(((6 * 60) + 16) * 75 + 45) + ((1 * 75) + 4))
|
||||
# last track has unknown length
|
||||
t = self.toc.table.tracks[-1]
|
||||
self.assertEquals(self.toc.getTrackLength(t), -1)
|
||||
|
||||
def testIndexes(self):
|
||||
# track 2, index 0 is at 06:16:45 or 28245
|
||||
# track 2, index 1 is at 06:17:49 or 28324
|
||||
# FIXME: cdrdao seems to get length of FILE 1 frame too many,
|
||||
# and START value one frame less
|
||||
t = self.toc.table.tracks[1]
|
||||
self.assertEquals(t.getIndex(0).relative, 28245)
|
||||
self.assertEquals(t.getIndex(1).relative, 28324)
|
||||
|
||||
def _getIndex(self, t, i):
|
||||
track = self.toc.table.tracks[t - 1]
|
||||
return track.getIndex(i)
|
||||
|
||||
def _assertAbsolute(self, t, i, value):
|
||||
index = self._getIndex(t, i)
|
||||
self.assertEquals(index.absolute, value)
|
||||
|
||||
def _assertPath(self, t, i, value):
|
||||
index = self._getIndex(t, i)
|
||||
self.assertEquals(index.path, value)
|
||||
|
||||
def _assertRelative(self, t, i, value):
|
||||
index = self._getIndex(t, i)
|
||||
self.assertEquals(index.relative, value)
|
||||
|
||||
def testSetFile(self):
|
||||
self._assertAbsolute(1, 1, 0)
|
||||
self._assertAbsolute(2, 0, 28245)
|
||||
self._assertAbsolute(2, 1, 28324)
|
||||
self._assertPath(1, 1, "data.wav")
|
||||
|
||||
# self.toc.table.absolutize()
|
||||
self.toc.table.clearFiles()
|
||||
|
||||
self._assertAbsolute(1, 1, 0)
|
||||
self._assertAbsolute(2, 0, 28245)
|
||||
self._assertAbsolute(2, 1, 28324)
|
||||
self._assertAbsolute(3, 1, 46110)
|
||||
self._assertAbsolute(4, 1, 66767)
|
||||
self._assertPath(1, 1, None)
|
||||
self._assertRelative(1, 1, None)
|
||||
|
||||
# adding the first track file with length 28324 to the table should
|
||||
# relativize from absolute 0 to absolute 28323, right before track 2,
|
||||
# index 1
|
||||
self.toc.table.setFile(1, 1, 'track01.wav', 28324)
|
||||
self._assertPath(1, 1, 'track01.wav')
|
||||
self._assertRelative(1, 1, 0)
|
||||
self._assertPath(2, 0, 'track01.wav')
|
||||
self._assertRelative(2, 0, 28245)
|
||||
|
||||
self._assertPath(2, 1, None)
|
||||
self._assertRelative(2, 1, None)
|
||||
|
||||
def testConvertCue(self):
|
||||
# self.toc.table.absolutize()
|
||||
cue = self.toc.table.cue()
|
||||
ref = self.readCue('cure.cue')
|
||||
common.diffStrings(ref, cue)
|
||||
|
||||
# we verify it because it has failed in readdisc in the past
|
||||
self.assertEquals(self.toc.table.getAccurateRipURL(),
|
||||
'http://www.accuraterip.com/accuraterip/'
|
||||
'3/c/4/dBAR-013-0019d4c3-00fe8924-b90c650d.bin')
|
||||
|
||||
def testGetRealPath(self):
|
||||
self.assertRaises(KeyError, self.toc.getRealPath, u'track01.wav')
|
||||
(fd, path) = tempfile.mkstemp(suffix=u'.morituri.test.wav')
|
||||
self.assertEquals(self.toc.getRealPath(path), path)
|
||||
|
||||
winpath = path.replace('/', '\\')
|
||||
self.assertEquals(self.toc.getRealPath(winpath), path)
|
||||
os.close(fd)
|
||||
os.unlink(path)
|
||||
|
||||
# Bloc Party - Silent Alarm has a Hidden Track One Audio
|
||||
|
||||
|
||||
class BlocTestCase(common.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.path = os.path.join(os.path.dirname(__file__),
|
||||
u'bloc.toc')
|
||||
self.toc = toc.TocFile(self.path)
|
||||
self.toc.parse()
|
||||
self.assertEquals(len(self.toc.table.tracks), 13)
|
||||
|
||||
def testGetTrackLength(self):
|
||||
t = self.toc.table.tracks[0]
|
||||
# first track has known length because the .toc is a single file
|
||||
# the length is from Track 1, Index 1 to Track 2, Index 1, so
|
||||
# does not include the htoa
|
||||
self.assertEquals(self.toc.getTrackLength(t), 19649)
|
||||
# last track has unknown length
|
||||
t = self.toc.table.tracks[-1]
|
||||
self.assertEquals(self.toc.getTrackLength(t), -1)
|
||||
|
||||
def testIndexes(self):
|
||||
track01 = self.toc.table.tracks[0]
|
||||
index00 = track01.getIndex(0)
|
||||
self.assertEquals(index00.absolute, 0)
|
||||
self.assertEquals(index00.relative, 0)
|
||||
self.assertEquals(index00.counter, 0)
|
||||
|
||||
index01 = track01.getIndex(1)
|
||||
self.assertEquals(index01.absolute, 15220)
|
||||
self.assertEquals(index01.relative, 0)
|
||||
self.assertEquals(index01.counter, 1)
|
||||
|
||||
track05 = self.toc.table.tracks[4]
|
||||
|
||||
index00 = track05.getIndex(0)
|
||||
self.assertEquals(index00.absolute, 84070)
|
||||
self.assertEquals(index00.relative, 68850)
|
||||
self.assertEquals(index00.counter, 1)
|
||||
|
||||
index01 = track05.getIndex(1)
|
||||
self.assertEquals(index01.absolute, 84142)
|
||||
self.assertEquals(index01.relative, 68922)
|
||||
self.assertEquals(index01.counter, 1)
|
||||
|
||||
# This disc has a pre-gap, so is a good test for .CUE writing
|
||||
|
||||
def testConvertCue(self):
|
||||
#self.toc.table.absolutize()
|
||||
self.failUnless(self.toc.table.hasTOC())
|
||||
cue = self.toc.table.cue()
|
||||
ref = self.readCue('bloc.cue')
|
||||
common.diffStrings(ref, cue)
|
||||
|
||||
def testCDDBId(self):
|
||||
# self.toc.table.absolutize()
|
||||
# cd-discid output:
|
||||
# ad0be00d 13 15370 35019 51532 69190 84292 96826 112527 132448
|
||||
# 148595 168072 185539 203331 222103 3244
|
||||
|
||||
self.assertEquals(self.toc.table.getCDDBDiscId(), 'ad0be00d')
|
||||
|
||||
def testAccurateRip(self):
|
||||
# we verify it because it has failed in readdisc in the past
|
||||
# self.toc.table.absolutize()
|
||||
self.assertEquals(self.toc.table.getAccurateRipURL(),
|
||||
'http://www.accuraterip.com/accuraterip/'
|
||||
'e/d/2/dBAR-013-001af2de-0105994e-ad0be00d.bin')
|
||||
|
||||
# The Breeders - Mountain Battles has CDText
|
||||
|
||||
|
||||
class BreedersTestCase(common.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.path = os.path.join(os.path.dirname(__file__),
|
||||
u'breeders.toc')
|
||||
self.toc = toc.TocFile(self.path)
|
||||
self.toc.parse()
|
||||
self.assertEquals(len(self.toc.table.tracks), 13)
|
||||
|
||||
def testCDText(self):
|
||||
cdt = self.toc.table.cdtext
|
||||
self.assertEquals(cdt['PERFORMER'], 'THE BREEDERS')
|
||||
self.assertEquals(cdt['TITLE'], 'MOUNTAIN BATTLES')
|
||||
|
||||
t = self.toc.table.tracks[0]
|
||||
cdt = t.cdtext
|
||||
self.assertRaises(AttributeError, getattr, cdt, 'PERFORMER')
|
||||
self.assertEquals(cdt['TITLE'], 'OVERGLAZED')
|
||||
|
||||
def testConvertCue(self):
|
||||
# self.toc.table.absolutize()
|
||||
self.failUnless(self.toc.table.hasTOC())
|
||||
cue = self.toc.table.cue()
|
||||
ref = self.readCue('breeders.cue')
|
||||
self.assertEquals(cue, ref)
|
||||
|
||||
# Ladyhawke has a data track
|
||||
|
||||
|
||||
class LadyhawkeTestCase(common.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.path = os.path.join(os.path.dirname(__file__),
|
||||
u'ladyhawke.toc')
|
||||
self.toc = toc.TocFile(self.path)
|
||||
self.toc.parse()
|
||||
self.assertEquals(len(self.toc.table.tracks), 13)
|
||||
#import code; code.interact(local=locals())
|
||||
self.failIf(self.toc.table.tracks[-1].audio)
|
||||
|
||||
def testCDDBId(self):
|
||||
#self.toc.table.absolutize()
|
||||
self.assertEquals(self.toc.table.getCDDBDiscId(), 'c60af50d')
|
||||
# output from cd-discid:
|
||||
# c60af50d 13 150 15687 31841 51016 66616 81352 99559 116070 133243
|
||||
# 149997 161710 177832 207256 2807
|
||||
|
||||
def testMusicBrainz(self):
|
||||
self.assertEquals(self.toc.table.getMusicBrainzDiscId(),
|
||||
"KnpGsLhvH.lPrNc1PBL21lb9Bg4-")
|
||||
self.assertEquals(self.toc.table.getMusicBrainzSubmitURL(),
|
||||
"https://musicbrainz.org/cdtoc/attach?toc="
|
||||
"1+12+195856+150+15687+31841+51016+66616+81352+99559+"
|
||||
"116070+133243+149997+161710+177832&"
|
||||
"tracks=12&id=KnpGsLhvH.lPrNc1PBL21lb9Bg4-")
|
||||
|
||||
# FIXME: I don't trust this toc, but I can't find the CD anymore
|
||||
|
||||
def testDuration(self):
|
||||
self.assertEquals(self.toc.table.duration(), 2761413)
|
||||
|
||||
def testGetFrameLength(self):
|
||||
self.assertEquals(self.toc.table.getFrameLength(data=True), 210385)
|
||||
|
||||
def testCue(self):
|
||||
self.failUnless(self.toc.table.canCue())
|
||||
data = self.toc.table.cue()
|
||||
lines = data.split("\n")
|
||||
self.assertEquals(lines[0], "REM DISCID C60AF50D")
|
||||
|
||||
|
||||
class CapitalMergeTestCase(common.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.toc1 = toc.TocFile(os.path.join(os.path.dirname(__file__),
|
||||
u'capital.1.toc'))
|
||||
self.toc1.parse()
|
||||
self.assertEquals(len(self.toc1.table.tracks), 11)
|
||||
self.failUnless(self.toc1.table.tracks[-1].audio)
|
||||
|
||||
self.toc2 = toc.TocFile(os.path.join(os.path.dirname(__file__),
|
||||
u'capital.2.toc'))
|
||||
self.toc2.parse()
|
||||
self.assertEquals(len(self.toc2.table.tracks), 1)
|
||||
self.failIf(self.toc2.table.tracks[-1].audio)
|
||||
|
||||
self.table = copy.deepcopy(self.toc1.table)
|
||||
self.table.merge(self.toc2.table)
|
||||
|
||||
def testCDDBId(self):
|
||||
#self.table.absolutize()
|
||||
self.assertEquals(self.table.getCDDBDiscId(), 'b910140c')
|
||||
# output from cd-discid:
|
||||
# b910140c 12 24320 44855 64090 77885 88095 104020 118245 129255 141765
|
||||
# 164487 181780 209250 4440
|
||||
|
||||
def testMusicBrainz(self):
|
||||
# URL to submit: https://musicbrainz.org/cdtoc/attach?toc=1+11+
|
||||
# 197850+24320+44855+64090+77885+88095+104020+118245+129255+141765+
|
||||
# 164487+181780&tracks=11&id=MAj3xXf6QMy7G.BIFOyHyq4MySE-
|
||||
self.assertEquals(self.table.getMusicBrainzDiscId(),
|
||||
"MAj3xXf6QMy7G.BIFOyHyq4MySE-")
|
||||
|
||||
def testDuration(self):
|
||||
# this matches track 11 end sector - track 1 start sector on
|
||||
# musicbrainz
|
||||
# compare to 3rd and 4th value in URL above
|
||||
self.assertEquals(self.table.getFrameLength(), 173530)
|
||||
self.assertEquals(self.table.duration(), 2313733)
|
||||
|
||||
|
||||
class UnicodeTestCase(common.TestCase, common.UnicodeTestMixin):
|
||||
|
||||
def setUp(self):
|
||||
# we copy the normal non-utf8 filename to a utf-8 filename
|
||||
# in this test because builds with LANG=C fail if we include
|
||||
# utf-8 filenames in the dist
|
||||
path = u'Jos\xe9Gonz\xe1lez.toc'
|
||||
self._performer = u'Jos\xe9 Gonz\xe1lez'
|
||||
source = os.path.join(os.path.dirname(__file__), 'jose.toc')
|
||||
(fd, self.dest) = tempfile.mkstemp(suffix=path)
|
||||
os.close(fd)
|
||||
shutil.copy(source, self.dest)
|
||||
self.toc = toc.TocFile(self.dest)
|
||||
self.toc.parse()
|
||||
self.assertEquals(len(self.toc.table.tracks), 10)
|
||||
|
||||
def tearDown(self):
|
||||
os.unlink(self.dest)
|
||||
|
||||
def testGetTrackLength(self):
|
||||
t = self.toc.table.tracks[0]
|
||||
# first track has known length because the .toc is a single file
|
||||
self.assertEquals(self.toc.getTrackLength(t), 12001)
|
||||
# last track has unknown length
|
||||
t = self.toc.table.tracks[-1]
|
||||
self.assertEquals(self.toc.getTrackLength(t), -1)
|
||||
|
||||
def testGetTrackPerformer(self):
|
||||
t = self.toc.table.tracks[0]
|
||||
self.assertEquals(t.cdtext['PERFORMER'], self._performer)
|
||||
|
||||
|
||||
# Interpol - Turn of the Bright Lights has same cddb disc id as
|
||||
# Afghan Whigs - Gentlemen
|
||||
|
||||
|
||||
class TOTBLTestCase(common.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.path = os.path.join(os.path.dirname(__file__),
|
||||
u'totbl.fast.toc')
|
||||
self.toc = toc.TocFile(self.path)
|
||||
self.toc.parse()
|
||||
self.assertEquals(len(self.toc.table.tracks), 11)
|
||||
|
||||
def testCDDBId(self):
|
||||
#self.toc.table.absolutize()
|
||||
self.assertEquals(self.toc.table.getCDDBDiscId(), '810b7b0b')
|
||||
|
||||
|
||||
# The Strokes - Someday has a 1 frame SILENCE marked as such in toc
|
||||
|
||||
|
||||
class StrokesTestCase(common.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.path = os.path.join(os.path.dirname(__file__),
|
||||
u'strokes-someday.toc')
|
||||
self.toc = toc.TocFile(self.path)
|
||||
self.toc.parse()
|
||||
self.assertEquals(len(self.toc.table.tracks), 1)
|
||||
|
||||
def testIndexes(self):
|
||||
t = self.toc.table.tracks[0]
|
||||
i0 = t.getIndex(0)
|
||||
self.assertEquals(i0.relative, 0)
|
||||
self.assertEquals(i0.absolute, 0)
|
||||
self.assertEquals(i0.counter, 0)
|
||||
self.assertEquals(i0.path, None)
|
||||
|
||||
i1 = t.getIndex(1)
|
||||
self.assertEquals(i1.relative, 0)
|
||||
self.assertEquals(i1.absolute, 1)
|
||||
self.assertEquals(i1.counter, 1)
|
||||
self.assertEquals(i1.path, u'data.wav')
|
||||
|
||||
cue = self._filterCue(self.toc.table.cue())
|
||||
ref = self._filterCue(open(os.path.join(os.path.dirname(__file__),
|
||||
'strokes-someday.eac.cue')).read()).decode('utf-8')
|
||||
common.diffStrings(ref, cue)
|
||||
|
||||
def _filterCue(self, output):
|
||||
# helper to be able to compare our generated .cue with the
|
||||
# EAC-extracted one
|
||||
discard = [ 'TITLE', 'PERFORMER', 'FLAGS', 'REM' ]
|
||||
lines = output.split('\n')
|
||||
|
||||
res = []
|
||||
|
||||
for line in lines:
|
||||
found = False
|
||||
for needle in discard:
|
||||
if line.find(needle) > -1:
|
||||
found = True
|
||||
|
||||
if line.find('FILE') > -1:
|
||||
line = 'FILE "data.wav" WAVE'
|
||||
|
||||
if not found:
|
||||
res.append(line)
|
||||
|
||||
return '\n'.join(res)
|
||||
|
||||
|
||||
|
||||
|
||||
# Surfer Rosa has
|
||||
# track 00 consisting of 32 frames of SILENCE
|
||||
# track 11 Vamos with an INDEX 02
|
||||
# compared to an EAC single .cue file, all our offsets are 32 frames off
|
||||
# because the toc uses silence for track 01 index 00 while EAC puts it in
|
||||
# Range.wav
|
||||
|
||||
|
||||
class SurferRosaTestCase(common.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.path = os.path.join(os.path.dirname(__file__),
|
||||
u'surferrosa.toc')
|
||||
self.toc = toc.TocFile(self.path)
|
||||
self.toc.parse()
|
||||
self.assertEquals(len(self.toc.table.tracks), 21)
|
||||
|
||||
def testIndexes(self):
|
||||
# HTOA
|
||||
t = self.toc.table.tracks[0]
|
||||
self.assertEquals(len(t.indexes), 2)
|
||||
|
||||
i0 = t.getIndex(0)
|
||||
self.assertEquals(i0.relative, 0)
|
||||
self.assertEquals(i0.absolute, 0)
|
||||
self.assertEquals(i0.path, None)
|
||||
self.assertEquals(i0.counter, 0)
|
||||
|
||||
i1 = t.getIndex(1)
|
||||
self.assertEquals(i1.relative, 0)
|
||||
self.assertEquals(i1.absolute, 32)
|
||||
self.assertEquals(i1.path, 'data.wav')
|
||||
self.assertEquals(i1.counter, 1)
|
||||
|
||||
# track 11, Vamos
|
||||
|
||||
t = self.toc.table.tracks[10]
|
||||
self.assertEquals(len(t.indexes), 2)
|
||||
|
||||
# 32 frames of silence, and 1483 seconds of data.wav
|
||||
self.assertEquals(t.getIndex(1).relative, 111225)
|
||||
self.assertEquals(t.getIndex(1).absolute, 111257)
|
||||
self.assertEquals(t.getIndex(2).relative, 111225 + 3370)
|
||||
self.assertEquals(t.getIndex(2).absolute, 111257 + 3370)
|
||||
|
||||
# print self.toc.table.cue()
|
||||
|
||||
94
whipper/test/test_program_cdparanoia.py
Normal file
94
whipper/test/test_program_cdparanoia.py
Normal file
@@ -0,0 +1,94 @@
|
||||
# -*- Mode: Python; test-case-name: whipper.test.test_program_cdparanoia -*-
|
||||
# vi:si:et:sw=4:sts=4:ts=4
|
||||
|
||||
import os
|
||||
|
||||
from whipper.extern.task import task
|
||||
|
||||
from whipper.program import cdparanoia
|
||||
|
||||
from whipper.test import common
|
||||
|
||||
|
||||
class ParseTestCase(common.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
# report from Afghan Whigs - Sweet Son Of A Bitch
|
||||
path = os.path.join(os.path.dirname(__file__),
|
||||
'cdparanoia.progress')
|
||||
self._parser = cdparanoia.ProgressParser(start=45990, stop=47719)
|
||||
|
||||
self._handle = open(path)
|
||||
|
||||
def testParse(self):
|
||||
for line in self._handle.readlines():
|
||||
self._parser.parse(line)
|
||||
|
||||
q = '%.01f %%' % (self._parser.getTrackQuality() * 100.0, )
|
||||
self.assertEquals(q, '99.6 %')
|
||||
|
||||
class Parse1FrameTestCase(common.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
path = os.path.join(os.path.dirname(__file__),
|
||||
'cdparanoia.progress.strokes')
|
||||
self._parser = cdparanoia.ProgressParser(start=0, stop=0)
|
||||
|
||||
self._handle = open(path)
|
||||
|
||||
def testParse(self):
|
||||
for line in self._handle.readlines():
|
||||
self._parser.parse(line)
|
||||
|
||||
q = '%.01f %%' % (self._parser.getTrackQuality() * 100.0, )
|
||||
self.assertEquals(q, '100.0 %')
|
||||
|
||||
|
||||
class ErrorTestCase(common.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
# report from a rip with offset -1164 causing scsi errors
|
||||
path = os.path.join(os.path.dirname(__file__),
|
||||
'cdparanoia.progress.error')
|
||||
self._parser = cdparanoia.ProgressParser(start=0, stop=10800)
|
||||
|
||||
self._handle = open(path)
|
||||
|
||||
def testParse(self):
|
||||
for line in self._handle.readlines():
|
||||
self._parser.parse(line)
|
||||
|
||||
q = '%.01f %%' % (self._parser.getTrackQuality() * 100.0, )
|
||||
self.assertEquals(q, '79.6 %')
|
||||
|
||||
|
||||
class VersionTestCase(common.TestCase):
|
||||
|
||||
def testGetVersion(self):
|
||||
v = cdparanoia.getCdParanoiaVersion()
|
||||
self.failUnless(v)
|
||||
# of the form III 10.2
|
||||
# make sure it ends with a digit
|
||||
self.failUnless(int(v[-1]), v)
|
||||
|
||||
|
||||
class AnalyzeFileTask(cdparanoia.AnalyzeTask):
|
||||
|
||||
def __init__(self, path):
|
||||
self.command = ['cat', path]
|
||||
|
||||
def readbytesout(self, bytes):
|
||||
self.readbyteserr(bytes)
|
||||
|
||||
|
||||
class CacheTestCase(common.TestCase):
|
||||
|
||||
def testDefeatsCache(self):
|
||||
self.runner = task.SyncRunner(verbose=False)
|
||||
|
||||
path = os.path.join(os.path.dirname(__file__),
|
||||
'cdparanoia', 'PX-L890SA.cdparanoia-A.stderr')
|
||||
t = AnalyzeFileTask(path)
|
||||
self.runner.run(t)
|
||||
self.failUnless(t.defeatsCache)
|
||||
|
||||
17
whipper/test/test_program_cdrdao.py
Normal file
17
whipper/test/test_program_cdrdao.py
Normal file
@@ -0,0 +1,17 @@
|
||||
# -*- Mode: Python; test-case-name: whipper.test.test_program_cdparanoia -*-
|
||||
# vi:si:et:sw=4:sts=4:ts=4
|
||||
|
||||
import os
|
||||
|
||||
from whipper.program import cdrdao
|
||||
|
||||
from whipper.test import common
|
||||
|
||||
# TODO: Current test architecture makes testing cdrdao difficult. Revisit.
|
||||
|
||||
class VersionTestCase(common.TestCase):
|
||||
def testGetVersion(self):
|
||||
v = cdrdao.getCDRDAOVersion()
|
||||
self.failUnless(v)
|
||||
# make sure it starts with a digit
|
||||
self.failUnless(int(v[0]))
|
||||
13
whipper/test/test_program_sox.py
Normal file
13
whipper/test/test_program_sox.py
Normal file
@@ -0,0 +1,13 @@
|
||||
# -*- Mode: Python; test-case-name: whipper.test.test_program_sox -*-
|
||||
|
||||
import os
|
||||
|
||||
from whipper.program import sox
|
||||
from whipper.test import common
|
||||
|
||||
class PeakLevelTestCase(common.TestCase):
|
||||
def setUp(self):
|
||||
self.path = os.path.join(os.path.dirname(__file__), 'track.flac')
|
||||
|
||||
def testParse(self):
|
||||
self.assertEquals(0.800018, sox.peak_level(self.path))
|
||||
65
whipper/test/test_program_soxi.py
Normal file
65
whipper/test/test_program_soxi.py
Normal file
@@ -0,0 +1,65 @@
|
||||
# -*- Mode: Python; test-case-name: whipper.test.test_program_sox -*-
|
||||
|
||||
import os
|
||||
import tempfile
|
||||
|
||||
from whipper.common import common
|
||||
from whipper.extern.task import task
|
||||
from whipper.program.soxi import AudioLengthTask
|
||||
from whipper.test import common as tcommon
|
||||
|
||||
base_track_file = os.path.join(os.path.dirname(__file__), u'track.flac')
|
||||
base_track_length = 10 * common.SAMPLES_PER_FRAME
|
||||
|
||||
class AudioLengthTestCase(tcommon.TestCase):
|
||||
|
||||
def testLength(self):
|
||||
path = base_track_file
|
||||
t = AudioLengthTask(path)
|
||||
runner = task.SyncRunner()
|
||||
runner.run(t, verbose=False)
|
||||
self.assertEquals(t.length, base_track_length)
|
||||
|
||||
|
||||
class AudioLengthPathTestCase(tcommon.TestCase):
|
||||
|
||||
def _testSuffix(self, suffix):
|
||||
fd, path = tempfile.mkstemp(suffix=suffix)
|
||||
with os.fdopen(fd, "wb") as temptrack:
|
||||
temptrack.write(open(base_track_file, "rb").read())
|
||||
|
||||
t = AudioLengthTask(path)
|
||||
runner = task.SyncRunner()
|
||||
runner.run(t, verbose=False)
|
||||
self.assertEquals(t.length, base_track_length)
|
||||
os.unlink(path)
|
||||
|
||||
class NormalAudioLengthPathTestCase(AudioLengthPathTestCase):
|
||||
|
||||
def testSingleQuote(self):
|
||||
self._testSuffix(u"morituri.test.Guns 'N Roses.flac")
|
||||
|
||||
def testDoubleQuote(self):
|
||||
# This test makes sure we can checksum files with double quote in
|
||||
# their name
|
||||
self._testSuffix(u'morituri.test.12" edit.flac')
|
||||
|
||||
|
||||
class UnicodeAudioLengthPathTestCase(AudioLengthPathTestCase,
|
||||
tcommon.UnicodeTestMixin):
|
||||
|
||||
def testUnicodePath(self):
|
||||
# this test makes sure we can checksum a unicode path
|
||||
self._testSuffix(u'morituri.test.B\xeate Noire.empty.flac')
|
||||
|
||||
class AbsentFileAudioLengthPathTestCase(AudioLengthPathTestCase):
|
||||
def testAbsentFile(self):
|
||||
tempdir = tempfile.mkdtemp()
|
||||
path = os.path.join(tempdir, u"nonexistent.flac")
|
||||
|
||||
t = AudioLengthTask(path)
|
||||
runner = task.SyncRunner()
|
||||
self.assertRaises(task.TaskException, runner.run,
|
||||
t, verbose=False)
|
||||
|
||||
os.rmdir(tempdir)
|
||||
90
whipper/test/totbl.fast.toc
Normal file
90
whipper/test/totbl.fast.toc
Normal file
@@ -0,0 +1,90 @@
|
||||
CD_DA
|
||||
|
||||
|
||||
// Track 1
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
FILE "data.wav" 0 03:56:50
|
||||
|
||||
|
||||
// Track 2
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
FILE "data.wav" 03:56:50 04:11:41
|
||||
|
||||
|
||||
// Track 3
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
FILE "data.wav" 08:08:16 04:19:28
|
||||
|
||||
|
||||
// Track 4
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
FILE "data.wav" 12:27:44 05:00:04
|
||||
|
||||
|
||||
// Track 5
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
FILE "data.wav" 17:27:48 04:28:34
|
||||
|
||||
|
||||
// Track 6
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
FILE "data.wav" 21:56:07 03:05:47
|
||||
|
||||
|
||||
// Track 7
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
FILE "data.wav" 25:01:54 03:47:06
|
||||
|
||||
|
||||
// Track 8
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
FILE "data.wav" 28:48:60 06:28:05
|
||||
|
||||
|
||||
// Track 9
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
FILE "data.wav" 35:16:65 03:35:39
|
||||
|
||||
|
||||
// Track 10
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
FILE "data.wav" 38:52:29 06:07:27
|
||||
|
||||
|
||||
// Track 11
|
||||
TRACK AUDIO
|
||||
NO COPY
|
||||
NO PRE_EMPHASIS
|
||||
TWO_CHANNEL_AUDIO
|
||||
FILE "data.wav" 44:59:56 04:00:00
|
||||
|
||||
12
whipper/test/track-separate.cue
Normal file
12
whipper/test/track-separate.cue
Normal file
@@ -0,0 +1,12 @@
|
||||
FILE "track.flac" WAVE
|
||||
TRACK 01 AUDIO
|
||||
INDEX 01 00:00:00
|
||||
FILE "track.flac" WAVE
|
||||
TRACK 02 AUDIO
|
||||
INDEX 01 00:00:00
|
||||
FILE "track.flac" WAVE
|
||||
TRACK 03 AUDIO
|
||||
INDEX 01 00:00:00
|
||||
FILE "track.flac" WAVE
|
||||
TRACK 04 AUDIO
|
||||
INDEX 01 00:00:00
|
||||
9
whipper/test/track-single.cue
Normal file
9
whipper/test/track-single.cue
Normal file
@@ -0,0 +1,9 @@
|
||||
FILE "track.flac" WAVE
|
||||
TRACK 01 AUDIO
|
||||
INDEX 01 00:00:00
|
||||
TRACK 02 AUDIO
|
||||
INDEX 01 00:00:02
|
||||
TRACK 03 AUDIO
|
||||
INDEX 01 00:00:04
|
||||
TRACK 04 AUDIO
|
||||
INDEX 01 00:00:06
|
||||
BIN
whipper/test/track.flac
Normal file
BIN
whipper/test/track.flac
Normal file
Binary file not shown.
Reference in New Issue
Block a user