source: trunk/ChangeLog @ 455

Revision 455, 67.0 KB checked in by thomas, 2 years ago (diff)
  • morituri/program/cdparanoia.py: Since stop can be same as start, add + 1 to progress calculation. Fiexes #37.
Line 
12011-05-22  Thomas Vander Stichele  <thomas at apestaart dot org>
2
3        * morituri/program/cdparanoia.py:
4          Since stop can be same as start, add + 1 to progress calculation.
5          Fiexes #37.
6
72011-05-22  Thomas Vander Stichele  <thomas at apestaart dot org>
8
9        * morituri/common/gstreamer.py:
10          Remove unused imports.
11        * morituri/image/image.py:
12          Remove halfbaked code.
13
142011-05-22  Thomas Vander Stichele  <thomas at apestaart dot org>
15
16        * morituri/rip/cd.py:
17          Factor out function to write .m3u lines.
18
192011-05-22  Thomas Vander Stichele  <thomas at apestaart dot org>
20
21        patch by: Loïc Minier <lool@dooz.org>
22
23        * morituri/rip/cd.py:
24          Don't strip extension of HTOA track.
25          Fixes #50.
26
272011-05-22  Thomas Vander Stichele  <thomas at apestaart dot org>
28
29        * morituri/result/logger.py:
30          Always write strftime in C locale.  Fixes second bug
31          mentioned in #49.
32
332011-05-21  Thomas Vander Stichele  <thomas at apestaart dot org>
34
35        * morituri/common/checksum.py:
36        * morituri/image/image.py:
37        * morituri/test/test_common_checksum.py:
38        * morituri/common/gstreamer.py (added):
39          Factor out GstException and GstPipelineTask.
40
412011-05-21  Thomas Vander Stichele  <thomas at apestaart dot org>
42
43        * misc/morituri-uninstalled:
44          The binary name is rip, so add an option to override.
45          Fixes #46.
46
472011-05-21  Thomas Vander Stichele  <thomas at apestaart dot org>
48
49        * morituri/rip/image.py:
50          Document image subcommand.  Fixes #61.
51
522011-05-21  Thomas Vander Stichele  <thomas at apestaart dot org>
53
54        * morituri/test/Makefile.am:
55          Package error progress output.  Fixes distcheck on slaves.
56
572011-05-21  Thomas Vander Stichele  <thomas at apestaart dot org>
58
59        * morituri/test/test_program_cdparanoia.py:
60          Update expected quality percentage.
61          Was broken since its commit in [432].
62
632011-05-21  Thomas Vander Stichele  <thomas at apestaart dot org>
64
65        * morituri/common/checksum.py:
66        * morituri/common/encode.py:
67        * morituri/image/table.py:
68        * morituri/rip/cd.py:
69        * morituri/rip/image.py:
70        * morituri/rip/offset.py:
71        * morituri/test/test_common_accurip.py:
72        * morituri/test/test_common_checksum.py:
73        * morituri/test/test_image_cue.py:
74        * morituri/test/test_image_table.py:
75          Pychecker fixes.
76
772011-05-21  Thomas Vander Stichele  <thomas at apestaart dot org>
78
79        * morituri/common/checksum.py:
80          Actually raise the exception.
81        * morituri/common/task.py:
82          Document interface more clearly.
83        * morituri/test/test_common_checksum.py:
84          Use tcommon for test.common
85
862011-05-19  Thomas Vander Stichele  <thomas at apestaart dot org>
87
88        * morituri/common/common.py:
89          Don't fail on loading pickle.
90
912011-05-19  Thomas Vander Stichele  <thomas at apestaart dot org>
92
93        * morituri/common/encode.py:
94          Alac does not have merge_tags.  Fixes #15.
95
962011-05-19  Thomas Vander Stichele  <thomas at apestaart dot org>
97
98        * morituri/program/cdparanoia.py:
99        * morituri/common/encode.py:
100        * morituri/common/program.py:
101        * morituri/rip/cd.py:
102          Add action and what args to describe task better.
103
1042011-05-19  Thomas Vander Stichele  <thomas at apestaart dot org>
105
106        * morituri/common/task.py:
107          Add more debug.
108
1092011-05-19  Thomas Vander Stichele  <thomas at apestaart dot org>
110
111        * morituri/rip/main.py:
112          More debug info: args, version, revision.
113
1142011-05-19  Thomas Vander Stichele  <thomas at apestaart dot org>
115
116        * morituri/configure/configure.py (svn:keywords):
117          Expand revision.
118        * morituri/configure/configure.py:
119          Set it on the revision local.
120
1212011-04-08  Thomas Vander Stichele  <thomas at apestaart dot org>
122
123        * morituri/common/encode.py:
124          wavenc does not have merge_tags, it seems.
125          So don't call an element a tagger, don't merge tags if there is
126          no tagger, and complain if there is no merge_tags when we think
127          there should be.
128
1292011-03-23  Thomas Vander Stichele  <thomas at apestaart dot org>
130
131        * morituri/program/cdparanoia.py:
132          cdparanoia can hang indefinitely on scsi read errors.
133          For example, on some drives, when trying negative offsets.
134          Notice them, count them, and fail after 100.
135        * morituri/test/test_program_cdparanoia.py:
136        * morituri/test/cdparanoia.progress.error (added):
137          Add a test for this output.
138
1392011-03-22  Thomas Vander Stichele  <thomas at apestaart dot org>
140
141        * morituri/common/program.py:
142        * morituri/rip/offset.py:
143          When finding the offset, also load and possibly unmount, resolving
144          to the real path for the device.
145
1462011-03-20  Thomas Vander Stichele  <thomas at apestaart dot org>
147
148        * morituri/common/encode.py:
149          Debug failing to write tags better.  See #60.
150
1512011-03-20  Thomas Vander Stichele  <thomas at apestaart dot org>
152
153        * morituri/program/cdparanoia.py:
154          Extend FileSizeError with an extra message.
155        * morituri/rip/offset.py:
156          Print a reasonable warning when we cannot rip with a certain offset.
157          See #57.
158
1592011-03-17  Thomas Vander Stichele  <thomas at apestaart dot org>
160
161        * morituri/rip/drive.py:
162          Fix typo.  Fixes #59.
163
1642011-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>
165
166        * morituri/common/checksum.py:
167          Create a GstException to wrap a Gst.GError.
168          Create a base GstPipelineTask class.
169          Use it in Checksum and TRM tasks.
170          Raise and don't proceed to call .paused() when a GstError happens.
171          Should help debug https://bugs.launchpad.net/bugs/735053
172        * morituri/test/test_common_checksum.py:
173          Adapt test.
174
1752011-01-09  Thomas Vander Stichele  <thomas at apestaart dot org>
176
177        patch by: Ross Burton
178
179        * morituri/common/program.py:
180          On compilation albums the album artist is different to the artist.
181          If this is the case, morituri should write both tags.
182          Fixes #43.
183
1842011-01-02  Thomas Vander Stichele  <thomas at apestaart dot org>
185
186        * morituri/common/program.py:
187        * morituri/image/table.py:
188        * morituri/rip/cd.py:
189          Get CDDB disc id.  Use it to print info when not found on
190          MusicBrainz.
191
1922011-01-01  Thomas Vander Stichele  <thomas at apestaart dot org>
193
194        * morituri/rip/cd.py:
195          Add -U/--unknown option to continue ripping even if the CD is
196          unknown.  Default to False.
197
1982010-12-30  Thomas Vander Stichele  <thomas at apestaart dot org>
199
200        * morituri/common/program.py:
201        * morituri/rip/cd.py:
202          Add load and eject device.  Do so before and after ripping.
203
2042010-11-14  Thomas Vander Stichele  <thomas at apestaart dot org>
205
206        patch by: Loïc Minier <lool at debian dot org>
207
208        * examples/ARcalibrate.py:
209        * examples/ARcue.py:
210        * examples/readdisc.py:
211        * morituri/rip/cd.py:
212        * morituri/rip/offset.py:
213          s/reponse/response.
214          Fixes #51.
215
2162010-11-08  Thomas Vander Stichele  <thomas at apestaart dot org>
217
218        * morituri/program/cdrdao.py:
219          Add logCategory to CDRDAO tasks.
220          Remove errors from parser, set them publically on task.
221          Properly raise exceptions on data cd's with correct stack origin.
222
2232010-07-08  Thomas Vander Stichele  <thomas at apestaart dot org>
224
225        * morituri/common/program.py:
226          Comment where we got the template variables from.
227        * morituri/rip/cd.py:
228          Document the template variables.
229
2302010-06-19  Thomas Vander Stichele  <thomas at apestaart dot org>
231
232        * morituri/program/cdparanoia.py:
233          Warn about missing cdparanoia too.
234
2352010-06-19  Thomas Vander Stichele  <thomas at apestaart dot org>
236
237        * morituri/common/common.py:
238          Add MissingDependencyException.
239        * morituri/program/cdrdao.py:
240        * morituri/rip/main.py:
241          Use it to warn about missing cdrdao.
242
2432010-06-18  Thomas Vander Stichele  <thomas at apestaart dot org>
244
245        * morituri/common/task.py:
246          Add exception traceback for easier debugging.
247
2482010-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
249
250        * morituri.spec.in:
251          Add requires for python-setuptools since we use parse_version.
252          Fixes #32.
253
2542010-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
255
256        * morituri/common/program.py:
257          Set results by default so that it is set even if we get an
258          exception getting them.
259          Fixes #35.
260
2612010-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>
262
263        * morituri/test/test_image_toc.py:
264          Fix distcheck by writing unicode toc filename in a temp dir.
265
2662010-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>
267
268        * morituri/rip/cd.py:
269          Log the version at the beginning to help in bug reports.
270
2712010-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>
272
273        * morituri/rip/main.py:
274          Fix another UnicodeEncodeError problem as mentioned in #25.
275
2762010-04-18  Thomas Vander Stichele  <thomas at apestaart dot org>
277
278        * morituri/test/Makefile.am:
279        * morituri/test/jose.toc (added):
280        * morituri/test/JoséGonzález.toc (deleted):
281          Rename utf-8 file to a normal file.
282        * morituri/test/common.py:
283        * morituri/test/test_common_checksum.py:
284        * morituri/test/test_common_encode.py:
285        * morituri/test/test_image_image.py:
286        * morituri/test/test_image_toc.py:
287          Copy the normal file first to the utf-8 filename, if supported.
288          Skip tests that need unicode when we are not in a utf-8 locale.
289
2902010-04-17  Thomas Vander Stichele  <thomas at apestaart dot org>
291
292        * configure.ac:
293        * doc/release:
294          Back to trunk.
295
296=== release 0.1.1 ===
297
2982010-04-16  Thomas Vander Stichele  <thomas at apestaart dot org>
299
300        * NEWS:
301        * README:
302        * RELEASE:
303        * configure.ac:
304        * doc/release:
305        * morituri.doap:
306          Releasing 0.1.1, 'Dead'
307
3082010-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
309
310        * morituri/common/encode.py:
311        * morituri/rip/image.py:
312          Provide status on the retagging.
313
3142010-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
315
316        patch by: Peter Oliver
317
318        * morituri/program/cdparanoia.py:
319          Respect umask for encoded files.  Fixes #17.
320
3212010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>
322
323        * morituri/common/encode.py:
324          Before moving the newly tagged file to overwrite the original
325          one, copy over mode.
326
3272010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>
328
329        * morituri/common/program.py:
330          Commit one missing line from patch in #4 for multi-artist discs.
331
3322010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>
333
334        patch by: Peter Oliver
335
336        * morituri/common/program.py:
337          Handle multi-artist releases where track artist is unset.
338          Fixes #14.
339
3402010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>
341
342        * morituri/rip/image.py:
343          Fix more utf-8 issues.
344
3452010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>
346
347        * morituri/image/image.py:
348          Remove dead code.
349
3502010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>
351
352        * morituri/common/encode.py:
353          Fix wrong code for checksum comparison.
354
3552010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>
356
357        * morituri/common/program.py:
358          Rename some vars to start with mbid.  Fix pychecker issues.
359
3602010-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
361
362        * morituri/common/program.py:
363          Add a retagging command.
364          Add a getMusicBrainz() method.
365          Also store musicbrainz track/album/artist ids.
366          Patch provided by Peter Oliver.  Fixes #4.
367        * morituri/rip/cd.py:
368          Use it.
369        * morituri/image/image.py:
370          Add a task to retag an image.
371        * morituri/rip/image.py:
372          Add a command to retag an image.
373
3742010-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
375
376        * morituri/common/encode.py:
377          Add tasks to read, write, and safely retag flac files.
378        * morituri/test/test_common_encode.py:
379          Add tests for this.
380
3812010-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
382
383        * morituri/common/checksum.py:
384          Style fixes.
385        * morituri/common/common.py:
386          Add functions to convert a gst.TagList to a dict and compare them.
387        * morituri/common/task.py:
388          Add setAndRaiseException which gives us an appropriate
389          exceptionMessage as if we raised where we called this new function.
390
3912010-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
392
393        * morituri/common/encode.py:
394          pychecker fix.
395
3962010-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
397
398        * morituri/common/encode.py:
399          Add a task to read tags.
400        * morituri/test/test_common_encode.py:
401          Add a test.
402
4032010-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
404
405        * morituri/common/encode.py:
406          Add a vbr profile.
407
4082010-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
409
410        * morituri/rip/image.py:
411          Don't splitext on inputdir; fixes encoding of directories like
412          Sigur Ros - Takk... (which removed a period)
413
4142010-04-09  Thomas Vander Stichele  <thomas at apestaart dot org>
415
416        * morituri/image/table.py:
417        * morituri/program/cdparanoia.py:
418          Do some 80 character cleanups.
419
4202010-04-08  Thomas Vander Stichele  <thomas at apestaart dot org>
421
422        * morituri/rip/image.py:
423          Fix problem to encode from files with unicode chars.
424
4252010-04-08  Thomas Vander Stichele  <thomas at apestaart dot org>
426
427        * morituri/program/cdparanoia.py:
428          Add some debug.
429        * morituri/common/encode.py:
430          Add more debug.
431          Handle the case where peak is full scale, and peakdB thus 0,
432          which triggered not setting self.peak.
433
4342010-04-06  Thomas Vander Stichele  <thomas at apestaart dot org>
435
436        patch by: Peter Oliver
437
438        * morituri/common/program.py:
439          Allow using sortName for artist/track using %S/%s.
440          Fixes #19.
441
4422010-04-06  Thomas Vander Stichele  <thomas at apestaart dot org>
443
444        * doc/release:
445          Document having clean test run.
446        * morituri/common/encode.py:
447          Catch and properly stop on gst.QueryError.
448          Don't set peak in stop if we had an error.
449        * morituri/test/test_common_encode.py:
450        * morituri/test/test_common_renamer.py:
451        * morituri/test/test_image_cue.py:
452          Clean up after tests.
453
4542010-04-06  Thomas Vander Stichele  <thomas at apestaart dot org>
455
456        * morituri/common/task.py:
457        * morituri/image/cue.py:
458          Add logCategory.
459        * morituri/image/image.py:
460          If subtasks had an exception, retrigger the exception and stop.
461
4622010-04-06  Thomas Vander Stichele  <thomas at apestaart dot org>
463
464        * morituri/image/image.py:
465          Fix AudioLengthTask for the case where we don't have the decoder,
466          by instead of doing get_state, waiting for an ASYNC_DONE or ERROR
467          message.  Properly raise a gst.GError in that case.
468        * morituri/common/task.py:
469          Add some debug.
470        * morituri/test/test_image_image.py:
471          After this fix, we now catch the TYPE_NOT_FOUND because of an
472          empty stream instead of the later gst.QueryError.
473        * morituri/test/test_common_encode.py:
474          Let us know what it is if not a gst.QueryError.
475
4762010-04-05  Thomas Vander Stichele  <thomas at apestaart dot org>
477
478        * doc/Makefile.am:
479          Don't put rip.1 manpage in subdir.
480
4812010-04-05  Thomas Vander Stichele  <thomas at apestaart dot org>
482
483        * morituri/common/common.py:
484          add quoteParse function to quote properly for gst.parse_launch()
485        * morituri/common/checksum.py:
486          Fix single quote problem.
487          use self.setException()
488        * morituri/common/encode.py:
489          Fix single quote problem.
490        * morituri/image/image.py:
491          Fix single quote problem.
492          Reraise gst.QueryError.
493        * morituri/test/test_common_encode.py:
494        * morituri/test/test_common_encode.py (added):
495          Add tests for unicode/single/double quote.
496        * morituri/test/test_image_image.py:
497        * morituri/test/test_common_checksum.py:
498          Add tests for single/double quote.
499        * morituri/test/common.py:
500          add twisted-like failUnlessRaises to TestCase that returns
501          the exception, so we can check wrapped exceptions in TaskException.
502          Fixes #16.
503
5042010-04-05  Thomas Vander Stichele  <thomas at apestaart dot org>
505
506        * morituri/common/task.py:
507          Wrap exceptions during tasks in a TaskException, storing the
508          message, for improved error reporting later on.
509
5102010-04-05  Thomas Vander Stichele  <thomas at apestaart dot org>
511
512        * doc/Makefile.am:
513        * morituri.spec.in:
514        * morituri/extern/Makefile.am:
515          Use help2man.py to generate manpage.
516
5172010-04-04  Thomas Vander Stichele  <thomas at apestaart dot org>
518
519        * morituri/common/encode.py:
520        * morituri/common/program.py:
521        * morituri/image/image.py:
522        * morituri/program/cdparanoia.py:
523        * morituri/rip/cd.py:
524        * morituri/rip/image.py:
525        * morituri/rip/offset.py:
526          Move all gst-using imports inside functions and classes
527          to avoid 'import gst' eating our options.
528          Fixes #12.
529
5302010-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>
531
532        * bin/Makefile.am:
533          Install rip as the script.
534
5352010-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>
536
537        * morituri/common/Makefile.am:
538          Add missing result.py
539        * morituri/test/Makefile.am:
540        * morituri/test/test_image_toc.py:
541        * morituri/test/JoséGonzález.toc (added):
542        * morituri/test/José González.toc (deleted):
543          automake doesn't handle spaces in names, so move it.
544
5452010-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>
546
547        * bin/rip.in:
548          Add our PYTHONLIBDIR to sys.path if needed.  Should make this
549          work when doing ./configure; sudo checkinstall make install
550          on e.g. Ubuntu.
551
5522010-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>
553
554        * configure.ac:
555        * bin/rip.in (added):
556        * bin/rip (deleted):
557          Generate bin/rip so we can do sys.path stuff.
558
5592010-03-14  Thomas Vander Stichele  <thomas at apestaart dot org>
560
561        * morituri/rip/offset.py:
562          Add a more complete list of offsets, obtained using misc/offsets.py
563
5642010-03-14  Thomas Vander Stichele  <thomas at apestaart dot org>
565
566        * misc/offsets.py (added):
567          Add a script to calculate list of offsets based on AccurateRip's
568          online database, according to popularity.
569
5702010-02-28  Thomas Vander Stichele  <thomas at apestaart dot org>
571
572        * morituri/common/encode.py:
573          Handle utf-8 properly.
574
5752010-02-28  Thomas Vander Stichele  <thomas at apestaart dot org>
576
577        * morituri/common/program.py:
578          Fix a problem with Arid's new album of not having an id.
579
5802010-01-31  Thomas Vander Stichele  <thomas at apestaart dot org>
581
582        * morituri/common/accurip.py:
583          The AccuRip cache dir could exist without the file; handle that
584          case.
585
5862009-12-28  Thomas Vander Stichele  <thomas at apestaart dot org>
587
588        * morituri/common/program.py:
589          For Various Artists releases, fall back to the release artist if
590          the track artist is None.
591
5922009-10-17  Thomas Vander Stichele  <thomas at apestaart dot org>
593
594        * morituri/image/image.py:
595          Add ImageEncodeTask to encode a disk image to a different profile
596          and directory.
597        * morituri/common/encode.py:
598          Add lossy encoding profiles for mp3 and vorbis.
599          Rename muxer to tagger since that's what we use it for.
600          Do progress probe after level to make sure we get samples for
601          offsets.
602        * morituri/rip/image.py:
603          Add rip image encode command.
604
6052009-10-17  Thomas Vander Stichele  <thomas at apestaart dot org>
606
607        * morituri/test/José González.toc (added):
608          Add test file for a test.
609
6102009-10-16  Thomas Vander Stichele  <thomas at apestaart dot org>
611
612        * morituri/common/task.py:
613          Add exceptionMessage on Task to store the result of
614          log.getExceptionMessage when the stack is still valid.
615
6162009-09-26  Thomas Vander Stichele  <thomas at apestaart dot org>
617
618        * configure.ac:
619          Back to TRUNK.
620
621=== release 0.1.0 ===
622
6232009-09-26  Thomas Vander Stichele  <thomas at apestaart dot org>
624
625        * NEWS:
626        * RELEASE:
627        * configure.ac:
628          Releasing 0.1.0, "Youngblood".
629
6302009-09-19  Thomas Vander Stichele  <thomas at apestaart dot org>
631
632        * morituri/program/cdparanoia.py:
633          explicitize keyword args.
634          Break some 80+ lines.
635
6362009-09-19  Thomas Vander Stichele  <thomas at apestaart dot org>
637
638        * morituri/rip/offset.py:
639          Pass device parameter to ReadTrackTask.  Thanks to Alex B for
640          spotting this on my blog.
641
6422009-09-12  Thomas Vander Stichele  <thomas at apestaart dot org>
643
644        * morituri/program/cdparanoia.py:
645        * morituri/rip/offset.py:
646          Another unicode fix.
647
6482009-09-12  Thomas Vander Stichele  <thomas at apestaart dot org>
649
650        * HACKING:
651          More unicode notes.
652        * morituri/common/program.py:
653        * morituri/image/table.py:
654        * morituri/image/toc.py:
655        * morituri/result/result.py:
656        * morituri/rip/cd.py:
657        * morituri/test/test_image_toc.py:
658          Further unicode fixes, for options, CD-Text, paths, ...
659
6602009-09-11  Thomas Vander Stichele  <thomas at apestaart dot org>
661
662        * morituri/program/cdrdao.py:
663          Wrap read in an exception handler.
664        * morituri/common/task.py:
665          Debug exceptions more.
666
6672009-09-11  Thomas Vander Stichele  <thomas at apestaart dot org>
668
669        * HACKING:
670          Note unicode handling.
671        * morituri/test/test_image_image.py:
672        * morituri/image/table.py:
673        * morituri/program/cdparanoia.py:
674        * morituri/common/checksum.py:
675          Use unicode for paths.
676          Use repr for path representation.
677        * morituri/test/test_common_checksum.py:
678          Add test for unicode audio file name.
679
6802009-09-11  Thomas Vander Stichele  <thomas at apestaart dot org>
681
682        * morituri/image/cue.py:
683        * morituri/image/toc.py:
684        * morituri/test/test_image_cue.py:
685        * morituri/test/test_image_toc.py:
686          Read input file as utf-8.  Fix logging of paths.
687        * morituri/image/image.py:
688          Document and add asserts for unicodeness of paths.
689          Encode path in launch lines as utf-8
690
6912009-09-11  Thomas Vander Stichele  <thomas at apestaart dot org>
692
693        * morituri/common/task.py:
694          Make SyncRunner wrap start() so we correctly handle any
695          exception being thrown.
696         
6972009-09-11  Thomas Vander Stichele  <thomas at apestaart dot org>
698
699        * morituri/common/checksum.py:
700        * morituri/test/Makefile.am:
701        * morituri/test/test_common_checksum.py (added):
702          Add a check to make sure that checksumming an empty file doesn't
703          hang.  Fix the hang.
704
7052009-09-08  Thomas Vander Stichele  <thomas at apestaart dot org>
706
707        * morituri.spec.in:
708          Add pycdio as requirement.
709
7102009-09-07  Thomas Vander Stichele  <thomas at apestaart dot org>
711
712        * morituri/common/program.py:
713          Fix getting AccurateRip results for albums with a HTOA.
714        * morituri/test/Makefile.am:
715        * morituri/test/test_common_program.py:
716        * morituri/test/silentalarm.result.pickle (added):
717          Add testcase for it, Bloc Party's Silent Alarm.
718
7192009-09-07  Thomas Vander Stichele  <thomas at apestaart dot org>
720
721        * morituri.spec.in:
722          Update requirements to work around known bugs.
723
7242009-09-06  Thomas Vander Stichele  <thomas at apestaart dot org>
725
726        * morituri/rip/cd.py:
727          Fix warning against rebuilt package.
728
7292009-09-06  Thomas Vander Stichele  <thomas at apestaart dot org>
730
731        * README:
732          Fix up dependencies.
733        * morituri.spec.in:
734          Fix dependencies and noarch install location.
735        * morituri/common/Makefile.am:
736          Add result.py to dist
737
7382009-09-06  Thomas Vander Stichele  <thomas at apestaart dot org>
739
740        * configure.ac:
741        * m4/Makefile.am:
742        * m4/as-ac-expand.m4 (added):
743          Correctly set installation dir for noarch python files so that it
744          works on 64 bit.
745
7462009-09-06  Thomas Vander Stichele  <thomas at apestaart dot org>
747
748        * morituri/program/cdrdao.py:
749          Parse version number.
750        * morituri/rip/cd.py:
751          Warn about cdrdao versions with a bug.
752        * morituri/test/test_program_cdrdao.py:
753          Test that we can parse the version.
754
7552009-07-02  Thomas Vander Stichele  <thomas at apestaart dot org>
756
757        * morituri/program/cdrdao.py:
758          Handle errors.  Tested by not having a CD in the drive.
759
7602009-07-02  Thomas Vander Stichele  <thomas at apestaart dot org>
761
762        * morituri/common/task.py:
763          Document better.
764          Create an ITaskListener interface where we can document.
765          Log some more.
766
7672009-06-24  Thomas Vander Stichele  <thomas at apestaart dot org>
768
769        * morituri/test/test_common_program.py:
770        * morituri/common/program.py:
771          Extract a common method to get textual representation of
772          AccurateRip results, and test it.
773        * morituri/rip/cd.py:
774        * morituri/rip/image.py:
775          Use the method.
776
7772009-06-24  Thomas Vander Stichele  <thomas at apestaart dot org>
778
779        * morituri/image/table.py:
780          Fix deprecationwarning for python 2.6
781
7822009-06-24  Thomas Vander Stichele  <thomas at apestaart dot org>
783
784        * morituri/test/test_common_program.py (added):
785        * morituri/common/program.py:
786          Break verifyImage into two so we can test it.
787          Test it using an AccurateRip result for Luke Haines Is Dead
788          which had a wrongly ripped track 10.
789
790
7912009-06-24  Thomas Vander Stichele  <thomas at apestaart dot org>
792
793        * morituri/result/result.py:
794          Document some more.
795
7962009-06-24  Thomas Vander Stichele  <thomas at apestaart dot org>
797
798        * morituri/test/Makefile.am:
799        * morituri/test/dBAR-020-002e5023-029d8e49-040eaa14.bin (added):
800          Add AR result for Luke Haines Is Dead disc 1
801
8022009-06-20  Thomas Vander Stichele  <thomas at apestaart dot org>
803
804        * Makefile.am:
805        * misc/pycheckerrc:
806        * morituri/common/accurip.py:
807        * morituri/common/checksum.py:
808        * morituri/common/encode.py:
809        * morituri/image/table.py:
810        * morituri/rip/drive.py:
811          Fix up for pychecker warnings for 2.6
812          Fix rip drive list, which forgot some modules.
813
8142009-06-16  Thomas Vander Stichele  <thomas at apestaart dot org>
815
816        * morituri/rip/main.py:
817        * morituri/rip/image.py (added):
818          Add command to verify an image.
819        * morituri/common/program.py:
820        * morituri/rip/cd.py:
821          Fix AccurateRip checksum output.
822
8232009-06-16  Thomas Vander Stichele  <thomas at apestaart dot org>
824
825        * morituri/common/drive.py:
826          Really make pycdio and cdio optional.
827        * morituri/rip/drive.py:
828        * morituri/rip/offset.py:
829          Use drive.getAllDevicePaths()
830
8312009-06-15  Thomas Vander Stichele  <thomas at apestaart dot org>
832
833        * morituri/result/result.py:
834          Add max confidence from database.
835        * morituri/common/program.py:
836        * morituri/rip/cd.py:
837          Move AccurateRip checking to program.py
838          Re-rip if verification failed when continuing a rip.
839
8402009-06-15  Thomas Vander Stichele  <thomas at apestaart dot org>
841
842        * morituri/image/cue.py:
843          Better debug.
844
8452009-06-09  Thomas Vander Stichele  <thomas at apestaart dot org>
846
847        * morituri/common/program.py:
848        * morituri/rip/cd.py:
849          Serialize the rip result after every rip, so we can pick up
850          where we left off with all result data.
851
8522009-06-07  Thomas Vander Stichele  <thomas at apestaart dot org>
853
854        * morituri/common/program.py:
855          Move getPath to Program.
856          Remove arguments to ripTrack that can be gotten from
857          trackResult.
858        * morituri/rip/cd.py:
859          Continue without musicbrainz metadata.
860          Unify htoa and normal track ripping.
861        * morituri/result/result.py:
862          Add getTrackResult so it's easier to look up track results
863          when there's a HTOA.
864
8652009-06-07  Thomas Vander Stichele  <thomas at apestaart dot org>
866
867        * morituri/common/program.py:
868        * morituri/rip/cd.py:
869          Move HTOA checking to program.
870
8712009-06-07  Thomas Vander Stichele  <thomas at apestaart dot org>
872
873        * morituri/result/logger.py:
874          Fix for toctable->table
875        * morituri/common/program.py:
876        * morituri/rip/cd.py:
877          Move lots of functionality to program module.
878
8792009-06-07  Thomas Vander Stichele  <thomas at apestaart dot org>
880
881        * morituri/result/result.py:
882          Change toctable to table since it's a full index table.
883        * morituri/common/Makefile.am:
884        * morituri/common/program.py (added):
885          Add module and class for program state.
886        * morituri/rip/cd.py:
887          Use the program state to clean up the do() function.
888
8892009-06-07  Thomas Vander Stichele  <thomas at apestaart dot org>
890
891        * morituri/rip/cd.py:
892          Massage into 80 characters per line.
893          Make pycdio/cdio optional.
894
8952009-06-07  Thomas Vander Stichele  <thomas at apestaart dot org>
896
897        * morituri/rip/drive.py:
898          Make pycdio and cdio optional.
899
9002009-06-07  Thomas Vander Stichele  <thomas at apestaart dot org>
901
902        * morituri/image/table.py:
903          Add getPregap() method.
904        * morituri/rip/cd.py:
905          Use artist.name, not getUniqueName, to avoid monstruous names for
906          Muse.
907          Pass mbdiscid to getPath, so Unknown Disc can be saved with it.
908          Don't set the date if the release doesn't have one.
909          Set pregap on trackResult using new Track.getPregap()
910          Write all log/cue/m3u files as utf-8.
911
9122009-06-06  Thomas Vander Stichele  <thomas at apestaart dot org>
913
914        * morituri/test/cdparanoia.progress:
915          Add a shorter test file, 23 seconds.
916        * morituri/test/test_program_cdparanoia.py:
917          Update the test to adapt.  Check for track quality.
918        * morituri/program/cdparanoia.py:
919          Add a measure of track quality based on the number of reads.
920          Use the [wrote] output for progress updates, a bit more
921          jittery in its output.
922        * morituri/rip/cd.py:
923          Set track quality on RipResult.
924
9252009-06-05  Thomas Vander Stichele  <thomas at apestaart dot org>
926
927        * morituri/rip/cd.py:
928          Use RipResult to store result information.
929        * morituri/result/logger.py (added):
930          Add a Logger to handle the RipResult, much like
931          EAC's log file.
932
9332009-06-05  Thomas Vander Stichele  <thomas at apestaart dot org>
934
935        * morituri/rip/cd.py:
936          Comment out number of track setting on tag for now.
937          MusicBrainz can give us dates in YYYY, YYYY-MM, and YYYY-MM-DD
938          format, so convert to YYYY-MM-DD always.
939          Unmount the data part of the CD we want to rip if it is mounted.
940          Adapt to peak level change.
941          Don't try to write data tracks to the m3u file.
942          Resolve the device path to the actual device path.
943
9442009-06-05  Thomas Vander Stichele  <thomas at apestaart dot org>
945
946        * morituri/result/result.py:
947          Add a Logger base class.
948
9492009-06-05  Thomas Vander Stichele  <thomas at apestaart dot org>
950
951        * configure.ac:
952        * morituri/Makefile.am:
953        * morituri/result (added):
954        * morituri/result/result.py (added):
955        * morituri/result/__init__.py (added):
956        * morituri/result/Makefile.am (added):
957          Add classes to store track and rip results in.
958
9592009-06-04  Thomas Vander Stichele  <thomas at apestaart dot org>
960
961        * morituri/common/common.py:
962          Add an argument for the delimiter in formatting.
963        * morituri/common/encode.py:
964          Most programs use peak volume, not power, so do this too.
965
9662009-06-04  Thomas Vander Stichele  <thomas at apestaart dot org>
967
968        * morituri/test/common.py:
969          Add a method for diffing multiline strings.
970
9712009-06-02  Thomas Vander Stichele  <thomas at apestaart dot org>
972
973        * morituri/common/encode.py:
974          Add a test() method to the profile so we can warn about bad
975          flacenc versions.
976          Encode track number and count, and release date, if possible.
977        * morituri/rip/cd.py:
978          Fix another off-by-one error in the tag encoding.
979
9802009-06-01  Thomas Vander Stichele  <thomas at apestaart dot org>
981
982        * morituri/program/cdparanoia.py:
983        * morituri/rip/cd.py:
984          Handle another off-by-one error in the m3u handling.
985          Add a getTagList function.
986          Use it to encode tags.
987
9882009-06-01  Thomas Vander Stichele  <thomas at apestaart dot org>
989
990        * morituri/common/encode.py:
991        * morituri/program/cdparanoia.py:
992        * morituri/rip/cd.py:
993          Clean up the temporary unencoded file.
994          Pass profile as objects to tasks, so that temp files have the right
995          extension.
996
9972009-06-01  Thomas Vander Stichele  <thomas at apestaart dot org>
998
999        * morituri/common/encode.py:
1000        * morituri/program/cdparanoia.py:
1001          Add encoding profiles, kept simple for now as a class and
1002          subclasses.  Use them to encode.  Calculate peak level while
1003          encoding, compared to EAC and replaygain's value.
1004        * morituri/rip/cd.py:
1005          Use the encoding profiles, ripping with the right extension.
1006          Add a --profile parameter for it.
1007
10082009-05-31  Thomas Vander Stichele  <thomas at apestaart dot org>
1009
1010        * morituri/rip/cd.py:
1011          Clean up track numbering confusion.
1012
10132009-05-26  Thomas Vander Stichele  <thomas at apestaart dot org>
1014
1015        * morituri/common/encode.py (added):
1016        * examples/encode.py (added):
1017          Add an Encode Task, hardcoded to flac for now.
1018          Add an example, that also sets tags.
1019
10202009-05-26  Thomas Vander Stichele  <thomas at apestaart dot org>
1021
1022        * morituri/common/task.py:
1023          Add debug.
1024        * morituri/rip/drive.py:
1025          Show all drives, not just the ones that happen to have an Audio CD
1026          inserted.
1027
10282009-05-25  Thomas Vander Stichele  <thomas at apestaart dot org>
1029
1030        * morituri/rip/cd.py:
1031          Add asserts for comparing id's between the simple toc and
1032          the full table.
1033          Create the output directory before ripping the htoa.
1034          Ignore data tracks for now.
1035          Don't fail if we have no AccurateRip responses.
1036        * morituri/image/table.py:
1037          Add a session ivar to Track.
1038          Factor in session leadin when calculating track length
1039          of last track in a session.
1040          add getMusicBrainzSubmitURL()
1041          add _getSessionGap() because the session gap size is different
1042          for session 2 and all following.
1043          Use it in merge() to get offsets right.
1044          Fix getAccurateRipURL by only using the audio tracks for the
1045          'length in tracks' number
1046          Temporarily disable writing out data tracks to a .cue file,
1047          since it's not implemented yet.
1048          Add canCue to see if we can write a .cue file from the given table,
1049          and debug why not if not.
1050        * morituri/program/cdrdao.py:
1051          Rework to rip each session separately instead of using session 9.
1052          This fixes session 9 read-toc missing the pregap.
1053          Add a simple LineParser for handling output from disk-info.
1054          Count tracks relatively for the session, because the output for
1055          session 2 for track numbers picks up where session 1 left off.
1056          Don't set leadout from TOC printing since for the same reason
1057          session 2's leadout is absolute, not relative to start of session.
1058          Add a DiscInfoTask.
1059          Convert Table and Toc reading tasks to multitasks, first getting the
1060          number of sessions, then reading table/toc for each session.
1061
1062        * morituri/test/test_image_table.py:
1063          Fix up MusicBrainz disc id for my Ladyhawke disc.
1064          Add AccurateRip URL verification, compared against EAC's.
1065        * morituri/test/test_image_toc.py:
1066          Use two separate session read-toc output files to verify
1067          the case of Das Capital.
1068          Verify musicbrainz URL.
1069
10702009-05-25  Thomas Vander Stichele  <thomas at apestaart dot org>
1071
1072        * morituri/common/task.py:
1073          Add documentation.
1074          Use a _task counter instead of duplicating tasks to
1075          __tasks; this allows us to add tasks after starting.
1076          Catch Exceptions during next() so that we don't get
1077          stuck in a main loop that doesn't exit.
1078          Raise it later when we're done.
1079
10802009-05-25  Thomas Vander Stichele  <thomas at apestaart dot org>
1081
1082        * morituri/common/common.py:
1083          Since the version was inherited from the current code
1084          in unpickled objects, separate into classVersion and
1085          an instanceVersion set from __init__.
1086
10872009-05-25  Thomas Vander Stichele  <thomas at apestaart dot org>
1088
1089        * morituri/image/toc.py:
1090          Add a logName for debugging.
1091
10922009-05-25  Thomas Vander Stichele  <thomas at apestaart dot org>
1093
1094        * morituri/program/cdparanoia.py:
1095        * morituri/image/image.py:
1096          Correctly chain up to parent __init__ for MultiTasks
1097
10982009-05-24  Thomas Vander Stichele  <thomas at apestaart dot org>
1099
1100        * morituri/test/capital.1.toc (added):
1101        * morituri/test/capital.2.toc (added):
1102          Add two .toc's for two sessions of a 2 session disc
1103        * morituri/image/table.py:
1104          Add a merge method to merge in a second session.
1105        * morituri/test/Makefile.am:
1106        * morituri/test/test_image_toc.py:
1107          Add a test for merging the Das Capital sessions, gets
1108          the CDDB disc id right.
1109
11102009-05-24  Thomas Vander Stichele  <thomas at apestaart dot org>
1111
1112        * morituri/common/common.py:
1113          Add a persisted cache so that we can store pickles on discs.
1114          Automatically delete them if the class version is newer than
1115          the object's.
1116        * morituri/rip/cd.py:
1117          Use it.
1118
11192009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1120
1121        * morituri/image/table.py:
1122          Add a version ivar to help with versioning pickled objects.
1123
11242009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1125
1126        * morituri/program/cdparanoia.py:
1127          Add copy and test CRC's to object.
1128
11292009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1130
1131        * morituri/common/Makefile.am:
1132        * morituri/common/drive.py (added):
1133          Add drive module.
1134
11352009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1136
1137        * morituri/program/cdparanoia.py:
1138        * morituri/program/cdrdao.py:
1139        * morituri/rip/cd.py:
1140        * morituri/rip/offset.py:
1141          Add device argument to ripping/scanning tasks.
1142
11432009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1144
1145        * morituri/common/accurip.py:
1146        * morituri/image/image.py:
1147        * morituri/test/Makefile.am:
1148        * morituri/test/test_image_image.py:
1149        * morituri/test/test_common_accurip.py (added):
1150          Move accuraterip stuff to the accurip module.
1151          Move/create new test file.
1152
11532009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1154
1155        * morituri/rip/Makefile.am:
1156        * morituri/rip/main.py:
1157        * morituri/rip/drive.py (added):
1158          Add 'rip drive list' command to list available drives.
1159        * morituri/common/accurip.py:
1160          Add force.
1161        * morituri/rip/cd.py:
1162          Add --output-directory argument.
1163
11642009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1165
1166        * morituri/common/Makefile.am:
1167        * morituri/rip/cd.py:
1168        * morituri/common/accurip.py (added):
1169          Add a module for handling a cache of AccurateRip results.
1170          Use it.
1171
11722009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1173
1174        * morituri/rip/Makefile.am:
1175        * morituri/rip/main.py:
1176        * morituri/rip/cd.py (added):
1177          Add second command, 'rip cd rip' before factoring out functionality.
1178
11792009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1180
1181        * morituri/rip/Makefile.am:
1182        * morituri/rip/main.py:
1183        * morituri/rip/offset.py (added):
1184          Add first command, 'rip offset find'
1185
11862009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1187
1188        * Makefile.am:
1189        * morituri/test/Makefile.am:
1190          Make distcheck work.
1191
11922009-05-22  Thomas Vander Stichele  <thomas at apestaart dot org>
1193
1194        * morituri/common/checksum.py:
1195          More pychecker fixes.
1196
11972009-05-22  Thomas Vander Stichele  <thomas at apestaart dot org>
1198
1199        * morituri/common/common.py:
1200        * morituri/common/renamer.py:
1201          Pychecker fixes.
1202
12032009-05-22  Thomas Vander Stichele  <thomas at apestaart dot org>
1204
1205        * RELEASE:
1206        * misc/pycheckerrc:
1207        * misc/show-coverage.py:
1208        * morituri/image/Makefile.am:
1209        * morituri/program/Makefile.am:
1210        * RELEASE (added):
1211        * morituri/image/Makefile.am (added):
1212        * morituri/program/Makefile.am (added):
1213        * misc/show-coverage.py (added):
1214        * misc/pycheckerrc (added):
1215          more additions
1216
12172009-05-22  Thomas Vander Stichele  <thomas at apestaart dot org>
1218
1219        * AUTHORS:
1220        * Makefile.am:
1221        * NEWS:
1222        * TODO:
1223        * autogen.sh:
1224        * configure.ac:
1225        * examples/ARcalibrate.py:
1226        * misc/Makefile.am:
1227        * misc/morituri-uninstalled:
1228        * morituri.spec.in:
1229        * morituri/Makefile.am:
1230        * morituri/common/Makefile.am:
1231        * morituri/common/logcommand.py:
1232        * morituri/extern/Makefile.am:
1233        * morituri/rip/Makefile.am:
1234        * morituri/rip/__init__.py:
1235        * morituri/rip/main.py:
1236        * morituri/test/Makefile:
1237        * morituri/test/Makefile.am:
1238        * configure.ac (added):
1239        * AUTHORS (added):
1240        * morituri.spec.in (added):
1241        * Makefile.am (added):
1242        * morituri/test/Makefile.am (added):
1243        * morituri/extern/Makefile.am (added):
1244        * morituri/common/logcommand.py (added):
1245        * morituri/common/Makefile.am (added):
1246        * morituri/Makefile.am (added):
1247        * morituri/rip (added):
1248        * morituri/rip/__init__.py (added):
1249        * morituri/rip/Makefile.am (added):
1250        * morituri/rip/main.py (added):
1251        * misc/Makefile.am (added):
1252        * misc/morituri-uninstalled (added):
1253        * autogen.sh (added):
1254        * NEWS (added):
1255          Start autotooling.  Add a command-line application.
1256
12572009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1258
1259        * morituri/program/cdrdao.py:
1260          read all sessions by reading session 9.
1261        * morituri/image/toc.py:
1262          Parse ZERO statements properly.
1263          Also set absolute offsets when we know them from the .toc file.
1264          Properly set audio flag on tracks.
1265          FIXME: probably doesn't work if the .toc does not have lengths.
1266        * morituri/image/table.py:
1267          Add some debug to cddb disc id calculation.
1268          Fix absolutize function, it was going one index too far.
1269          raise ValueError when overriding .absolute with a wrong value.
1270        * examples/readdisc.py:
1271          Show CDDB disc id at the start.
1272          Assert when toc and table have different disc id's (to be fixed)
1273        * morituri/test/test_image_cue.py:
1274          Update for having the table already with absolute values.
1275        * morituri/test/test_image_toc.py:
1276          Add Ladyhawke CDDB test, it has a data track.
1277
12782009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1279
1280        * examples/readdisc.py:
1281          Move constants to common
1282
12832009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1284
1285        * examples/readdisc.py:
1286        * examples/readhtoa.py:
1287        * examples/readtoc.py:
1288          Rename IndexTable to Table.
1289
12902009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1291
1292        * morituri/image/cue.py:
1293        * morituri/image/image.py:
1294        * morituri/image/table.py:
1295        * morituri/image/toc.py:
1296        * morituri/program/cdparanoia.py:
1297        * morituri/program/cdrdao.py:
1298        * morituri/test/test_image_cue.py:
1299        * morituri/test/test_image_table.py:
1300          Rename IndexTable to Table.
1301
13022009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1303
1304        * morituri/image/cue.py:
1305        * morituri/image/image.py:
1306        * morituri/image/table.py:
1307        * morituri/image/toc.py:
1308        * morituri/program/cdrdao.py:
1309        * morituri/test/test_image_cue.py:
1310        * morituri/test/test_image_table.py:
1311          Rename ITTrack to Track.
1312
13132009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1314
1315        * morituri/common/common.py:
1316        * morituri/image/cue.py:
1317          Use FRAMES_PER_SECOND where appropriate.
1318
13192009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1320
1321        * morituri/common/checksum.py:
1322        * morituri/common/common.py:
1323        * morituri/image/image.py:
1324        * morituri/image/table.py:
1325        * morituri/program/cdparanoia.py:
1326          Move constants to common
1327
13282009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1329
1330        * examples/readdisc.py:
1331          Get our metadata only from the toc.
1332
13332009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1334
1335        * examples/readdisc.py:
1336          Also work for discs without htoa.
1337
13382009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1339
1340        * examples/readdisc.py:
1341          Write .m3u file.
1342
13432009-05-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1344
1345        * examples/readdisc.py:
1346          Rip HTOA as well.  Add disc-template parameter.
1347
13482009-05-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1349
1350        * morituri/image/table.py:
1351          Fix a subtle bug in our CDDB disc id calculation.
1352          The length of the audio should be calculated as the delta
1353          between leadout and start already converted (and truncated)
1354          to seconds.
1355        * morituri/test/bloc.cue:
1356        * morituri/test/test_image_toc.py:
1357          Fix up tests for this.
1358
13592009-05-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1360
1361        * morituri/program/cdparanoia.py:
1362          Fix up track counting so HTOA can be ripped again.
1363        * examples/readhtoa.py:
1364          Fix up example so it works again, tested on Silent Alarm.
1365
13662009-05-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1367
1368        * morituri/test/test_image_toc.py:
1369        * morituri/test/bloc.cue (added):
1370          Add an expected .cue file for the bloc party toc.
1371
13722009-05-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1373
1374        * morituri/image/toc.py:
1375          Calculate the leadout from the sum of the track lengths.
1376        * morituri/test/breeders.cue:
1377        * morituri/test/cure.cue:
1378          Adapt expected results for DISCID.
1379        * morituri/image/table.py:
1380          Add an assert for hasTOC() when doing .cue()
1381        * morituri/test/test_image_toc.py:
1382        * morituri/test/test_image_cue.py:
1383          absolutize before cue()
1384
13852009-05-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1386
1387        * morituri/image/table.py:
1388          Only add DISCID if our table is a TOC (which it isn't
1389          with our current .toc file parsing)
1390        * morituri/test/test_image_cue.py:
1391        * morituri/test/test_image_toc.py:
1392          Fix up tests; testsuite passes again.
1393
13942009-05-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1395
1396        * morituri/image/toc.py:
1397          Add some debugging.
1398
13992009-05-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1400
1401        * morituri/image/table.py:
1402          Update .cue writing:
1403          - customise program name
1404          - add DISCID
1405          - use counter for FILE lines
1406          - put FILE line before TRACK if track does not have INDEX 00
1407          Take counter into account for setFile
1408          Fix off-by-one in setFile
1409        * examples/readdisc.py:
1410          Add --track-template.
1411          Pass counter to setFile.
1412
14132009-05-14  Thomas Vander Stichele  <thomas at apestaart dot org>
1414
1415        * morituri/image/table.py:
1416          Add CDText writing to .cue() method.
1417        * morituri/image/toc.py:
1418          Add CDText parsing.
1419        * morituri/test/test_image_toc.py:
1420        * morituri/test/breeders.cue (added):
1421          Add a test for cue'ing the breeders' toc.
1422
14232009-05-14  Thomas Vander Stichele  <thomas at apestaart dot org>
1424
1425        * morituri/image/table.py:
1426        * morituri/image/toc.py:
1427          Add parsing of ISRC codes.
1428          Add first part of CDTEXT stuff.
1429        * morituri/test/test_image_toc.py:
1430          Add test for converting .toc to .cue
1431        * morituri/test/cure.cue
1432          Add reference for converted cure.toc
1433
14342009-05-10  Thomas Vander Stichele  <thomas at apestaart dot org>
1435
1436        * examples/readhtoa.py:
1437          Fix example.
1438
14392009-05-07  Thomas Vander Stichele  <thomas at apestaart dot org>
1440
1441        * morituri/image/table.py:
1442        * morituri/test/test_image_table.py:
1443          Correctly calculate MusicBrainz disc id for enhanced cd's.
1444
14452009-05-07  Thomas Vander Stichele  <thomas at apestaart dot org>
1446
1447        * morituri/common/task.py:
1448          Log on runners too.
1449        * morituri/program/cdrdao.py:
1450          Abort if output has ERROR by killing and setting an exception.
1451
14522009-05-07  Thomas Vander Stichele  <thomas at apestaart dot org>
1453
1454        * examples/readdisc.py:
1455          filter out slashes when deciding on file names.
1456
14572009-05-07  Thomas Vander Stichele  <thomas at apestaart dot org>
1458
1459        * morituri/common/task.py:
1460        * morituri/image/image.py:
1461          Remove prints.  Describe tasks.
1462
14632009-05-07  Thomas Vander Stichele  <thomas at apestaart dot org>
1464
1465        * morituri/common/task.py:
1466          Add an exception ivar for tasks to set an exception on while
1467          running.  Make SyncRunner raise it during done()
1468        * morituri/program/cdparanoia.py:
1469          Set an exception if the ripped file doesn't match the expected size
1470          (for example when disc is full)
1471
14722009-05-07  Thomas Vander Stichele  <thomas at apestaart dot org>
1473
1474        * morituri/common/common.py:
1475          Set the object when we don't persist.
1476        * examples/readdisc.py:
1477          Small fixes.
1478
14792009-05-06  Thomas Vander Stichele  <thomas at apestaart dot org>
1480
1481        * examples/readdisc.py:
1482          Fix up cue file reading.
1483
14842009-05-06  Thomas Vander Stichele  <thomas at apestaart dot org>
1485
1486        * examples/readdisc.py:
1487          Add musicbrainz code for disc naming.
1488
14892009-05-06  Thomas Vander Stichele  <thomas at apestaart dot org>
1490
1491        * morituri/image/table.py:
1492        * morituri/image/toc.py:
1493          Delete old code.
1494
14952009-05-06  Thomas Vander Stichele  <thomas at apestaart dot org>
1496
1497        * morituri/image/toc.py:
1498        * morituri/test/test_image_toc.py:
1499        * morituri/test/test_program_cdrdao.py:
1500          After careful vetting, fix up the expected values after toc parsing.
1501          Fix (untested) INDEX handling.  Fix handling of START.
1502
15032009-05-05  Thomas Vander Stichele  <thomas at apestaart dot org>
1504
1505        * morituri/image/table.py:
1506        * morituri/test/test_image_table.py:
1507          Implement MusicBrainz disc id.  Works for audio-only discs,
1508          have to figure out why it fails for an Enhanced CD like the
1509          Ladyhawke one.
1510
15112009-05-05  Thomas Vander Stichele  <thomas at apestaart dot org>
1512
1513        * morituri/image/table.py:
1514          Add logging.
1515          Add methods to clear a table of files, and to absolutize indexes
1516          as long as the source is the same file, and to set a File on a
1517          given index, adjusting all following indexes that match the
1518          duration, and check if the IndexTable has all information for a TOC.
1519        * morituri/image/toc.py:
1520          Add logging.
1521          Use a counter for the source.
1522          Fix up index offset calculation.
1523        * morituri/program/cdrdao.py:
1524          Use a real IndexTable as the result, instead of a TocFile.
1525        * morituri/image/cue.py:
1526          Use a real IndexTable to store tracks.
1527        * morituri/test/test_image_toc.py:
1528          The toc file now has a table which has the tracks.
1529          Fix the tests to adjust for wrong index calculations.
1530        * morituri/test/test_image_cue.py:
1531        * morituri/test/test_image_image.py:
1532        * morituri/image/image.py:
1533          The cue file now has a table which has the tracks.
1534        * morituri/test/test_image_table.py:
1535          Add assertions to make sure when the table can serve as a TOC.
1536        * examples/readdisc.py:
1537          Adjust for changes.  Fix up to include AccurateRip results.
1538          First time we can do a complete normal rip including verifying
1539          against AccurateRip results!
1540
15412009-05-05  Thomas Vander Stichele  <thomas at apestaart dot org>
1542
1543        * examples/readdisc.py:
1544        * morituri/image/table.py:
1545        * morituri/test/test_image_table.py:
1546          Fix up and deprecate stuff.
1547
15482009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1549
1550        * examples/movecue.py:
1551        * examples/readcue.py:
1552        * morituri/image/cue.py:
1553        * morituri/image/image.py:
1554        * morituri/image/toc.py:
1555        * morituri/program/cdrdao.py:
1556        * morituri/test/test_image_cue.py:
1557        * morituri/test/test_image_toc.py:
1558          Cue -> CueFile
1559          TOC -> TocFile
1560
15612009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1562
1563        * examples/readdisc.py (added):
1564          Add an example to read a whole disc.  Doesn't work yet.
1565
15662009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1567
1568        * examples/readhtoa.py:
1569          Fix up readhtoa example.  Add offset option.
1570
15712009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1572
1573        * examples/ARcalibrate.py:
1574        * examples/readhtoa.py:
1575        * examples/readtoc.py:
1576        * morituri/program/cdrdao.py:
1577          Rename ReadTOCTask to ReadIndexTableTask.
1578          Rename ReadTableTask to ReadTOCTask.
1579
15802009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1581
1582        * morituri/program/cdrdao.py:
1583          Convert ReadTableTask to a CDRDAOTask subclass.
1584        * examples/ARcalibrate.py:
1585        * morituri/program/cdparanoia.py:
1586          Adapt.
1587
15882009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1589
1590        * morituri/program/cdrdao.py:
1591          Fix up index scanning's progress report.
1592          Add some debugging.
1593
15942009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1595
1596        * morituri/program/cdrdao.py:
1597        * morituri/test/test_program_cdrdao.py:
1598          Fix up tests.  Use an IndexTable.
1599
16002009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1601
1602        * morituri/program/cdrdao.py:
1603          Massage out a base class for running cdrdao.
1604
16052009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1606
1607        * morituri/program/cdrdao.py:
1608        * morituri/test/test_program_cdrdao.py (added):
1609          Split out the parser from the task.  Test the parser.
1610
16112009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1612
1613        * morituri/image/cue.py:
1614        * morituri/image/image.py:
1615        * morituri/image/table.py:
1616        * morituri/program/cdparanoia.py:
1617        * morituri/test/test_image_cue.py:
1618          Move to using a shared IndexTable for everything.
1619          Sadly mixed with a MultiTask rename.
1620
16212009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1622
1623        * morituri/common/checksum.py:
1624          Update debugging.  Add repr.
1625
16262009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1627
1628        * examples/ARcue.py:
1629          Handle case where we have no matching response.
1630
16312009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1632
1633        * morituri/common/task.py:
1634          Distinguish more clearly between MultiSeparateTask and
1635          MultiCombinedTask.
1636
16372009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1638
1639        * morituri/image/cue.py:
1640        * morituri/test/test_image_cue.py:
1641          Add dumping of .cue files.
1642
16432009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1644
1645        * morituri/program/cdparanoia.py:
1646          Use a temporary file to rip to.
1647
16482009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1649
1650        * examples/readtrack.py:
1651          Allow specifying the track to save.
1652
16532009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1654
1655        * morituri/common/task.py:
1656          Make SyncRunner clear previous description/progress task by
1657          tracking longest output given up to now.
1658
16592009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1660
1661        * morituri/program/cdparanoia.py:
1662          Add a task to read and verify a track.
1663        * examples/readtrack.py:
1664          Use it to clean up code.
1665        * morituri/common/task.py:
1666          describe a MultiTask better.
1667
1668
16692009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1670
1671        * morituri/common/common.py:
1672          Create a Persister class to wrap a possible pickle path.
1673        * examples/trm.py:
1674          Use it.
1675
16762009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1677
1678        * morituri/program/cdparanoia.py:
1679          Add table to __init__, so we can correctly calculate cdparanoia's
1680          strange ripping regions.
1681        * examples/ARcalibrate.py:
1682          When we found a positive match on a first track, match all the other
1683          tracks too for confirmation.
1684
16852009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1686
1687        * morituri/common/taskgtk.py:
1688          Bug fix.
1689
16902009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1691
1692        * morituri/common/task.py:
1693        * morituri/common/taskgtk.py:
1694          Split off GtkProgressRunner in separate module to not import gtk
1695          everywhere.
1696        * examples/ARcalibrate.py:
1697        * examples/ARcue.py:
1698        * examples/gtkchecksum.py:
1699        * examples/trm.py:
1700          Adapt.
1701
17022009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1703
1704        * examples/ARcalibrate.py (added):
1705          Add an example that calculates the read offset of your drive
1706          using AccurateRip.
1707
17082009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1709
1710        * morituri/program/cdrdao.py:
1711          Add a task to read the Table.
1712
17132009-05-02  Thomas Vander Stichele  <thomas at apestaart dot org>
1714
1715        * morituri/common/task.py:
1716        * morituri/image/image.py:
1717          Add some debugging.
1718
17192009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1720
1721        * examples/readhtoa.py (added):
1722          Add an example that detects and rips the Hidden Track One Audio.
1723
17242009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1725
1726        * examples/readtoc.py:
1727        * morituri/program/cdrdao.py (added):
1728          Move the ReadTocTask to the new cdrdao module.
1729
17302009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1731
1732        * examples/readtrack.py:
1733        * morituri/program/cdparanoia.py:
1734          Move ReadTrackTask to cdparanoia module.
1735
17362009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1737
1738        * examples/readtrack.py (added):
1739          Add an example that reads a track using cdparanoia.
1740
17412009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1742
1743        * morituri/test/cdparanoia.progress (added):
1744        * morituri/test/test_program_cdparanoia.py (added):
1745        * morituri/program/__init__.py (added):
1746        * morituri/program/cdparanoia.py (added):
1747          Add a module to wrap cdparanoia.  Add a test for parsing
1748          the progress report output.
1749
17502009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1751
1752        * morituri/common/checksum.py:
1753          Debug fixes.
1754
17552009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1756
1757        * morituri/common/common.py:
1758          Create some common functions to parse MSF and back.
1759        * morituri/image/toc.py:
1760          Use it here.
1761
17622009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1763
1764        * examples/trm.py:
1765          Allow loading and saving fingerprints from a pickle.
1766
17672009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1768
1769        * morituri/image/toc.py:
1770        * morituri/test/test_image_toc.py:
1771        * morituri/test/bloc.toc (added):
1772          Fix up .toc parsing to correct index 0 behaviour.
1773          Add Bloc Party's Silent Alarm .toc file to test HTOA.
1774
17752009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1776
1777        * examples/readtoc.py:
1778          Update to work on my desktop.
1779
17802009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1781
1782        * morituri/common/task.py:
1783          Make task subclass log.Log
1784
17852009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1786
1787        * morituri/common/log.py:
1788          Add external log module and use it.
1789
17902009-04-29  Thomas Vander Stichele  <thomas at apestaart dot org>
1791
1792        * morituri/test/cure.toc (added):
1793          Add an example .toc file for the test.
1794
17952009-04-28  Thomas Vander Stichele  <thomas at apestaart dot org>
1796
1797        * examples/readtoc.py:
1798          Extract and print TOC.
1799
18002009-04-28  Thomas Vander Stichele  <thomas at apestaart dot org>
1801
1802        * morituri/test/test_image_toc.py (added):
1803        * morituri/image/toc.py (added):
1804          Add first stab at .toc parsing.
1805
18062009-04-28  Thomas Vander Stichele  <thomas at apestaart dot org>
1807
1808        * examples/readtoc.py:
1809          get errors from output too.
1810
18112009-04-28  Thomas Vander Stichele  <thomas at apestaart dot org>
1812
1813        * morituri/image/image.py:
1814        * morituri/image/table.py:
1815        * morituri/test/test_image_image.py:
1816        * morituri/test/test_image_table.py:
1817          Rename toc.TOC to table.Table
1818
18192009-04-28  Thomas Vander Stichele  <thomas at apestaart dot org>
1820
1821        * morituri/test/test_image_table.py (added):
1822        * morituri/image/table.py (added):
1823        * morituri/test/test_image_toc.py (deleted):
1824        * morituri/image/toc.py (deleted):
1825          Move files around in preparation for the .toc file parsing.
1826
18272009-04-26  Thomas Vander Stichele  <thomas at apestaart dot org>
1828
1829        * examples/movecue.py (added):
1830          Add a script that moves a .cue file in its corresponding directory.
1831
18322009-04-26  Thomas Vander Stichele  <thomas at apestaart dot org>
1833
1834        * morituri/test/kanye.cue (added):
1835          Add a cue test with mixed mode.
1836        * morituri/image/cue.py:
1837        * morituri/test/test_image_cue.py:
1838          Handle it properly.
1839
18402009-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>
1841
1842        * morituri/image/cue.py:
1843          getRealPath should be here, it doesn't need anything outside
1844          the .cue file
1845        * morituri/image/image.py:
1846          Proxy it here.
1847
18482009-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>
1849
1850        * morituri/common/checksum.py:
1851          Add some debugging.
1852        * morituri/test/test_image_image.py:
1853          Run less verbose.
1854
18552009-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>
1856
1857        * morituri/common/task.py:
1858          Allow a SyncRunner to be constructed with verbose too.
1859          Separate a 'running' verbose mode from that.
1860          Fixes unwanted test output.
1861        * morituri/test/test_image_image.py:
1862          Run without verbosity.
1863
18642009-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>
1865
1866        * morituri/test/test_image_image.py:
1867          Fix name.
1868
18692009-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>
1870
1871        * morituri/test/test_common_renamer.py (added):
1872        * morituri/common/renamer.py (added):
1873          Add a way of doing transactional file renames, as well as their
1874          metafile updates.
1875
18762009-04-21  Thomas Vander Stichele  <thomas at apestaart dot org>
1877
1878        * morituri/common/task.py:
1879          Add a 'described' method so listeners can get proper notification
1880          of description changes, and update their description in between
1881          progress changes.
1882          Add a MultiCombinedTask that reports on progress over all tasks
1883          combined.
1884        * examples/trm.py:
1885          Add a playlist option to the example.  Still needs to store results
1886          to pickles, preferably after each completed task.
1887        * morituri/common/checksum.py:
1888          Add audioconvert to make sure we can trm ogg files.
1889
18902009-04-20  Thomas Vander Stichele  <thomas at apestaart dot org>
1891
1892        * morituri/common/task.py:
1893        * morituri/image/image.py:
1894          Move MultiTask to the task module.
1895
18962009-04-20  Thomas Vander Stichele  <thomas at apestaart dot org>
1897
1898        * morituri/common/checksum.py:
1899          Add a task to calculate a trm fingerprint.
1900        * examples/trm.py (added):
1901          Add an example.
1902          Strangely enough it starts burstily, doing 10% directly, halting,
1903          then progressing quickly,
1904
19052009-04-20  Thomas Vander Stichele  <thomas at apestaart dot org>
1906
1907        * examples/ARcue.py:
1908          Fix a bug in the gtk example.
1909
19102009-04-20  Thomas Vander Stichele  <thomas at apestaart dot org>
1911
1912        * examples/readtoc.py:
1913          Read the toc using cdrdao.  Now sets progress based on which
1914          frame it is on.
1915
19162009-04-20  Thomas Vander Stichele  <thomas at apestaart dot org>
1917
1918        * morituri/common/task.py:
1919          Add a __main__ example using DummyTask.
1920
19212009-04-19  Thomas Vander Stichele  <thomas at apestaart dot org>
1922
1923        * morituri/common/task.py:
1924          Make sure we also show progress when it's 0%, at the start.
1925
19262009-04-19  Thomas Vander Stichele  <thomas at apestaart dot org>
1927
1928        * morituri/image/cue.py:
1929          Use names for matches in regexps.
1930
19312009-04-19  Thomas Vander Stichele  <thomas at apestaart dot org>
1932
1933        * examples/readtoc.py (added):
1934          Add an example to read the TOC, not finished yet.
1935
19362009-04-19  Thomas Vander Stichele  <thomas at apestaart dot org>
1937
1938        * morituri/extern (added):
1939        * morituri/extern/__init__.py (added):
1940        * morituri/extern/asyncsub.py (added):
1941          Add extern module; add asynchronous subprocess Popen from
1942          http://code.activestate.com/recipes/440554/
1943
19442009-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1945
1946        * examples/gtkchecksum.py:
1947        * morituri/common/checksum.py:
1948          Final crc->checksum fixes.
1949
19502009-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1951
1952        * examples/ARcue.py:
1953        * morituri/common/checksum.py:
1954        * morituri/image/image.py:
1955        * morituri/image/toc.py:
1956        * examples/gtkchecksum.py (added):
1957        * examples/gtkcrc.py (deleted):
1958          More crc->checksum changes.
1959
19602009-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1961
1962        * examples/ARcue.py:
1963        * morituri/common/checksum.py:
1964        * morituri/image/image.py:
1965        * morituri/test/test_image_image.py:
1966          Change crc to checksum everywhere.
1967
19682009-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1969
1970        * morituri/image/image.py:
1971        * morituri/image/toc.py:
1972        * morituri/common/checksum.py (added):
1973        * morituri/common/crc.py (deleted):
1974          Rename crc to checksum, because AccurateRip checksums are not CRC's.
1975
19762009-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1977
1978        * examples/ARcue.py:
1979        * morituri/image/image.py:
1980        * morituri/test/test_image_image.py:
1981          Make everything use TOC for the id's.
1982
19832009-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1984
1985        * morituri/image/image.py:
1986          Refactor to use TOC class.
1987        * morituri/image/toc.py:
1988          Fully document.
1989
19902009-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1991
1992        * morituri/test/test_image_toc.py (added):
1993        * morituri/image/toc.py (added):
1994          Add an abstraction for a TOC.
1995          Take data tracks into account correctly for CDDB and AccurateRip
1996          disc ID's.
1997
19982009-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1999
2000        * morituri/image/image.py:
2001        * morituri/test/test_image_image.py:
2002          AccurateRip binary files actually contain multiple responses, so
2003          parse all of them.
2004        * examples/ARcue.py:
2005          Handle case of not having a response, and having multiple responses.
2006
20072009-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>
2008
2009        * morituri/common/crc.py:
2010          Actually return the CRC when checking frame 5.
2011        * morituri/test/test_image_image.py:
2012          Update test for this fix.
2013
20142009-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
2015
2016        * morituri/image/image.py:
2017          Also look for audio file basename relative to cue file.
2018
20192009-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
2020
2021        * examples/ARcue.py:
2022          Make output a bit nicer, mentioning whether tracks were
2023          accurately ripped.
2024
20252009-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
2026
2027        * morituri/image/image.py:
2028          Add an object to parse the response of AccurateRip.
2029        * morituri/test/test_image_image.py:
2030        * morituri/test/dBAR-011-0010e284-009228a3-9809ff0b.bin (added):
2031          Add a test for it, based on my Kings Of Leon CD.
2032
20332009-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
2034
2035        * morituri/image/image.py:
2036          Add the 150 frames for the leadin only to the CDDB calculation.
2037          Add methods to calculate AccurateRip id's and URL.
2038        * morituri/test/test_image_image.py:
2039          Add tests for it.
2040        * examples/ARcue.py:
2041          Show AccurateRip URL.
2042
20432009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
2044
2045        * examples/ARcue.py:
2046        * morituri/common/crc.py:
2047        * morituri/image/image.py:
2048        * morituri/test/test_image_image.py:
2049          Calculate CDDB disc id.
2050          Tested on my Kings Of Leon CD.
2051
20522009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
2053
2054        * examples/ARcue.py:
2055        * morituri/image/image.py:
2056        * morituri/test/test_image_image.py:
2057          Add a task to verify a disk image, which also calculates
2058          track lengths for tracks the cue file doesn't know the length of.
2059
20602009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
2061
2062        * examples/ARcue.py:
2063          Add option to run either command-line or gtk.
2064
20652009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
2066
2067        * morituri/image/image.py:
2068          Create a MultiTask base class, and make AudioRipCRCTask
2069          use it.
2070
20712009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
2072
2073        * morituri/image/image.py:
2074        * morituri/test/test_image_image.py:
2075          Add a task for calculating frame length of an audio file.
2076          Add a test for it.
2077
20782009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
2079
2080        * morituri/common/task.py:
2081          Schedule the start from the main loop, otherwise the
2082          task might complete before we're in the main loop,
2083          and then the loop.quit() doesn't work.
2084
20852009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
2086
2087        * examples/ARcue.py:
2088        * examples/gtkcrc.py:
2089          Rework both examples to look more similar.
2090
20912009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
2092
2093        * examples/gtkcrc.py:
2094        * morituri/common/task.py:
2095          Move the gtk-based progress bar to task.
2096
20972009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
2098
2099        * examples/gtkcrc.py:
2100        * morituri/common/crc.py:
2101        * morituri/common/task.py:
2102        * morituri/image/image.py:
2103          Add a 'schedule' call to the TaskRunner class, so that we can
2104          abstract things like gobject.timeout_add and reactor.callLater
2105          Pass the runner to the task in Task.start() so a task can call
2106          schedule.
2107
21082009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
2109
2110        * morituri/common/task.py:
2111          Update the docs.
2112
21132009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
2114
2115        * morituri/test/test_image_image.py (added):
2116          Add tests for AudioRip CRC'ing images.
2117
21182009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2119
2120        * morituri/test/track-separate.cue (added):
2121        * morituri/test/track.flac (added):
2122        * morituri/test/Makefile (added):
2123        * morituri/test/track-single.cue (added):
2124          Add a simple 10 frame flac file, and two .cue files
2125          using it.
2126
21272009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2128
2129        * morituri/image/image.py:
2130          If paths are relative, make them relative to cue file.
2131
21322009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2133
2134        * morituri/common/task.py:
2135          clear with whitespace.
2136
21372009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2138
2139        * examples/ARcue.py:
2140        * morituri/common/task.py:
2141        * morituri/image/image.py (added):
2142          Add an object for handling an Image based on a .cue file.
2143          Create a Task for CRC'ing the whole Image.
2144          Make the example use this new task instead.
2145
21462009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2147
2148        * examples/gtkcrc.py:
2149        * morituri/common/task.py:
2150          Add task object to listener interface methods.
2151
21522009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2153
2154        * morituri/common/task.py:
2155          Move methods around.
2156
21572009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2158
2159        * examples/ARcue.py:
2160        * examples/gtkcrc.py:
2161        * morituri/common/crc.py:
2162        * morituri/common/task.py:
2163          Split out generic task/runner from CRC tasks.
2164
21652009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2166
2167        * morituri/common/crc.py (added):
2168          Copy from task.py before splitting.
2169
21702009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2171
2172        * examples/gtkcrc.py:
2173        * morituri/common/task.py:
2174          Don't block the main loop by infinitely scheduling
2175          set_state.
2176
21772009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2178
2179        * examples/ARcue.py:
2180        * examples/gtkcrc.py:
2181        * morituri/common/task.py:
2182          Make a real Task interface and use it.
2183          Make runners reusable for multiple tasks.
2184          gtkcrc.py seems to be blocking updates however.
2185
21862009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2187
2188        * morituri/test (added):
2189        * morituri/test/test_image_cue.py (added):
2190        * morituri/test/kings-single.cue (added):
2191        * morituri/test/__init__.py (added):
2192        * morituri/test/kings-separate.cue (added):
2193          Add test suite.  Add Kings Of Leon cue files.
2194
21952009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2196
2197        * examples/ARcue.py:
2198          Error out when the file doesn't exist.
2199        * morituri/common/task.py:
2200          Drag the lake.
2201          Clean up prints.
2202
22032009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2204
2205        * morituri/common/task.py:
2206          Remove queue to avoid race.
2207          Remove prints.
2208          Clean up debug.
2209          Update progress after handling buffers.
2210
22112009-04-05  Thomas Vander Stichele  <thomas at apestaart dot org>
2212
2213        * morituri/common/task.py:
2214          Introduce constants for FRAMES_PER_DISC_FRAME
2215        * examples/ARcue.py:
2216          Use the constant.
2217          Get the CRC right for the last track too.
2218
22192009-03-26  Thomas Vander Stichele  <thomas at apestaart dot org>
2220
2221        * examples/ARcue.py:
2222        * morituri/common/task.py:
2223          Use an adapter to assemble CD frames.
2224          Take into account special rules for first and last track.
2225          Mention some bugs.
2226          Remember to drag the lake from the task.
2227
22282009-03-22  Thomas Vander Stichele  <thomas at apestaart dot org>
2229
2230        * examples/ARcue.py:
2231        * morituri/common/task.py:
2232          First version that seems to get some AccurateRip checksums right.
2233
22342009-02-28  Thomas Vander Stichele  <thomas at apestaart dot org>
2235
2236        * morituri/image/cue.py:
2237          publicize CueFile.tracks
2238          Add a method to get track lengths
2239        * examples/readcue.py:
2240          Use it.
2241
22422009-02-28  Thomas Vander Stichele  <thomas at apestaart dot org>
2243
2244        * morituri/common/task.py (added):
2245          Add a task abstraction.
2246
Note: See TracBrowser for help on using the repository browser.