source: trunk/ChangeLog @ 439

Revision 439, 64.5 KB checked in by thomas, 2 years ago (diff)
  • morituri/common/encode.py: Alac does not have merge_tags. Fixes #15.
Line 
12011-05-19  Thomas Vander Stichele  <thomas at apestaart dot org>
2
3        * morituri/common/encode.py:
4          Alac does not have merge_tags.  Fixes #15.
5
62011-05-19  Thomas Vander Stichele  <thomas at apestaart dot org>
7
8        * morituri/program/cdparanoia.py:
9        * morituri/common/encode.py:
10        * morituri/common/program.py:
11        * morituri/rip/cd.py:
12          Add action and what args to describe task better.
13
142011-05-19  Thomas Vander Stichele  <thomas at apestaart dot org>
15
16        * morituri/common/task.py:
17          Add more debug.
18
192011-05-19  Thomas Vander Stichele  <thomas at apestaart dot org>
20
21        * morituri/rip/main.py:
22          More debug info: args, version, revision.
23
242011-05-19  Thomas Vander Stichele  <thomas at apestaart dot org>
25
26        * morituri/configure/configure.py (svn:keywords):
27          Expand revision.
28        * morituri/configure/configure.py:
29          Set it on the revision local.
30
312011-04-08  Thomas Vander Stichele  <thomas at apestaart dot org>
32
33        * morituri/common/encode.py:
34          wavenc does not have merge_tags, it seems.
35          So don't call an element a tagger, don't merge tags if there is
36          no tagger, and complain if there is no merge_tags when we think
37          there should be.
38
392011-03-23  Thomas Vander Stichele  <thomas at apestaart dot org>
40
41        * morituri/program/cdparanoia.py:
42          cdparanoia can hang indefinitely on scsi read errors.
43          For example, on some drives, when trying negative offsets.
44          Notice them, count them, and fail after 100.
45        * morituri/test/test_program_cdparanoia.py:
46        * morituri/test/cdparanoia.progress.error (added):
47          Add a test for this output.
48
492011-03-22  Thomas Vander Stichele  <thomas at apestaart dot org>
50
51        * morituri/common/program.py:
52        * morituri/rip/offset.py:
53          When finding the offset, also load and possibly unmount, resolving
54          to the real path for the device.
55
562011-03-20  Thomas Vander Stichele  <thomas at apestaart dot org>
57
58        * morituri/common/encode.py:
59          Debug failing to write tags better.  See #60.
60
612011-03-20  Thomas Vander Stichele  <thomas at apestaart dot org>
62
63        * morituri/program/cdparanoia.py:
64          Extend FileSizeError with an extra message.
65        * morituri/rip/offset.py:
66          Print a reasonable warning when we cannot rip with a certain offset.
67          See #57.
68
692011-03-17  Thomas Vander Stichele  <thomas at apestaart dot org>
70
71        * morituri/rip/drive.py:
72          Fix typo.  Fixes #59.
73
742011-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>
75
76        * morituri/common/checksum.py:
77          Create a GstException to wrap a Gst.GError.
78          Create a base GstPipelineTask class.
79          Use it in Checksum and TRM tasks.
80          Raise and don't proceed to call .paused() when a GstError happens.
81          Should help debug https://bugs.launchpad.net/bugs/735053
82        * morituri/test/test_common_checksum.py:
83          Adapt test.
84
852011-01-09  Thomas Vander Stichele  <thomas at apestaart dot org>
86
87        patch by: Ross Burton
88
89        * morituri/common/program.py:
90          On compilation albums the album artist is different to the artist.
91          If this is the case, morituri should write both tags.
92          Fixes #43.
93
942011-01-02  Thomas Vander Stichele  <thomas at apestaart dot org>
95
96        * morituri/common/program.py:
97        * morituri/image/table.py:
98        * morituri/rip/cd.py:
99          Get CDDB disc id.  Use it to print info when not found on
100          MusicBrainz.
101
1022011-01-01  Thomas Vander Stichele  <thomas at apestaart dot org>
103
104        * morituri/rip/cd.py:
105          Add -U/--unknown option to continue ripping even if the CD is
106          unknown.  Default to False.
107
1082010-12-30  Thomas Vander Stichele  <thomas at apestaart dot org>
109
110        * morituri/common/program.py:
111        * morituri/rip/cd.py:
112          Add load and eject device.  Do so before and after ripping.
113
1142010-11-14  Thomas Vander Stichele  <thomas at apestaart dot org>
115
116        patch by: Loïc Minier <lool at debian dot org>
117
118        * examples/ARcalibrate.py:
119        * examples/ARcue.py:
120        * examples/readdisc.py:
121        * morituri/rip/cd.py:
122        * morituri/rip/offset.py:
123          s/reponse/response.
124          Fixes #51.
125
1262010-11-08  Thomas Vander Stichele  <thomas at apestaart dot org>
127
128        * morituri/program/cdrdao.py:
129          Add logCategory to CDRDAO tasks.
130          Remove errors from parser, set them publically on task.
131          Properly raise exceptions on data cd's with correct stack origin.
132
1332010-07-08  Thomas Vander Stichele  <thomas at apestaart dot org>
134
135        * morituri/common/program.py:
136          Comment where we got the template variables from.
137        * morituri/rip/cd.py:
138          Document the template variables.
139
1402010-06-19  Thomas Vander Stichele  <thomas at apestaart dot org>
141
142        * morituri/program/cdparanoia.py:
143          Warn about missing cdparanoia too.
144
1452010-06-19  Thomas Vander Stichele  <thomas at apestaart dot org>
146
147        * morituri/common/common.py:
148          Add MissingDependencyException.
149        * morituri/program/cdrdao.py:
150        * morituri/rip/main.py:
151          Use it to warn about missing cdrdao.
152
1532010-06-18  Thomas Vander Stichele  <thomas at apestaart dot org>
154
155        * morituri/common/task.py:
156          Add exception traceback for easier debugging.
157
1582010-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
159
160        * morituri.spec.in:
161          Add requires for python-setuptools since we use parse_version.
162          Fixes #32.
163
1642010-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
165
166        * morituri/common/program.py:
167          Set results by default so that it is set even if we get an
168          exception getting them.
169          Fixes #35.
170
1712010-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>
172
173        * morituri/test/test_image_toc.py:
174          Fix distcheck by writing unicode toc filename in a temp dir.
175
1762010-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>
177
178        * morituri/rip/cd.py:
179          Log the version at the beginning to help in bug reports.
180
1812010-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>
182
183        * morituri/rip/main.py:
184          Fix another UnicodeEncodeError problem as mentioned in #25.
185
1862010-04-18  Thomas Vander Stichele  <thomas at apestaart dot org>
187
188        * morituri/test/Makefile.am:
189        * morituri/test/jose.toc (added):
190        * morituri/test/JoséGonzález.toc (deleted):
191          Rename utf-8 file to a normal file.
192        * morituri/test/common.py:
193        * morituri/test/test_common_checksum.py:
194        * morituri/test/test_common_encode.py:
195        * morituri/test/test_image_image.py:
196        * morituri/test/test_image_toc.py:
197          Copy the normal file first to the utf-8 filename, if supported.
198          Skip tests that need unicode when we are not in a utf-8 locale.
199
2002010-04-17  Thomas Vander Stichele  <thomas at apestaart dot org>
201
202        * configure.ac:
203        * doc/release:
204          Back to trunk.
205
206=== release 0.1.1 ===
207
2082010-04-16  Thomas Vander Stichele  <thomas at apestaart dot org>
209
210        * NEWS:
211        * README:
212        * RELEASE:
213        * configure.ac:
214        * doc/release:
215        * morituri.doap:
216          Releasing 0.1.1, 'Dead'
217
2182010-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
219
220        * morituri/common/encode.py:
221        * morituri/rip/image.py:
222          Provide status on the retagging.
223
2242010-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
225
226        patch by: Peter Oliver
227
228        * morituri/program/cdparanoia.py:
229          Respect umask for encoded files.  Fixes #17.
230
2312010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>
232
233        * morituri/common/encode.py:
234          Before moving the newly tagged file to overwrite the original
235          one, copy over mode.
236
2372010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>
238
239        * morituri/common/program.py:
240          Commit one missing line from patch in #4 for multi-artist discs.
241
2422010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>
243
244        patch by: Peter Oliver
245
246        * morituri/common/program.py:
247          Handle multi-artist releases where track artist is unset.
248          Fixes #14.
249
2502010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>
251
252        * morituri/rip/image.py:
253          Fix more utf-8 issues.
254
2552010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>
256
257        * morituri/image/image.py:
258          Remove dead code.
259
2602010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>
261
262        * morituri/common/encode.py:
263          Fix wrong code for checksum comparison.
264
2652010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>
266
267        * morituri/common/program.py:
268          Rename some vars to start with mbid.  Fix pychecker issues.
269
2702010-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
271
272        * morituri/common/program.py:
273          Add a retagging command.
274          Add a getMusicBrainz() method.
275          Also store musicbrainz track/album/artist ids.
276          Patch provided by Peter Oliver.  Fixes #4.
277        * morituri/rip/cd.py:
278          Use it.
279        * morituri/image/image.py:
280          Add a task to retag an image.
281        * morituri/rip/image.py:
282          Add a command to retag an image.
283
2842010-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
285
286        * morituri/common/encode.py:
287          Add tasks to read, write, and safely retag flac files.
288        * morituri/test/test_common_encode.py:
289          Add tests for this.
290
2912010-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
292
293        * morituri/common/checksum.py:
294          Style fixes.
295        * morituri/common/common.py:
296          Add functions to convert a gst.TagList to a dict and compare them.
297        * morituri/common/task.py:
298          Add setAndRaiseException which gives us an appropriate
299          exceptionMessage as if we raised where we called this new function.
300
3012010-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
302
303        * morituri/common/encode.py:
304          pychecker fix.
305
3062010-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
307
308        * morituri/common/encode.py:
309          Add a task to read tags.
310        * morituri/test/test_common_encode.py:
311          Add a test.
312
3132010-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
314
315        * morituri/common/encode.py:
316          Add a vbr profile.
317
3182010-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
319
320        * morituri/rip/image.py:
321          Don't splitext on inputdir; fixes encoding of directories like
322          Sigur Ros - Takk... (which removed a period)
323
3242010-04-09  Thomas Vander Stichele  <thomas at apestaart dot org>
325
326        * morituri/image/table.py:
327        * morituri/program/cdparanoia.py:
328          Do some 80 character cleanups.
329
3302010-04-08  Thomas Vander Stichele  <thomas at apestaart dot org>
331
332        * morituri/rip/image.py:
333          Fix problem to encode from files with unicode chars.
334
3352010-04-08  Thomas Vander Stichele  <thomas at apestaart dot org>
336
337        * morituri/program/cdparanoia.py:
338          Add some debug.
339        * morituri/common/encode.py:
340          Add more debug.
341          Handle the case where peak is full scale, and peakdB thus 0,
342          which triggered not setting self.peak.
343
3442010-04-06  Thomas Vander Stichele  <thomas at apestaart dot org>
345
346        patch by: Peter Oliver
347
348        * morituri/common/program.py:
349          Allow using sortName for artist/track using %S/%s.
350          Fixes #19.
351
3522010-04-06  Thomas Vander Stichele  <thomas at apestaart dot org>
353
354        * doc/release:
355          Document having clean test run.
356        * morituri/common/encode.py:
357          Catch and properly stop on gst.QueryError.
358          Don't set peak in stop if we had an error.
359        * morituri/test/test_common_encode.py:
360        * morituri/test/test_common_renamer.py:
361        * morituri/test/test_image_cue.py:
362          Clean up after tests.
363
3642010-04-06  Thomas Vander Stichele  <thomas at apestaart dot org>
365
366        * morituri/common/task.py:
367        * morituri/image/cue.py:
368          Add logCategory.
369        * morituri/image/image.py:
370          If subtasks had an exception, retrigger the exception and stop.
371
3722010-04-06  Thomas Vander Stichele  <thomas at apestaart dot org>
373
374        * morituri/image/image.py:
375          Fix AudioLengthTask for the case where we don't have the decoder,
376          by instead of doing get_state, waiting for an ASYNC_DONE or ERROR
377          message.  Properly raise a gst.GError in that case.
378        * morituri/common/task.py:
379          Add some debug.
380        * morituri/test/test_image_image.py:
381          After this fix, we now catch the TYPE_NOT_FOUND because of an
382          empty stream instead of the later gst.QueryError.
383        * morituri/test/test_common_encode.py:
384          Let us know what it is if not a gst.QueryError.
385
3862010-04-05  Thomas Vander Stichele  <thomas at apestaart dot org>
387
388        * doc/Makefile.am:
389          Don't put rip.1 manpage in subdir.
390
3912010-04-05  Thomas Vander Stichele  <thomas at apestaart dot org>
392
393        * morituri/common/common.py:
394          add quoteParse function to quote properly for gst.parse_launch()
395        * morituri/common/checksum.py:
396          Fix single quote problem.
397          use self.setException()
398        * morituri/common/encode.py:
399          Fix single quote problem.
400        * morituri/image/image.py:
401          Fix single quote problem.
402          Reraise gst.QueryError.
403        * morituri/test/test_common_encode.py:
404        * morituri/test/test_common_encode.py (added):
405          Add tests for unicode/single/double quote.
406        * morituri/test/test_image_image.py:
407        * morituri/test/test_common_checksum.py:
408          Add tests for single/double quote.
409        * morituri/test/common.py:
410          add twisted-like failUnlessRaises to TestCase that returns
411          the exception, so we can check wrapped exceptions in TaskException.
412          Fixes #16.
413
4142010-04-05  Thomas Vander Stichele  <thomas at apestaart dot org>
415
416        * morituri/common/task.py:
417          Wrap exceptions during tasks in a TaskException, storing the
418          message, for improved error reporting later on.
419
4202010-04-05  Thomas Vander Stichele  <thomas at apestaart dot org>
421
422        * doc/Makefile.am:
423        * morituri.spec.in:
424        * morituri/extern/Makefile.am:
425          Use help2man.py to generate manpage.
426
4272010-04-04  Thomas Vander Stichele  <thomas at apestaart dot org>
428
429        * morituri/common/encode.py:
430        * morituri/common/program.py:
431        * morituri/image/image.py:
432        * morituri/program/cdparanoia.py:
433        * morituri/rip/cd.py:
434        * morituri/rip/image.py:
435        * morituri/rip/offset.py:
436          Move all gst-using imports inside functions and classes
437          to avoid 'import gst' eating our options.
438          Fixes #12.
439
4402010-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>
441
442        * bin/Makefile.am:
443          Install rip as the script.
444
4452010-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>
446
447        * morituri/common/Makefile.am:
448          Add missing result.py
449        * morituri/test/Makefile.am:
450        * morituri/test/test_image_toc.py:
451        * morituri/test/JoséGonzález.toc (added):
452        * morituri/test/José González.toc (deleted):
453          automake doesn't handle spaces in names, so move it.
454
4552010-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>
456
457        * bin/rip.in:
458          Add our PYTHONLIBDIR to sys.path if needed.  Should make this
459          work when doing ./configure; sudo checkinstall make install
460          on e.g. Ubuntu.
461
4622010-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>
463
464        * configure.ac:
465        * bin/rip.in (added):
466        * bin/rip (deleted):
467          Generate bin/rip so we can do sys.path stuff.
468
4692010-03-14  Thomas Vander Stichele  <thomas at apestaart dot org>
470
471        * morituri/rip/offset.py:
472          Add a more complete list of offsets, obtained using misc/offsets.py
473
4742010-03-14  Thomas Vander Stichele  <thomas at apestaart dot org>
475
476        * misc/offsets.py (added):
477          Add a script to calculate list of offsets based on AccurateRip's
478          online database, according to popularity.
479
4802010-02-28  Thomas Vander Stichele  <thomas at apestaart dot org>
481
482        * morituri/common/encode.py:
483          Handle utf-8 properly.
484
4852010-02-28  Thomas Vander Stichele  <thomas at apestaart dot org>
486
487        * morituri/common/program.py:
488          Fix a problem with Arid's new album of not having an id.
489
4902010-01-31  Thomas Vander Stichele  <thomas at apestaart dot org>
491
492        * morituri/common/accurip.py:
493          The AccuRip cache dir could exist without the file; handle that
494          case.
495
4962009-12-28  Thomas Vander Stichele  <thomas at apestaart dot org>
497
498        * morituri/common/program.py:
499          For Various Artists releases, fall back to the release artist if
500          the track artist is None.
501
5022009-10-17  Thomas Vander Stichele  <thomas at apestaart dot org>
503
504        * morituri/image/image.py:
505          Add ImageEncodeTask to encode a disk image to a different profile
506          and directory.
507        * morituri/common/encode.py:
508          Add lossy encoding profiles for mp3 and vorbis.
509          Rename muxer to tagger since that's what we use it for.
510          Do progress probe after level to make sure we get samples for
511          offsets.
512        * morituri/rip/image.py:
513          Add rip image encode command.
514
5152009-10-17  Thomas Vander Stichele  <thomas at apestaart dot org>
516
517        * morituri/test/José González.toc (added):
518          Add test file for a test.
519
5202009-10-16  Thomas Vander Stichele  <thomas at apestaart dot org>
521
522        * morituri/common/task.py:
523          Add exceptionMessage on Task to store the result of
524          log.getExceptionMessage when the stack is still valid.
525
5262009-09-26  Thomas Vander Stichele  <thomas at apestaart dot org>
527
528        * configure.ac:
529          Back to TRUNK.
530
531=== release 0.1.0 ===
532
5332009-09-26  Thomas Vander Stichele  <thomas at apestaart dot org>
534
535        * NEWS:
536        * RELEASE:
537        * configure.ac:
538          Releasing 0.1.0, "Youngblood".
539
5402009-09-19  Thomas Vander Stichele  <thomas at apestaart dot org>
541
542        * morituri/program/cdparanoia.py:
543          explicitize keyword args.
544          Break some 80+ lines.
545
5462009-09-19  Thomas Vander Stichele  <thomas at apestaart dot org>
547
548        * morituri/rip/offset.py:
549          Pass device parameter to ReadTrackTask.  Thanks to Alex B for
550          spotting this on my blog.
551
5522009-09-12  Thomas Vander Stichele  <thomas at apestaart dot org>
553
554        * morituri/program/cdparanoia.py:
555        * morituri/rip/offset.py:
556          Another unicode fix.
557
5582009-09-12  Thomas Vander Stichele  <thomas at apestaart dot org>
559
560        * HACKING:
561          More unicode notes.
562        * morituri/common/program.py:
563        * morituri/image/table.py:
564        * morituri/image/toc.py:
565        * morituri/result/result.py:
566        * morituri/rip/cd.py:
567        * morituri/test/test_image_toc.py:
568          Further unicode fixes, for options, CD-Text, paths, ...
569
5702009-09-11  Thomas Vander Stichele  <thomas at apestaart dot org>
571
572        * morituri/program/cdrdao.py:
573          Wrap read in an exception handler.
574        * morituri/common/task.py:
575          Debug exceptions more.
576
5772009-09-11  Thomas Vander Stichele  <thomas at apestaart dot org>
578
579        * HACKING:
580          Note unicode handling.
581        * morituri/test/test_image_image.py:
582        * morituri/image/table.py:
583        * morituri/program/cdparanoia.py:
584        * morituri/common/checksum.py:
585          Use unicode for paths.
586          Use repr for path representation.
587        * morituri/test/test_common_checksum.py:
588          Add test for unicode audio file name.
589
5902009-09-11  Thomas Vander Stichele  <thomas at apestaart dot org>
591
592        * morituri/image/cue.py:
593        * morituri/image/toc.py:
594        * morituri/test/test_image_cue.py:
595        * morituri/test/test_image_toc.py:
596          Read input file as utf-8.  Fix logging of paths.
597        * morituri/image/image.py:
598          Document and add asserts for unicodeness of paths.
599          Encode path in launch lines as utf-8
600
6012009-09-11  Thomas Vander Stichele  <thomas at apestaart dot org>
602
603        * morituri/common/task.py:
604          Make SyncRunner wrap start() so we correctly handle any
605          exception being thrown.
606         
6072009-09-11  Thomas Vander Stichele  <thomas at apestaart dot org>
608
609        * morituri/common/checksum.py:
610        * morituri/test/Makefile.am:
611        * morituri/test/test_common_checksum.py (added):
612          Add a check to make sure that checksumming an empty file doesn't
613          hang.  Fix the hang.
614
6152009-09-08  Thomas Vander Stichele  <thomas at apestaart dot org>
616
617        * morituri.spec.in:
618          Add pycdio as requirement.
619
6202009-09-07  Thomas Vander Stichele  <thomas at apestaart dot org>
621
622        * morituri/common/program.py:
623          Fix getting AccurateRip results for albums with a HTOA.
624        * morituri/test/Makefile.am:
625        * morituri/test/test_common_program.py:
626        * morituri/test/silentalarm.result.pickle (added):
627          Add testcase for it, Bloc Party's Silent Alarm.
628
6292009-09-07  Thomas Vander Stichele  <thomas at apestaart dot org>
630
631        * morituri.spec.in:
632          Update requirements to work around known bugs.
633
6342009-09-06  Thomas Vander Stichele  <thomas at apestaart dot org>
635
636        * morituri/rip/cd.py:
637          Fix warning against rebuilt package.
638
6392009-09-06  Thomas Vander Stichele  <thomas at apestaart dot org>
640
641        * README:
642          Fix up dependencies.
643        * morituri.spec.in:
644          Fix dependencies and noarch install location.
645        * morituri/common/Makefile.am:
646          Add result.py to dist
647
6482009-09-06  Thomas Vander Stichele  <thomas at apestaart dot org>
649
650        * configure.ac:
651        * m4/Makefile.am:
652        * m4/as-ac-expand.m4 (added):
653          Correctly set installation dir for noarch python files so that it
654          works on 64 bit.
655
6562009-09-06  Thomas Vander Stichele  <thomas at apestaart dot org>
657
658        * morituri/program/cdrdao.py:
659          Parse version number.
660        * morituri/rip/cd.py:
661          Warn about cdrdao versions with a bug.
662        * morituri/test/test_program_cdrdao.py:
663          Test that we can parse the version.
664
6652009-07-02  Thomas Vander Stichele  <thomas at apestaart dot org>
666
667        * morituri/program/cdrdao.py:
668          Handle errors.  Tested by not having a CD in the drive.
669
6702009-07-02  Thomas Vander Stichele  <thomas at apestaart dot org>
671
672        * morituri/common/task.py:
673          Document better.
674          Create an ITaskListener interface where we can document.
675          Log some more.
676
6772009-06-24  Thomas Vander Stichele  <thomas at apestaart dot org>
678
679        * morituri/test/test_common_program.py:
680        * morituri/common/program.py:
681          Extract a common method to get textual representation of
682          AccurateRip results, and test it.
683        * morituri/rip/cd.py:
684        * morituri/rip/image.py:
685          Use the method.
686
6872009-06-24  Thomas Vander Stichele  <thomas at apestaart dot org>
688
689        * morituri/image/table.py:
690          Fix deprecationwarning for python 2.6
691
6922009-06-24  Thomas Vander Stichele  <thomas at apestaart dot org>
693
694        * morituri/test/test_common_program.py (added):
695        * morituri/common/program.py:
696          Break verifyImage into two so we can test it.
697          Test it using an AccurateRip result for Luke Haines Is Dead
698          which had a wrongly ripped track 10.
699
700
7012009-06-24  Thomas Vander Stichele  <thomas at apestaart dot org>
702
703        * morituri/result/result.py:
704          Document some more.
705
7062009-06-24  Thomas Vander Stichele  <thomas at apestaart dot org>
707
708        * morituri/test/Makefile.am:
709        * morituri/test/dBAR-020-002e5023-029d8e49-040eaa14.bin (added):
710          Add AR result for Luke Haines Is Dead disc 1
711
7122009-06-20  Thomas Vander Stichele  <thomas at apestaart dot org>
713
714        * Makefile.am:
715        * misc/pycheckerrc:
716        * morituri/common/accurip.py:
717        * morituri/common/checksum.py:
718        * morituri/common/encode.py:
719        * morituri/image/table.py:
720        * morituri/rip/drive.py:
721          Fix up for pychecker warnings for 2.6
722          Fix rip drive list, which forgot some modules.
723
7242009-06-16  Thomas Vander Stichele  <thomas at apestaart dot org>
725
726        * morituri/rip/main.py:
727        * morituri/rip/image.py (added):
728          Add command to verify an image.
729        * morituri/common/program.py:
730        * morituri/rip/cd.py:
731          Fix AccurateRip checksum output.
732
7332009-06-16  Thomas Vander Stichele  <thomas at apestaart dot org>
734
735        * morituri/common/drive.py:
736          Really make pycdio and cdio optional.
737        * morituri/rip/drive.py:
738        * morituri/rip/offset.py:
739          Use drive.getAllDevicePaths()
740
7412009-06-15  Thomas Vander Stichele  <thomas at apestaart dot org>
742
743        * morituri/result/result.py:
744          Add max confidence from database.
745        * morituri/common/program.py:
746        * morituri/rip/cd.py:
747          Move AccurateRip checking to program.py
748          Re-rip if verification failed when continuing a rip.
749
7502009-06-15  Thomas Vander Stichele  <thomas at apestaart dot org>
751
752        * morituri/image/cue.py:
753          Better debug.
754
7552009-06-09  Thomas Vander Stichele  <thomas at apestaart dot org>
756
757        * morituri/common/program.py:
758        * morituri/rip/cd.py:
759          Serialize the rip result after every rip, so we can pick up
760          where we left off with all result data.
761
7622009-06-07  Thomas Vander Stichele  <thomas at apestaart dot org>
763
764        * morituri/common/program.py:
765          Move getPath to Program.
766          Remove arguments to ripTrack that can be gotten from
767          trackResult.
768        * morituri/rip/cd.py:
769          Continue without musicbrainz metadata.
770          Unify htoa and normal track ripping.
771        * morituri/result/result.py:
772          Add getTrackResult so it's easier to look up track results
773          when there's a HTOA.
774
7752009-06-07  Thomas Vander Stichele  <thomas at apestaart dot org>
776
777        * morituri/common/program.py:
778        * morituri/rip/cd.py:
779          Move HTOA checking to program.
780
7812009-06-07  Thomas Vander Stichele  <thomas at apestaart dot org>
782
783        * morituri/result/logger.py:
784          Fix for toctable->table
785        * morituri/common/program.py:
786        * morituri/rip/cd.py:
787          Move lots of functionality to program module.
788
7892009-06-07  Thomas Vander Stichele  <thomas at apestaart dot org>
790
791        * morituri/result/result.py:
792          Change toctable to table since it's a full index table.
793        * morituri/common/Makefile.am:
794        * morituri/common/program.py (added):
795          Add module and class for program state.
796        * morituri/rip/cd.py:
797          Use the program state to clean up the do() function.
798
7992009-06-07  Thomas Vander Stichele  <thomas at apestaart dot org>
800
801        * morituri/rip/cd.py:
802          Massage into 80 characters per line.
803          Make pycdio/cdio optional.
804
8052009-06-07  Thomas Vander Stichele  <thomas at apestaart dot org>
806
807        * morituri/rip/drive.py:
808          Make pycdio and cdio optional.
809
8102009-06-07  Thomas Vander Stichele  <thomas at apestaart dot org>
811
812        * morituri/image/table.py:
813          Add getPregap() method.
814        * morituri/rip/cd.py:
815          Use artist.name, not getUniqueName, to avoid monstruous names for
816          Muse.
817          Pass mbdiscid to getPath, so Unknown Disc can be saved with it.
818          Don't set the date if the release doesn't have one.
819          Set pregap on trackResult using new Track.getPregap()
820          Write all log/cue/m3u files as utf-8.
821
8222009-06-06  Thomas Vander Stichele  <thomas at apestaart dot org>
823
824        * morituri/test/cdparanoia.progress:
825          Add a shorter test file, 23 seconds.
826        * morituri/test/test_program_cdparanoia.py:
827          Update the test to adapt.  Check for track quality.
828        * morituri/program/cdparanoia.py:
829          Add a measure of track quality based on the number of reads.
830          Use the [wrote] output for progress updates, a bit more
831          jittery in its output.
832        * morituri/rip/cd.py:
833          Set track quality on RipResult.
834
8352009-06-05  Thomas Vander Stichele  <thomas at apestaart dot org>
836
837        * morituri/rip/cd.py:
838          Use RipResult to store result information.
839        * morituri/result/logger.py (added):
840          Add a Logger to handle the RipResult, much like
841          EAC's log file.
842
8432009-06-05  Thomas Vander Stichele  <thomas at apestaart dot org>
844
845        * morituri/rip/cd.py:
846          Comment out number of track setting on tag for now.
847          MusicBrainz can give us dates in YYYY, YYYY-MM, and YYYY-MM-DD
848          format, so convert to YYYY-MM-DD always.
849          Unmount the data part of the CD we want to rip if it is mounted.
850          Adapt to peak level change.
851          Don't try to write data tracks to the m3u file.
852          Resolve the device path to the actual device path.
853
8542009-06-05  Thomas Vander Stichele  <thomas at apestaart dot org>
855
856        * morituri/result/result.py:
857          Add a Logger base class.
858
8592009-06-05  Thomas Vander Stichele  <thomas at apestaart dot org>
860
861        * configure.ac:
862        * morituri/Makefile.am:
863        * morituri/result (added):
864        * morituri/result/result.py (added):
865        * morituri/result/__init__.py (added):
866        * morituri/result/Makefile.am (added):
867          Add classes to store track and rip results in.
868
8692009-06-04  Thomas Vander Stichele  <thomas at apestaart dot org>
870
871        * morituri/common/common.py:
872          Add an argument for the delimiter in formatting.
873        * morituri/common/encode.py:
874          Most programs use peak volume, not power, so do this too.
875
8762009-06-04  Thomas Vander Stichele  <thomas at apestaart dot org>
877
878        * morituri/test/common.py:
879          Add a method for diffing multiline strings.
880
8812009-06-02  Thomas Vander Stichele  <thomas at apestaart dot org>
882
883        * morituri/common/encode.py:
884          Add a test() method to the profile so we can warn about bad
885          flacenc versions.
886          Encode track number and count, and release date, if possible.
887        * morituri/rip/cd.py:
888          Fix another off-by-one error in the tag encoding.
889
8902009-06-01  Thomas Vander Stichele  <thomas at apestaart dot org>
891
892        * morituri/program/cdparanoia.py:
893        * morituri/rip/cd.py:
894          Handle another off-by-one error in the m3u handling.
895          Add a getTagList function.
896          Use it to encode tags.
897
8982009-06-01  Thomas Vander Stichele  <thomas at apestaart dot org>
899
900        * morituri/common/encode.py:
901        * morituri/program/cdparanoia.py:
902        * morituri/rip/cd.py:
903          Clean up the temporary unencoded file.
904          Pass profile as objects to tasks, so that temp files have the right
905          extension.
906
9072009-06-01  Thomas Vander Stichele  <thomas at apestaart dot org>
908
909        * morituri/common/encode.py:
910        * morituri/program/cdparanoia.py:
911          Add encoding profiles, kept simple for now as a class and
912          subclasses.  Use them to encode.  Calculate peak level while
913          encoding, compared to EAC and replaygain's value.
914        * morituri/rip/cd.py:
915          Use the encoding profiles, ripping with the right extension.
916          Add a --profile parameter for it.
917
9182009-05-31  Thomas Vander Stichele  <thomas at apestaart dot org>
919
920        * morituri/rip/cd.py:
921          Clean up track numbering confusion.
922
9232009-05-26  Thomas Vander Stichele  <thomas at apestaart dot org>
924
925        * morituri/common/encode.py (added):
926        * examples/encode.py (added):
927          Add an Encode Task, hardcoded to flac for now.
928          Add an example, that also sets tags.
929
9302009-05-26  Thomas Vander Stichele  <thomas at apestaart dot org>
931
932        * morituri/common/task.py:
933          Add debug.
934        * morituri/rip/drive.py:
935          Show all drives, not just the ones that happen to have an Audio CD
936          inserted.
937
9382009-05-25  Thomas Vander Stichele  <thomas at apestaart dot org>
939
940        * morituri/rip/cd.py:
941          Add asserts for comparing id's between the simple toc and
942          the full table.
943          Create the output directory before ripping the htoa.
944          Ignore data tracks for now.
945          Don't fail if we have no AccurateRip responses.
946        * morituri/image/table.py:
947          Add a session ivar to Track.
948          Factor in session leadin when calculating track length
949          of last track in a session.
950          add getMusicBrainzSubmitURL()
951          add _getSessionGap() because the session gap size is different
952          for session 2 and all following.
953          Use it in merge() to get offsets right.
954          Fix getAccurateRipURL by only using the audio tracks for the
955          'length in tracks' number
956          Temporarily disable writing out data tracks to a .cue file,
957          since it's not implemented yet.
958          Add canCue to see if we can write a .cue file from the given table,
959          and debug why not if not.
960        * morituri/program/cdrdao.py:
961          Rework to rip each session separately instead of using session 9.
962          This fixes session 9 read-toc missing the pregap.
963          Add a simple LineParser for handling output from disk-info.
964          Count tracks relatively for the session, because the output for
965          session 2 for track numbers picks up where session 1 left off.
966          Don't set leadout from TOC printing since for the same reason
967          session 2's leadout is absolute, not relative to start of session.
968          Add a DiscInfoTask.
969          Convert Table and Toc reading tasks to multitasks, first getting the
970          number of sessions, then reading table/toc for each session.
971
972        * morituri/test/test_image_table.py:
973          Fix up MusicBrainz disc id for my Ladyhawke disc.
974          Add AccurateRip URL verification, compared against EAC's.
975        * morituri/test/test_image_toc.py:
976          Use two separate session read-toc output files to verify
977          the case of Das Capital.
978          Verify musicbrainz URL.
979
9802009-05-25  Thomas Vander Stichele  <thomas at apestaart dot org>
981
982        * morituri/common/task.py:
983          Add documentation.
984          Use a _task counter instead of duplicating tasks to
985          __tasks; this allows us to add tasks after starting.
986          Catch Exceptions during next() so that we don't get
987          stuck in a main loop that doesn't exit.
988          Raise it later when we're done.
989
9902009-05-25  Thomas Vander Stichele  <thomas at apestaart dot org>
991
992        * morituri/common/common.py:
993          Since the version was inherited from the current code
994          in unpickled objects, separate into classVersion and
995          an instanceVersion set from __init__.
996
9972009-05-25  Thomas Vander Stichele  <thomas at apestaart dot org>
998
999        * morituri/image/toc.py:
1000          Add a logName for debugging.
1001
10022009-05-25  Thomas Vander Stichele  <thomas at apestaart dot org>
1003
1004        * morituri/program/cdparanoia.py:
1005        * morituri/image/image.py:
1006          Correctly chain up to parent __init__ for MultiTasks
1007
10082009-05-24  Thomas Vander Stichele  <thomas at apestaart dot org>
1009
1010        * morituri/test/capital.1.toc (added):
1011        * morituri/test/capital.2.toc (added):
1012          Add two .toc's for two sessions of a 2 session disc
1013        * morituri/image/table.py:
1014          Add a merge method to merge in a second session.
1015        * morituri/test/Makefile.am:
1016        * morituri/test/test_image_toc.py:
1017          Add a test for merging the Das Capital sessions, gets
1018          the CDDB disc id right.
1019
10202009-05-24  Thomas Vander Stichele  <thomas at apestaart dot org>
1021
1022        * morituri/common/common.py:
1023          Add a persisted cache so that we can store pickles on discs.
1024          Automatically delete them if the class version is newer than
1025          the object's.
1026        * morituri/rip/cd.py:
1027          Use it.
1028
10292009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1030
1031        * morituri/image/table.py:
1032          Add a version ivar to help with versioning pickled objects.
1033
10342009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1035
1036        * morituri/program/cdparanoia.py:
1037          Add copy and test CRC's to object.
1038
10392009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1040
1041        * morituri/common/Makefile.am:
1042        * morituri/common/drive.py (added):
1043          Add drive module.
1044
10452009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1046
1047        * morituri/program/cdparanoia.py:
1048        * morituri/program/cdrdao.py:
1049        * morituri/rip/cd.py:
1050        * morituri/rip/offset.py:
1051          Add device argument to ripping/scanning tasks.
1052
10532009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1054
1055        * morituri/common/accurip.py:
1056        * morituri/image/image.py:
1057        * morituri/test/Makefile.am:
1058        * morituri/test/test_image_image.py:
1059        * morituri/test/test_common_accurip.py (added):
1060          Move accuraterip stuff to the accurip module.
1061          Move/create new test file.
1062
10632009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1064
1065        * morituri/rip/Makefile.am:
1066        * morituri/rip/main.py:
1067        * morituri/rip/drive.py (added):
1068          Add 'rip drive list' command to list available drives.
1069        * morituri/common/accurip.py:
1070          Add force.
1071        * morituri/rip/cd.py:
1072          Add --output-directory argument.
1073
10742009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1075
1076        * morituri/common/Makefile.am:
1077        * morituri/rip/cd.py:
1078        * morituri/common/accurip.py (added):
1079          Add a module for handling a cache of AccurateRip results.
1080          Use it.
1081
10822009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1083
1084        * morituri/rip/Makefile.am:
1085        * morituri/rip/main.py:
1086        * morituri/rip/cd.py (added):
1087          Add second command, 'rip cd rip' before factoring out functionality.
1088
10892009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1090
1091        * morituri/rip/Makefile.am:
1092        * morituri/rip/main.py:
1093        * morituri/rip/offset.py (added):
1094          Add first command, 'rip offset find'
1095
10962009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1097
1098        * Makefile.am:
1099        * morituri/test/Makefile.am:
1100          Make distcheck work.
1101
11022009-05-22  Thomas Vander Stichele  <thomas at apestaart dot org>
1103
1104        * morituri/common/checksum.py:
1105          More pychecker fixes.
1106
11072009-05-22  Thomas Vander Stichele  <thomas at apestaart dot org>
1108
1109        * morituri/common/common.py:
1110        * morituri/common/renamer.py:
1111          Pychecker fixes.
1112
11132009-05-22  Thomas Vander Stichele  <thomas at apestaart dot org>
1114
1115        * RELEASE:
1116        * misc/pycheckerrc:
1117        * misc/show-coverage.py:
1118        * morituri/image/Makefile.am:
1119        * morituri/program/Makefile.am:
1120        * RELEASE (added):
1121        * morituri/image/Makefile.am (added):
1122        * morituri/program/Makefile.am (added):
1123        * misc/show-coverage.py (added):
1124        * misc/pycheckerrc (added):
1125          more additions
1126
11272009-05-22  Thomas Vander Stichele  <thomas at apestaart dot org>
1128
1129        * AUTHORS:
1130        * Makefile.am:
1131        * NEWS:
1132        * TODO:
1133        * autogen.sh:
1134        * configure.ac:
1135        * examples/ARcalibrate.py:
1136        * misc/Makefile.am:
1137        * misc/morituri-uninstalled:
1138        * morituri.spec.in:
1139        * morituri/Makefile.am:
1140        * morituri/common/Makefile.am:
1141        * morituri/common/logcommand.py:
1142        * morituri/extern/Makefile.am:
1143        * morituri/rip/Makefile.am:
1144        * morituri/rip/__init__.py:
1145        * morituri/rip/main.py:
1146        * morituri/test/Makefile:
1147        * morituri/test/Makefile.am:
1148        * configure.ac (added):
1149        * AUTHORS (added):
1150        * morituri.spec.in (added):
1151        * Makefile.am (added):
1152        * morituri/test/Makefile.am (added):
1153        * morituri/extern/Makefile.am (added):
1154        * morituri/common/logcommand.py (added):
1155        * morituri/common/Makefile.am (added):
1156        * morituri/Makefile.am (added):
1157        * morituri/rip (added):
1158        * morituri/rip/__init__.py (added):
1159        * morituri/rip/Makefile.am (added):
1160        * morituri/rip/main.py (added):
1161        * misc/Makefile.am (added):
1162        * misc/morituri-uninstalled (added):
1163        * autogen.sh (added):
1164        * NEWS (added):
1165          Start autotooling.  Add a command-line application.
1166
11672009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1168
1169        * morituri/program/cdrdao.py:
1170          read all sessions by reading session 9.
1171        * morituri/image/toc.py:
1172          Parse ZERO statements properly.
1173          Also set absolute offsets when we know them from the .toc file.
1174          Properly set audio flag on tracks.
1175          FIXME: probably doesn't work if the .toc does not have lengths.
1176        * morituri/image/table.py:
1177          Add some debug to cddb disc id calculation.
1178          Fix absolutize function, it was going one index too far.
1179          raise ValueError when overriding .absolute with a wrong value.
1180        * examples/readdisc.py:
1181          Show CDDB disc id at the start.
1182          Assert when toc and table have different disc id's (to be fixed)
1183        * morituri/test/test_image_cue.py:
1184          Update for having the table already with absolute values.
1185        * morituri/test/test_image_toc.py:
1186          Add Ladyhawke CDDB test, it has a data track.
1187
11882009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1189
1190        * examples/readdisc.py:
1191          Move constants to common
1192
11932009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1194
1195        * examples/readdisc.py:
1196        * examples/readhtoa.py:
1197        * examples/readtoc.py:
1198          Rename IndexTable to Table.
1199
12002009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1201
1202        * morituri/image/cue.py:
1203        * morituri/image/image.py:
1204        * morituri/image/table.py:
1205        * morituri/image/toc.py:
1206        * morituri/program/cdparanoia.py:
1207        * morituri/program/cdrdao.py:
1208        * morituri/test/test_image_cue.py:
1209        * morituri/test/test_image_table.py:
1210          Rename IndexTable to Table.
1211
12122009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1213
1214        * morituri/image/cue.py:
1215        * morituri/image/image.py:
1216        * morituri/image/table.py:
1217        * morituri/image/toc.py:
1218        * morituri/program/cdrdao.py:
1219        * morituri/test/test_image_cue.py:
1220        * morituri/test/test_image_table.py:
1221          Rename ITTrack to Track.
1222
12232009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1224
1225        * morituri/common/common.py:
1226        * morituri/image/cue.py:
1227          Use FRAMES_PER_SECOND where appropriate.
1228
12292009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1230
1231        * morituri/common/checksum.py:
1232        * morituri/common/common.py:
1233        * morituri/image/image.py:
1234        * morituri/image/table.py:
1235        * morituri/program/cdparanoia.py:
1236          Move constants to common
1237
12382009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1239
1240        * examples/readdisc.py:
1241          Get our metadata only from the toc.
1242
12432009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1244
1245        * examples/readdisc.py:
1246          Also work for discs without htoa.
1247
12482009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1249
1250        * examples/readdisc.py:
1251          Write .m3u file.
1252
12532009-05-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1254
1255        * examples/readdisc.py:
1256          Rip HTOA as well.  Add disc-template parameter.
1257
12582009-05-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1259
1260        * morituri/image/table.py:
1261          Fix a subtle bug in our CDDB disc id calculation.
1262          The length of the audio should be calculated as the delta
1263          between leadout and start already converted (and truncated)
1264          to seconds.
1265        * morituri/test/bloc.cue:
1266        * morituri/test/test_image_toc.py:
1267          Fix up tests for this.
1268
12692009-05-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1270
1271        * morituri/program/cdparanoia.py:
1272          Fix up track counting so HTOA can be ripped again.
1273        * examples/readhtoa.py:
1274          Fix up example so it works again, tested on Silent Alarm.
1275
12762009-05-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1277
1278        * morituri/test/test_image_toc.py:
1279        * morituri/test/bloc.cue (added):
1280          Add an expected .cue file for the bloc party toc.
1281
12822009-05-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1283
1284        * morituri/image/toc.py:
1285          Calculate the leadout from the sum of the track lengths.
1286        * morituri/test/breeders.cue:
1287        * morituri/test/cure.cue:
1288          Adapt expected results for DISCID.
1289        * morituri/image/table.py:
1290          Add an assert for hasTOC() when doing .cue()
1291        * morituri/test/test_image_toc.py:
1292        * morituri/test/test_image_cue.py:
1293          absolutize before cue()
1294
12952009-05-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1296
1297        * morituri/image/table.py:
1298          Only add DISCID if our table is a TOC (which it isn't
1299          with our current .toc file parsing)
1300        * morituri/test/test_image_cue.py:
1301        * morituri/test/test_image_toc.py:
1302          Fix up tests; testsuite passes again.
1303
13042009-05-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1305
1306        * morituri/image/toc.py:
1307          Add some debugging.
1308
13092009-05-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1310
1311        * morituri/image/table.py:
1312          Update .cue writing:
1313          - customise program name
1314          - add DISCID
1315          - use counter for FILE lines
1316          - put FILE line before TRACK if track does not have INDEX 00
1317          Take counter into account for setFile
1318          Fix off-by-one in setFile
1319        * examples/readdisc.py:
1320          Add --track-template.
1321          Pass counter to setFile.
1322
13232009-05-14  Thomas Vander Stichele  <thomas at apestaart dot org>
1324
1325        * morituri/image/table.py:
1326          Add CDText writing to .cue() method.
1327        * morituri/image/toc.py:
1328          Add CDText parsing.
1329        * morituri/test/test_image_toc.py:
1330        * morituri/test/breeders.cue (added):
1331          Add a test for cue'ing the breeders' toc.
1332
13332009-05-14  Thomas Vander Stichele  <thomas at apestaart dot org>
1334
1335        * morituri/image/table.py:
1336        * morituri/image/toc.py:
1337          Add parsing of ISRC codes.
1338          Add first part of CDTEXT stuff.
1339        * morituri/test/test_image_toc.py:
1340          Add test for converting .toc to .cue
1341        * morituri/test/cure.cue
1342          Add reference for converted cure.toc
1343
13442009-05-10  Thomas Vander Stichele  <thomas at apestaart dot org>
1345
1346        * examples/readhtoa.py:
1347          Fix example.
1348
13492009-05-07  Thomas Vander Stichele  <thomas at apestaart dot org>
1350
1351        * morituri/image/table.py:
1352        * morituri/test/test_image_table.py:
1353          Correctly calculate MusicBrainz disc id for enhanced cd's.
1354
13552009-05-07  Thomas Vander Stichele  <thomas at apestaart dot org>
1356
1357        * morituri/common/task.py:
1358          Log on runners too.
1359        * morituri/program/cdrdao.py:
1360          Abort if output has ERROR by killing and setting an exception.
1361
13622009-05-07  Thomas Vander Stichele  <thomas at apestaart dot org>
1363
1364        * examples/readdisc.py:
1365          filter out slashes when deciding on file names.
1366
13672009-05-07  Thomas Vander Stichele  <thomas at apestaart dot org>
1368
1369        * morituri/common/task.py:
1370        * morituri/image/image.py:
1371          Remove prints.  Describe tasks.
1372
13732009-05-07  Thomas Vander Stichele  <thomas at apestaart dot org>
1374
1375        * morituri/common/task.py:
1376          Add an exception ivar for tasks to set an exception on while
1377          running.  Make SyncRunner raise it during done()
1378        * morituri/program/cdparanoia.py:
1379          Set an exception if the ripped file doesn't match the expected size
1380          (for example when disc is full)
1381
13822009-05-07  Thomas Vander Stichele  <thomas at apestaart dot org>
1383
1384        * morituri/common/common.py:
1385          Set the object when we don't persist.
1386        * examples/readdisc.py:
1387          Small fixes.
1388
13892009-05-06  Thomas Vander Stichele  <thomas at apestaart dot org>
1390
1391        * examples/readdisc.py:
1392          Fix up cue file reading.
1393
13942009-05-06  Thomas Vander Stichele  <thomas at apestaart dot org>
1395
1396        * examples/readdisc.py:
1397          Add musicbrainz code for disc naming.
1398
13992009-05-06  Thomas Vander Stichele  <thomas at apestaart dot org>
1400
1401        * morituri/image/table.py:
1402        * morituri/image/toc.py:
1403          Delete old code.
1404
14052009-05-06  Thomas Vander Stichele  <thomas at apestaart dot org>
1406
1407        * morituri/image/toc.py:
1408        * morituri/test/test_image_toc.py:
1409        * morituri/test/test_program_cdrdao.py:
1410          After careful vetting, fix up the expected values after toc parsing.
1411          Fix (untested) INDEX handling.  Fix handling of START.
1412
14132009-05-05  Thomas Vander Stichele  <thomas at apestaart dot org>
1414
1415        * morituri/image/table.py:
1416        * morituri/test/test_image_table.py:
1417          Implement MusicBrainz disc id.  Works for audio-only discs,
1418          have to figure out why it fails for an Enhanced CD like the
1419          Ladyhawke one.
1420
14212009-05-05  Thomas Vander Stichele  <thomas at apestaart dot org>
1422
1423        * morituri/image/table.py:
1424          Add logging.
1425          Add methods to clear a table of files, and to absolutize indexes
1426          as long as the source is the same file, and to set a File on a
1427          given index, adjusting all following indexes that match the
1428          duration, and check if the IndexTable has all information for a TOC.
1429        * morituri/image/toc.py:
1430          Add logging.
1431          Use a counter for the source.
1432          Fix up index offset calculation.
1433        * morituri/program/cdrdao.py:
1434          Use a real IndexTable as the result, instead of a TocFile.
1435        * morituri/image/cue.py:
1436          Use a real IndexTable to store tracks.
1437        * morituri/test/test_image_toc.py:
1438          The toc file now has a table which has the tracks.
1439          Fix the tests to adjust for wrong index calculations.
1440        * morituri/test/test_image_cue.py:
1441        * morituri/test/test_image_image.py:
1442        * morituri/image/image.py:
1443          The cue file now has a table which has the tracks.
1444        * morituri/test/test_image_table.py:
1445          Add assertions to make sure when the table can serve as a TOC.
1446        * examples/readdisc.py:
1447          Adjust for changes.  Fix up to include AccurateRip results.
1448          First time we can do a complete normal rip including verifying
1449          against AccurateRip results!
1450
14512009-05-05  Thomas Vander Stichele  <thomas at apestaart dot org>
1452
1453        * examples/readdisc.py:
1454        * morituri/image/table.py:
1455        * morituri/test/test_image_table.py:
1456          Fix up and deprecate stuff.
1457
14582009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1459
1460        * examples/movecue.py:
1461        * examples/readcue.py:
1462        * morituri/image/cue.py:
1463        * morituri/image/image.py:
1464        * morituri/image/toc.py:
1465        * morituri/program/cdrdao.py:
1466        * morituri/test/test_image_cue.py:
1467        * morituri/test/test_image_toc.py:
1468          Cue -> CueFile
1469          TOC -> TocFile
1470
14712009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1472
1473        * examples/readdisc.py (added):
1474          Add an example to read a whole disc.  Doesn't work yet.
1475
14762009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1477
1478        * examples/readhtoa.py:
1479          Fix up readhtoa example.  Add offset option.
1480
14812009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1482
1483        * examples/ARcalibrate.py:
1484        * examples/readhtoa.py:
1485        * examples/readtoc.py:
1486        * morituri/program/cdrdao.py:
1487          Rename ReadTOCTask to ReadIndexTableTask.
1488          Rename ReadTableTask to ReadTOCTask.
1489
14902009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1491
1492        * morituri/program/cdrdao.py:
1493          Convert ReadTableTask to a CDRDAOTask subclass.
1494        * examples/ARcalibrate.py:
1495        * morituri/program/cdparanoia.py:
1496          Adapt.
1497
14982009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1499
1500        * morituri/program/cdrdao.py:
1501          Fix up index scanning's progress report.
1502          Add some debugging.
1503
15042009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1505
1506        * morituri/program/cdrdao.py:
1507        * morituri/test/test_program_cdrdao.py:
1508          Fix up tests.  Use an IndexTable.
1509
15102009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1511
1512        * morituri/program/cdrdao.py:
1513          Massage out a base class for running cdrdao.
1514
15152009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1516
1517        * morituri/program/cdrdao.py:
1518        * morituri/test/test_program_cdrdao.py (added):
1519          Split out the parser from the task.  Test the parser.
1520
15212009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1522
1523        * morituri/image/cue.py:
1524        * morituri/image/image.py:
1525        * morituri/image/table.py:
1526        * morituri/program/cdparanoia.py:
1527        * morituri/test/test_image_cue.py:
1528          Move to using a shared IndexTable for everything.
1529          Sadly mixed with a MultiTask rename.
1530
15312009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1532
1533        * morituri/common/checksum.py:
1534          Update debugging.  Add repr.
1535
15362009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1537
1538        * examples/ARcue.py:
1539          Handle case where we have no matching response.
1540
15412009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1542
1543        * morituri/common/task.py:
1544          Distinguish more clearly between MultiSeparateTask and
1545          MultiCombinedTask.
1546
15472009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1548
1549        * morituri/image/cue.py:
1550        * morituri/test/test_image_cue.py:
1551          Add dumping of .cue files.
1552
15532009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1554
1555        * morituri/program/cdparanoia.py:
1556          Use a temporary file to rip to.
1557
15582009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1559
1560        * examples/readtrack.py:
1561          Allow specifying the track to save.
1562
15632009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1564
1565        * morituri/common/task.py:
1566          Make SyncRunner clear previous description/progress task by
1567          tracking longest output given up to now.
1568
15692009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1570
1571        * morituri/program/cdparanoia.py:
1572          Add a task to read and verify a track.
1573        * examples/readtrack.py:
1574          Use it to clean up code.
1575        * morituri/common/task.py:
1576          describe a MultiTask better.
1577
1578
15792009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1580
1581        * morituri/common/common.py:
1582          Create a Persister class to wrap a possible pickle path.
1583        * examples/trm.py:
1584          Use it.
1585
15862009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1587
1588        * morituri/program/cdparanoia.py:
1589          Add table to __init__, so we can correctly calculate cdparanoia's
1590          strange ripping regions.
1591        * examples/ARcalibrate.py:
1592          When we found a positive match on a first track, match all the other
1593          tracks too for confirmation.
1594
15952009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1596
1597        * morituri/common/taskgtk.py:
1598          Bug fix.
1599
16002009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1601
1602        * morituri/common/task.py:
1603        * morituri/common/taskgtk.py:
1604          Split off GtkProgressRunner in separate module to not import gtk
1605          everywhere.
1606        * examples/ARcalibrate.py:
1607        * examples/ARcue.py:
1608        * examples/gtkchecksum.py:
1609        * examples/trm.py:
1610          Adapt.
1611
16122009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1613
1614        * examples/ARcalibrate.py (added):
1615          Add an example that calculates the read offset of your drive
1616          using AccurateRip.
1617
16182009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1619
1620        * morituri/program/cdrdao.py:
1621          Add a task to read the Table.
1622
16232009-05-02  Thomas Vander Stichele  <thomas at apestaart dot org>
1624
1625        * morituri/common/task.py:
1626        * morituri/image/image.py:
1627          Add some debugging.
1628
16292009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1630
1631        * examples/readhtoa.py (added):
1632          Add an example that detects and rips the Hidden Track One Audio.
1633
16342009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1635
1636        * examples/readtoc.py:
1637        * morituri/program/cdrdao.py (added):
1638          Move the ReadTocTask to the new cdrdao module.
1639
16402009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1641
1642        * examples/readtrack.py:
1643        * morituri/program/cdparanoia.py:
1644          Move ReadTrackTask to cdparanoia module.
1645
16462009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1647
1648        * examples/readtrack.py (added):
1649          Add an example that reads a track using cdparanoia.
1650
16512009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1652
1653        * morituri/test/cdparanoia.progress (added):
1654        * morituri/test/test_program_cdparanoia.py (added):
1655        * morituri/program/__init__.py (added):
1656        * morituri/program/cdparanoia.py (added):
1657          Add a module to wrap cdparanoia.  Add a test for parsing
1658          the progress report output.
1659
16602009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1661
1662        * morituri/common/checksum.py:
1663          Debug fixes.
1664
16652009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1666
1667        * morituri/common/common.py:
1668          Create some common functions to parse MSF and back.
1669        * morituri/image/toc.py:
1670          Use it here.
1671
16722009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1673
1674        * examples/trm.py:
1675          Allow loading and saving fingerprints from a pickle.
1676
16772009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1678
1679        * morituri/image/toc.py:
1680        * morituri/test/test_image_toc.py:
1681        * morituri/test/bloc.toc (added):
1682          Fix up .toc parsing to correct index 0 behaviour.
1683          Add Bloc Party's Silent Alarm .toc file to test HTOA.
1684
16852009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1686
1687        * examples/readtoc.py:
1688          Update to work on my desktop.
1689
16902009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1691
1692        * morituri/common/task.py:
1693          Make task subclass log.Log
1694
16952009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1696
1697        * morituri/common/log.py:
1698          Add external log module and use it.
1699
17002009-04-29  Thomas Vander Stichele  <thomas at apestaart dot org>
1701
1702        * morituri/test/cure.toc (added):
1703          Add an example .toc file for the test.
1704
17052009-04-28  Thomas Vander Stichele  <thomas at apestaart dot org>
1706
1707        * examples/readtoc.py:
1708          Extract and print TOC.
1709
17102009-04-28  Thomas Vander Stichele  <thomas at apestaart dot org>
1711
1712        * morituri/test/test_image_toc.py (added):
1713        * morituri/image/toc.py (added):
1714          Add first stab at .toc parsing.
1715
17162009-04-28  Thomas Vander Stichele  <thomas at apestaart dot org>
1717
1718        * examples/readtoc.py:
1719          get errors from output too.
1720
17212009-04-28  Thomas Vander Stichele  <thomas at apestaart dot org>
1722
1723        * morituri/image/image.py:
1724        * morituri/image/table.py:
1725        * morituri/test/test_image_image.py:
1726        * morituri/test/test_image_table.py:
1727          Rename toc.TOC to table.Table
1728
17292009-04-28  Thomas Vander Stichele  <thomas at apestaart dot org>
1730
1731        * morituri/test/test_image_table.py (added):
1732        * morituri/image/table.py (added):
1733        * morituri/test/test_image_toc.py (deleted):
1734        * morituri/image/toc.py (deleted):
1735          Move files around in preparation for the .toc file parsing.
1736
17372009-04-26  Thomas Vander Stichele  <thomas at apestaart dot org>
1738
1739        * examples/movecue.py (added):
1740          Add a script that moves a .cue file in its corresponding directory.
1741
17422009-04-26  Thomas Vander Stichele  <thomas at apestaart dot org>
1743
1744        * morituri/test/kanye.cue (added):
1745          Add a cue test with mixed mode.
1746        * morituri/image/cue.py:
1747        * morituri/test/test_image_cue.py:
1748          Handle it properly.
1749
17502009-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>
1751
1752        * morituri/image/cue.py:
1753          getRealPath should be here, it doesn't need anything outside
1754          the .cue file
1755        * morituri/image/image.py:
1756          Proxy it here.
1757
17582009-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>
1759
1760        * morituri/common/checksum.py:
1761          Add some debugging.
1762        * morituri/test/test_image_image.py:
1763          Run less verbose.
1764
17652009-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>
1766
1767        * morituri/common/task.py:
1768          Allow a SyncRunner to be constructed with verbose too.
1769          Separate a 'running' verbose mode from that.
1770          Fixes unwanted test output.
1771        * morituri/test/test_image_image.py:
1772          Run without verbosity.
1773
17742009-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>
1775
1776        * morituri/test/test_image_image.py:
1777          Fix name.
1778
17792009-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>
1780
1781        * morituri/test/test_common_renamer.py (added):
1782        * morituri/common/renamer.py (added):
1783          Add a way of doing transactional file renames, as well as their
1784          metafile updates.
1785
17862009-04-21  Thomas Vander Stichele  <thomas at apestaart dot org>
1787
1788        * morituri/common/task.py:
1789          Add a 'described' method so listeners can get proper notification
1790          of description changes, and update their description in between
1791          progress changes.
1792          Add a MultiCombinedTask that reports on progress over all tasks
1793          combined.
1794        * examples/trm.py:
1795          Add a playlist option to the example.  Still needs to store results
1796          to pickles, preferably after each completed task.
1797        * morituri/common/checksum.py:
1798          Add audioconvert to make sure we can trm ogg files.
1799
18002009-04-20  Thomas Vander Stichele  <thomas at apestaart dot org>
1801
1802        * morituri/common/task.py:
1803        * morituri/image/image.py:
1804          Move MultiTask to the task module.
1805
18062009-04-20  Thomas Vander Stichele  <thomas at apestaart dot org>
1807
1808        * morituri/common/checksum.py:
1809          Add a task to calculate a trm fingerprint.
1810        * examples/trm.py (added):
1811          Add an example.
1812          Strangely enough it starts burstily, doing 10% directly, halting,
1813          then progressing quickly,
1814
18152009-04-20  Thomas Vander Stichele  <thomas at apestaart dot org>
1816
1817        * examples/ARcue.py:
1818          Fix a bug in the gtk example.
1819
18202009-04-20  Thomas Vander Stichele  <thomas at apestaart dot org>
1821
1822        * examples/readtoc.py:
1823          Read the toc using cdrdao.  Now sets progress based on which
1824          frame it is on.
1825
18262009-04-20  Thomas Vander Stichele  <thomas at apestaart dot org>
1827
1828        * morituri/common/task.py:
1829          Add a __main__ example using DummyTask.
1830
18312009-04-19  Thomas Vander Stichele  <thomas at apestaart dot org>
1832
1833        * morituri/common/task.py:
1834          Make sure we also show progress when it's 0%, at the start.
1835
18362009-04-19  Thomas Vander Stichele  <thomas at apestaart dot org>
1837
1838        * morituri/image/cue.py:
1839          Use names for matches in regexps.
1840
18412009-04-19  Thomas Vander Stichele  <thomas at apestaart dot org>
1842
1843        * examples/readtoc.py (added):
1844          Add an example to read the TOC, not finished yet.
1845
18462009-04-19  Thomas Vander Stichele  <thomas at apestaart dot org>
1847
1848        * morituri/extern (added):
1849        * morituri/extern/__init__.py (added):
1850        * morituri/extern/asyncsub.py (added):
1851          Add extern module; add asynchronous subprocess Popen from
1852          http://code.activestate.com/recipes/440554/
1853
18542009-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1855
1856        * examples/gtkchecksum.py:
1857        * morituri/common/checksum.py:
1858          Final crc->checksum fixes.
1859
18602009-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1861
1862        * examples/ARcue.py:
1863        * morituri/common/checksum.py:
1864        * morituri/image/image.py:
1865        * morituri/image/toc.py:
1866        * examples/gtkchecksum.py (added):
1867        * examples/gtkcrc.py (deleted):
1868          More crc->checksum changes.
1869
18702009-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1871
1872        * examples/ARcue.py:
1873        * morituri/common/checksum.py:
1874        * morituri/image/image.py:
1875        * morituri/test/test_image_image.py:
1876          Change crc to checksum everywhere.
1877
18782009-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1879
1880        * morituri/image/image.py:
1881        * morituri/image/toc.py:
1882        * morituri/common/checksum.py (added):
1883        * morituri/common/crc.py (deleted):
1884          Rename crc to checksum, because AccurateRip checksums are not CRC's.
1885
18862009-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1887
1888        * examples/ARcue.py:
1889        * morituri/image/image.py:
1890        * morituri/test/test_image_image.py:
1891          Make everything use TOC for the id's.
1892
18932009-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1894
1895        * morituri/image/image.py:
1896          Refactor to use TOC class.
1897        * morituri/image/toc.py:
1898          Fully document.
1899
19002009-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1901
1902        * morituri/test/test_image_toc.py (added):
1903        * morituri/image/toc.py (added):
1904          Add an abstraction for a TOC.
1905          Take data tracks into account correctly for CDDB and AccurateRip
1906          disc ID's.
1907
19082009-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1909
1910        * morituri/image/image.py:
1911        * morituri/test/test_image_image.py:
1912          AccurateRip binary files actually contain multiple responses, so
1913          parse all of them.
1914        * examples/ARcue.py:
1915          Handle case of not having a response, and having multiple responses.
1916
19172009-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>
1918
1919        * morituri/common/crc.py:
1920          Actually return the CRC when checking frame 5.
1921        * morituri/test/test_image_image.py:
1922          Update test for this fix.
1923
19242009-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
1925
1926        * morituri/image/image.py:
1927          Also look for audio file basename relative to cue file.
1928
19292009-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
1930
1931        * examples/ARcue.py:
1932          Make output a bit nicer, mentioning whether tracks were
1933          accurately ripped.
1934
19352009-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
1936
1937        * morituri/image/image.py:
1938          Add an object to parse the response of AccurateRip.
1939        * morituri/test/test_image_image.py:
1940        * morituri/test/dBAR-011-0010e284-009228a3-9809ff0b.bin (added):
1941          Add a test for it, based on my Kings Of Leon CD.
1942
19432009-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
1944
1945        * morituri/image/image.py:
1946          Add the 150 frames for the leadin only to the CDDB calculation.
1947          Add methods to calculate AccurateRip id's and URL.
1948        * morituri/test/test_image_image.py:
1949          Add tests for it.
1950        * examples/ARcue.py:
1951          Show AccurateRip URL.
1952
19532009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
1954
1955        * examples/ARcue.py:
1956        * morituri/common/crc.py:
1957        * morituri/image/image.py:
1958        * morituri/test/test_image_image.py:
1959          Calculate CDDB disc id.
1960          Tested on my Kings Of Leon CD.
1961
19622009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
1963
1964        * examples/ARcue.py:
1965        * morituri/image/image.py:
1966        * morituri/test/test_image_image.py:
1967          Add a task to verify a disk image, which also calculates
1968          track lengths for tracks the cue file doesn't know the length of.
1969
19702009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
1971
1972        * examples/ARcue.py:
1973          Add option to run either command-line or gtk.
1974
19752009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
1976
1977        * morituri/image/image.py:
1978          Create a MultiTask base class, and make AudioRipCRCTask
1979          use it.
1980
19812009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
1982
1983        * morituri/image/image.py:
1984        * morituri/test/test_image_image.py:
1985          Add a task for calculating frame length of an audio file.
1986          Add a test for it.
1987
19882009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
1989
1990        * morituri/common/task.py:
1991          Schedule the start from the main loop, otherwise the
1992          task might complete before we're in the main loop,
1993          and then the loop.quit() doesn't work.
1994
19952009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
1996
1997        * examples/ARcue.py:
1998        * examples/gtkcrc.py:
1999          Rework both examples to look more similar.
2000
20012009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
2002
2003        * examples/gtkcrc.py:
2004        * morituri/common/task.py:
2005          Move the gtk-based progress bar to task.
2006
20072009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
2008
2009        * examples/gtkcrc.py:
2010        * morituri/common/crc.py:
2011        * morituri/common/task.py:
2012        * morituri/image/image.py:
2013          Add a 'schedule' call to the TaskRunner class, so that we can
2014          abstract things like gobject.timeout_add and reactor.callLater
2015          Pass the runner to the task in Task.start() so a task can call
2016          schedule.
2017
20182009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
2019
2020        * morituri/common/task.py:
2021          Update the docs.
2022
20232009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
2024
2025        * morituri/test/test_image_image.py (added):
2026          Add tests for AudioRip CRC'ing images.
2027
20282009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2029
2030        * morituri/test/track-separate.cue (added):
2031        * morituri/test/track.flac (added):
2032        * morituri/test/Makefile (added):
2033        * morituri/test/track-single.cue (added):
2034          Add a simple 10 frame flac file, and two .cue files
2035          using it.
2036
20372009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2038
2039        * morituri/image/image.py:
2040          If paths are relative, make them relative to cue file.
2041
20422009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2043
2044        * morituri/common/task.py:
2045          clear with whitespace.
2046
20472009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2048
2049        * examples/ARcue.py:
2050        * morituri/common/task.py:
2051        * morituri/image/image.py (added):
2052          Add an object for handling an Image based on a .cue file.
2053          Create a Task for CRC'ing the whole Image.
2054          Make the example use this new task instead.
2055
20562009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2057
2058        * examples/gtkcrc.py:
2059        * morituri/common/task.py:
2060          Add task object to listener interface methods.
2061
20622009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2063
2064        * morituri/common/task.py:
2065          Move methods around.
2066
20672009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2068
2069        * examples/ARcue.py:
2070        * examples/gtkcrc.py:
2071        * morituri/common/crc.py:
2072        * morituri/common/task.py:
2073          Split out generic task/runner from CRC tasks.
2074
20752009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2076
2077        * morituri/common/crc.py (added):
2078          Copy from task.py before splitting.
2079
20802009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2081
2082        * examples/gtkcrc.py:
2083        * morituri/common/task.py:
2084          Don't block the main loop by infinitely scheduling
2085          set_state.
2086
20872009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2088
2089        * examples/ARcue.py:
2090        * examples/gtkcrc.py:
2091        * morituri/common/task.py:
2092          Make a real Task interface and use it.
2093          Make runners reusable for multiple tasks.
2094          gtkcrc.py seems to be blocking updates however.
2095
20962009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2097
2098        * morituri/test (added):
2099        * morituri/test/test_image_cue.py (added):
2100        * morituri/test/kings-single.cue (added):
2101        * morituri/test/__init__.py (added):
2102        * morituri/test/kings-separate.cue (added):
2103          Add test suite.  Add Kings Of Leon cue files.
2104
21052009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2106
2107        * examples/ARcue.py:
2108          Error out when the file doesn't exist.
2109        * morituri/common/task.py:
2110          Drag the lake.
2111          Clean up prints.
2112
21132009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2114
2115        * morituri/common/task.py:
2116          Remove queue to avoid race.
2117          Remove prints.
2118          Clean up debug.
2119          Update progress after handling buffers.
2120
21212009-04-05  Thomas Vander Stichele  <thomas at apestaart dot org>
2122
2123        * morituri/common/task.py:
2124          Introduce constants for FRAMES_PER_DISC_FRAME
2125        * examples/ARcue.py:
2126          Use the constant.
2127          Get the CRC right for the last track too.
2128
21292009-03-26  Thomas Vander Stichele  <thomas at apestaart dot org>
2130
2131        * examples/ARcue.py:
2132        * morituri/common/task.py:
2133          Use an adapter to assemble CD frames.
2134          Take into account special rules for first and last track.
2135          Mention some bugs.
2136          Remember to drag the lake from the task.
2137
21382009-03-22  Thomas Vander Stichele  <thomas at apestaart dot org>
2139
2140        * examples/ARcue.py:
2141        * morituri/common/task.py:
2142          First version that seems to get some AccurateRip checksums right.
2143
21442009-02-28  Thomas Vander Stichele  <thomas at apestaart dot org>
2145
2146        * morituri/image/cue.py:
2147          publicize CueFile.tracks
2148          Add a method to get track lengths
2149        * examples/readcue.py:
2150          Use it.
2151
21522009-02-28  Thomas Vander Stichele  <thomas at apestaart dot org>
2153
2154        * morituri/common/task.py (added):
2155          Add a task abstraction.
2156
Note: See TracBrowser for help on using the repository browser.