source: trunk/ChangeLog @ 435

Revision 435, 63.9 KB checked in by thomas, 2 years ago (diff)
  • morituri/configure/configure.py (svn:keywords): Expand revision.
  • morituri/configure/configure.py: Set it on the revision local.
Line 
12011-05-19  Thomas Vander Stichele  <thomas at apestaart dot org>
2
3        * morituri/configure/configure.py (svn:keywords):
4          Expand revision.
5        * morituri/configure/configure.py:
6          Set it on the revision local.
7
82011-04-08  Thomas Vander Stichele  <thomas at apestaart dot org>
9
10        * morituri/common/encode.py:
11          wavenc does not have merge_tags, it seems.
12          So don't call an element a tagger, don't merge tags if there is
13          no tagger, and complain if there is no merge_tags when we think
14          there should be.
15
162011-03-23  Thomas Vander Stichele  <thomas at apestaart dot org>
17
18        * morituri/program/cdparanoia.py:
19          cdparanoia can hang indefinitely on scsi read errors.
20          For example, on some drives, when trying negative offsets.
21          Notice them, count them, and fail after 100.
22        * morituri/test/test_program_cdparanoia.py:
23        * morituri/test/cdparanoia.progress.error (added):
24          Add a test for this output.
25
262011-03-22  Thomas Vander Stichele  <thomas at apestaart dot org>
27
28        * morituri/common/program.py:
29        * morituri/rip/offset.py:
30          When finding the offset, also load and possibly unmount, resolving
31          to the real path for the device.
32
332011-03-20  Thomas Vander Stichele  <thomas at apestaart dot org>
34
35        * morituri/common/encode.py:
36          Debug failing to write tags better.  See #60.
37
382011-03-20  Thomas Vander Stichele  <thomas at apestaart dot org>
39
40        * morituri/program/cdparanoia.py:
41          Extend FileSizeError with an extra message.
42        * morituri/rip/offset.py:
43          Print a reasonable warning when we cannot rip with a certain offset.
44          See #57.
45
462011-03-17  Thomas Vander Stichele  <thomas at apestaart dot org>
47
48        * morituri/rip/drive.py:
49          Fix typo.  Fixes #59.
50
512011-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>
52
53        * morituri/common/checksum.py:
54          Create a GstException to wrap a Gst.GError.
55          Create a base GstPipelineTask class.
56          Use it in Checksum and TRM tasks.
57          Raise and don't proceed to call .paused() when a GstError happens.
58          Should help debug https://bugs.launchpad.net/bugs/735053
59        * morituri/test/test_common_checksum.py:
60          Adapt test.
61
622011-01-09  Thomas Vander Stichele  <thomas at apestaart dot org>
63
64        patch by: Ross Burton
65
66        * morituri/common/program.py:
67          On compilation albums the album artist is different to the artist.
68          If this is the case, morituri should write both tags.
69          Fixes #43.
70
712011-01-02  Thomas Vander Stichele  <thomas at apestaart dot org>
72
73        * morituri/common/program.py:
74        * morituri/image/table.py:
75        * morituri/rip/cd.py:
76          Get CDDB disc id.  Use it to print info when not found on
77          MusicBrainz.
78
792011-01-01  Thomas Vander Stichele  <thomas at apestaart dot org>
80
81        * morituri/rip/cd.py:
82          Add -U/--unknown option to continue ripping even if the CD is
83          unknown.  Default to False.
84
852010-12-30  Thomas Vander Stichele  <thomas at apestaart dot org>
86
87        * morituri/common/program.py:
88        * morituri/rip/cd.py:
89          Add load and eject device.  Do so before and after ripping.
90
912010-11-14  Thomas Vander Stichele  <thomas at apestaart dot org>
92
93        patch by: Loïc Minier <lool at debian dot org>
94
95        * examples/ARcalibrate.py:
96        * examples/ARcue.py:
97        * examples/readdisc.py:
98        * morituri/rip/cd.py:
99        * morituri/rip/offset.py:
100          s/reponse/response.
101          Fixes #51.
102
1032010-11-08  Thomas Vander Stichele  <thomas at apestaart dot org>
104
105        * morituri/program/cdrdao.py:
106          Add logCategory to CDRDAO tasks.
107          Remove errors from parser, set them publically on task.
108          Properly raise exceptions on data cd's with correct stack origin.
109
1102010-07-08  Thomas Vander Stichele  <thomas at apestaart dot org>
111
112        * morituri/common/program.py:
113          Comment where we got the template variables from.
114        * morituri/rip/cd.py:
115          Document the template variables.
116
1172010-06-19  Thomas Vander Stichele  <thomas at apestaart dot org>
118
119        * morituri/program/cdparanoia.py:
120          Warn about missing cdparanoia too.
121
1222010-06-19  Thomas Vander Stichele  <thomas at apestaart dot org>
123
124        * morituri/common/common.py:
125          Add MissingDependencyException.
126        * morituri/program/cdrdao.py:
127        * morituri/rip/main.py:
128          Use it to warn about missing cdrdao.
129
1302010-06-18  Thomas Vander Stichele  <thomas at apestaart dot org>
131
132        * morituri/common/task.py:
133          Add exception traceback for easier debugging.
134
1352010-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
136
137        * morituri.spec.in:
138          Add requires for python-setuptools since we use parse_version.
139          Fixes #32.
140
1412010-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
142
143        * morituri/common/program.py:
144          Set results by default so that it is set even if we get an
145          exception getting them.
146          Fixes #35.
147
1482010-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>
149
150        * morituri/test/test_image_toc.py:
151          Fix distcheck by writing unicode toc filename in a temp dir.
152
1532010-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>
154
155        * morituri/rip/cd.py:
156          Log the version at the beginning to help in bug reports.
157
1582010-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>
159
160        * morituri/rip/main.py:
161          Fix another UnicodeEncodeError problem as mentioned in #25.
162
1632010-04-18  Thomas Vander Stichele  <thomas at apestaart dot org>
164
165        * morituri/test/Makefile.am:
166        * morituri/test/jose.toc (added):
167        * morituri/test/JoséGonzález.toc (deleted):
168          Rename utf-8 file to a normal file.
169        * morituri/test/common.py:
170        * morituri/test/test_common_checksum.py:
171        * morituri/test/test_common_encode.py:
172        * morituri/test/test_image_image.py:
173        * morituri/test/test_image_toc.py:
174          Copy the normal file first to the utf-8 filename, if supported.
175          Skip tests that need unicode when we are not in a utf-8 locale.
176
1772010-04-17  Thomas Vander Stichele  <thomas at apestaart dot org>
178
179        * configure.ac:
180        * doc/release:
181          Back to trunk.
182
183=== release 0.1.1 ===
184
1852010-04-16  Thomas Vander Stichele  <thomas at apestaart dot org>
186
187        * NEWS:
188        * README:
189        * RELEASE:
190        * configure.ac:
191        * doc/release:
192        * morituri.doap:
193          Releasing 0.1.1, 'Dead'
194
1952010-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
196
197        * morituri/common/encode.py:
198        * morituri/rip/image.py:
199          Provide status on the retagging.
200
2012010-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
202
203        patch by: Peter Oliver
204
205        * morituri/program/cdparanoia.py:
206          Respect umask for encoded files.  Fixes #17.
207
2082010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>
209
210        * morituri/common/encode.py:
211          Before moving the newly tagged file to overwrite the original
212          one, copy over mode.
213
2142010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>
215
216        * morituri/common/program.py:
217          Commit one missing line from patch in #4 for multi-artist discs.
218
2192010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>
220
221        patch by: Peter Oliver
222
223        * morituri/common/program.py:
224          Handle multi-artist releases where track artist is unset.
225          Fixes #14.
226
2272010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>
228
229        * morituri/rip/image.py:
230          Fix more utf-8 issues.
231
2322010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>
233
234        * morituri/image/image.py:
235          Remove dead code.
236
2372010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>
238
239        * morituri/common/encode.py:
240          Fix wrong code for checksum comparison.
241
2422010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>
243
244        * morituri/common/program.py:
245          Rename some vars to start with mbid.  Fix pychecker issues.
246
2472010-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
248
249        * morituri/common/program.py:
250          Add a retagging command.
251          Add a getMusicBrainz() method.
252          Also store musicbrainz track/album/artist ids.
253          Patch provided by Peter Oliver.  Fixes #4.
254        * morituri/rip/cd.py:
255          Use it.
256        * morituri/image/image.py:
257          Add a task to retag an image.
258        * morituri/rip/image.py:
259          Add a command to retag an image.
260
2612010-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
262
263        * morituri/common/encode.py:
264          Add tasks to read, write, and safely retag flac files.
265        * morituri/test/test_common_encode.py:
266          Add tests for this.
267
2682010-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
269
270        * morituri/common/checksum.py:
271          Style fixes.
272        * morituri/common/common.py:
273          Add functions to convert a gst.TagList to a dict and compare them.
274        * morituri/common/task.py:
275          Add setAndRaiseException which gives us an appropriate
276          exceptionMessage as if we raised where we called this new function.
277
2782010-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
279
280        * morituri/common/encode.py:
281          pychecker fix.
282
2832010-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
284
285        * morituri/common/encode.py:
286          Add a task to read tags.
287        * morituri/test/test_common_encode.py:
288          Add a test.
289
2902010-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
291
292        * morituri/common/encode.py:
293          Add a vbr profile.
294
2952010-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
296
297        * morituri/rip/image.py:
298          Don't splitext on inputdir; fixes encoding of directories like
299          Sigur Ros - Takk... (which removed a period)
300
3012010-04-09  Thomas Vander Stichele  <thomas at apestaart dot org>
302
303        * morituri/image/table.py:
304        * morituri/program/cdparanoia.py:
305          Do some 80 character cleanups.
306
3072010-04-08  Thomas Vander Stichele  <thomas at apestaart dot org>
308
309        * morituri/rip/image.py:
310          Fix problem to encode from files with unicode chars.
311
3122010-04-08  Thomas Vander Stichele  <thomas at apestaart dot org>
313
314        * morituri/program/cdparanoia.py:
315          Add some debug.
316        * morituri/common/encode.py:
317          Add more debug.
318          Handle the case where peak is full scale, and peakdB thus 0,
319          which triggered not setting self.peak.
320
3212010-04-06  Thomas Vander Stichele  <thomas at apestaart dot org>
322
323        patch by: Peter Oliver
324
325        * morituri/common/program.py:
326          Allow using sortName for artist/track using %S/%s.
327          Fixes #19.
328
3292010-04-06  Thomas Vander Stichele  <thomas at apestaart dot org>
330
331        * doc/release:
332          Document having clean test run.
333        * morituri/common/encode.py:
334          Catch and properly stop on gst.QueryError.
335          Don't set peak in stop if we had an error.
336        * morituri/test/test_common_encode.py:
337        * morituri/test/test_common_renamer.py:
338        * morituri/test/test_image_cue.py:
339          Clean up after tests.
340
3412010-04-06  Thomas Vander Stichele  <thomas at apestaart dot org>
342
343        * morituri/common/task.py:
344        * morituri/image/cue.py:
345          Add logCategory.
346        * morituri/image/image.py:
347          If subtasks had an exception, retrigger the exception and stop.
348
3492010-04-06  Thomas Vander Stichele  <thomas at apestaart dot org>
350
351        * morituri/image/image.py:
352          Fix AudioLengthTask for the case where we don't have the decoder,
353          by instead of doing get_state, waiting for an ASYNC_DONE or ERROR
354          message.  Properly raise a gst.GError in that case.
355        * morituri/common/task.py:
356          Add some debug.
357        * morituri/test/test_image_image.py:
358          After this fix, we now catch the TYPE_NOT_FOUND because of an
359          empty stream instead of the later gst.QueryError.
360        * morituri/test/test_common_encode.py:
361          Let us know what it is if not a gst.QueryError.
362
3632010-04-05  Thomas Vander Stichele  <thomas at apestaart dot org>
364
365        * doc/Makefile.am:
366          Don't put rip.1 manpage in subdir.
367
3682010-04-05  Thomas Vander Stichele  <thomas at apestaart dot org>
369
370        * morituri/common/common.py:
371          add quoteParse function to quote properly for gst.parse_launch()
372        * morituri/common/checksum.py:
373          Fix single quote problem.
374          use self.setException()
375        * morituri/common/encode.py:
376          Fix single quote problem.
377        * morituri/image/image.py:
378          Fix single quote problem.
379          Reraise gst.QueryError.
380        * morituri/test/test_common_encode.py:
381        * morituri/test/test_common_encode.py (added):
382          Add tests for unicode/single/double quote.
383        * morituri/test/test_image_image.py:
384        * morituri/test/test_common_checksum.py:
385          Add tests for single/double quote.
386        * morituri/test/common.py:
387          add twisted-like failUnlessRaises to TestCase that returns
388          the exception, so we can check wrapped exceptions in TaskException.
389          Fixes #16.
390
3912010-04-05  Thomas Vander Stichele  <thomas at apestaart dot org>
392
393        * morituri/common/task.py:
394          Wrap exceptions during tasks in a TaskException, storing the
395          message, for improved error reporting later on.
396
3972010-04-05  Thomas Vander Stichele  <thomas at apestaart dot org>
398
399        * doc/Makefile.am:
400        * morituri.spec.in:
401        * morituri/extern/Makefile.am:
402          Use help2man.py to generate manpage.
403
4042010-04-04  Thomas Vander Stichele  <thomas at apestaart dot org>
405
406        * morituri/common/encode.py:
407        * morituri/common/program.py:
408        * morituri/image/image.py:
409        * morituri/program/cdparanoia.py:
410        * morituri/rip/cd.py:
411        * morituri/rip/image.py:
412        * morituri/rip/offset.py:
413          Move all gst-using imports inside functions and classes
414          to avoid 'import gst' eating our options.
415          Fixes #12.
416
4172010-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>
418
419        * bin/Makefile.am:
420          Install rip as the script.
421
4222010-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>
423
424        * morituri/common/Makefile.am:
425          Add missing result.py
426        * morituri/test/Makefile.am:
427        * morituri/test/test_image_toc.py:
428        * morituri/test/JoséGonzález.toc (added):
429        * morituri/test/José González.toc (deleted):
430          automake doesn't handle spaces in names, so move it.
431
4322010-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>
433
434        * bin/rip.in:
435          Add our PYTHONLIBDIR to sys.path if needed.  Should make this
436          work when doing ./configure; sudo checkinstall make install
437          on e.g. Ubuntu.
438
4392010-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>
440
441        * configure.ac:
442        * bin/rip.in (added):
443        * bin/rip (deleted):
444          Generate bin/rip so we can do sys.path stuff.
445
4462010-03-14  Thomas Vander Stichele  <thomas at apestaart dot org>
447
448        * morituri/rip/offset.py:
449          Add a more complete list of offsets, obtained using misc/offsets.py
450
4512010-03-14  Thomas Vander Stichele  <thomas at apestaart dot org>
452
453        * misc/offsets.py (added):
454          Add a script to calculate list of offsets based on AccurateRip's
455          online database, according to popularity.
456
4572010-02-28  Thomas Vander Stichele  <thomas at apestaart dot org>
458
459        * morituri/common/encode.py:
460          Handle utf-8 properly.
461
4622010-02-28  Thomas Vander Stichele  <thomas at apestaart dot org>
463
464        * morituri/common/program.py:
465          Fix a problem with Arid's new album of not having an id.
466
4672010-01-31  Thomas Vander Stichele  <thomas at apestaart dot org>
468
469        * morituri/common/accurip.py:
470          The AccuRip cache dir could exist without the file; handle that
471          case.
472
4732009-12-28  Thomas Vander Stichele  <thomas at apestaart dot org>
474
475        * morituri/common/program.py:
476          For Various Artists releases, fall back to the release artist if
477          the track artist is None.
478
4792009-10-17  Thomas Vander Stichele  <thomas at apestaart dot org>
480
481        * morituri/image/image.py:
482          Add ImageEncodeTask to encode a disk image to a different profile
483          and directory.
484        * morituri/common/encode.py:
485          Add lossy encoding profiles for mp3 and vorbis.
486          Rename muxer to tagger since that's what we use it for.
487          Do progress probe after level to make sure we get samples for
488          offsets.
489        * morituri/rip/image.py:
490          Add rip image encode command.
491
4922009-10-17  Thomas Vander Stichele  <thomas at apestaart dot org>
493
494        * morituri/test/José González.toc (added):
495          Add test file for a test.
496
4972009-10-16  Thomas Vander Stichele  <thomas at apestaart dot org>
498
499        * morituri/common/task.py:
500          Add exceptionMessage on Task to store the result of
501          log.getExceptionMessage when the stack is still valid.
502
5032009-09-26  Thomas Vander Stichele  <thomas at apestaart dot org>
504
505        * configure.ac:
506          Back to TRUNK.
507
508=== release 0.1.0 ===
509
5102009-09-26  Thomas Vander Stichele  <thomas at apestaart dot org>
511
512        * NEWS:
513        * RELEASE:
514        * configure.ac:
515          Releasing 0.1.0, "Youngblood".
516
5172009-09-19  Thomas Vander Stichele  <thomas at apestaart dot org>
518
519        * morituri/program/cdparanoia.py:
520          explicitize keyword args.
521          Break some 80+ lines.
522
5232009-09-19  Thomas Vander Stichele  <thomas at apestaart dot org>
524
525        * morituri/rip/offset.py:
526          Pass device parameter to ReadTrackTask.  Thanks to Alex B for
527          spotting this on my blog.
528
5292009-09-12  Thomas Vander Stichele  <thomas at apestaart dot org>
530
531        * morituri/program/cdparanoia.py:
532        * morituri/rip/offset.py:
533          Another unicode fix.
534
5352009-09-12  Thomas Vander Stichele  <thomas at apestaart dot org>
536
537        * HACKING:
538          More unicode notes.
539        * morituri/common/program.py:
540        * morituri/image/table.py:
541        * morituri/image/toc.py:
542        * morituri/result/result.py:
543        * morituri/rip/cd.py:
544        * morituri/test/test_image_toc.py:
545          Further unicode fixes, for options, CD-Text, paths, ...
546
5472009-09-11  Thomas Vander Stichele  <thomas at apestaart dot org>
548
549        * morituri/program/cdrdao.py:
550          Wrap read in an exception handler.
551        * morituri/common/task.py:
552          Debug exceptions more.
553
5542009-09-11  Thomas Vander Stichele  <thomas at apestaart dot org>
555
556        * HACKING:
557          Note unicode handling.
558        * morituri/test/test_image_image.py:
559        * morituri/image/table.py:
560        * morituri/program/cdparanoia.py:
561        * morituri/common/checksum.py:
562          Use unicode for paths.
563          Use repr for path representation.
564        * morituri/test/test_common_checksum.py:
565          Add test for unicode audio file name.
566
5672009-09-11  Thomas Vander Stichele  <thomas at apestaart dot org>
568
569        * morituri/image/cue.py:
570        * morituri/image/toc.py:
571        * morituri/test/test_image_cue.py:
572        * morituri/test/test_image_toc.py:
573          Read input file as utf-8.  Fix logging of paths.
574        * morituri/image/image.py:
575          Document and add asserts for unicodeness of paths.
576          Encode path in launch lines as utf-8
577
5782009-09-11  Thomas Vander Stichele  <thomas at apestaart dot org>
579
580        * morituri/common/task.py:
581          Make SyncRunner wrap start() so we correctly handle any
582          exception being thrown.
583         
5842009-09-11  Thomas Vander Stichele  <thomas at apestaart dot org>
585
586        * morituri/common/checksum.py:
587        * morituri/test/Makefile.am:
588        * morituri/test/test_common_checksum.py (added):
589          Add a check to make sure that checksumming an empty file doesn't
590          hang.  Fix the hang.
591
5922009-09-08  Thomas Vander Stichele  <thomas at apestaart dot org>
593
594        * morituri.spec.in:
595          Add pycdio as requirement.
596
5972009-09-07  Thomas Vander Stichele  <thomas at apestaart dot org>
598
599        * morituri/common/program.py:
600          Fix getting AccurateRip results for albums with a HTOA.
601        * morituri/test/Makefile.am:
602        * morituri/test/test_common_program.py:
603        * morituri/test/silentalarm.result.pickle (added):
604          Add testcase for it, Bloc Party's Silent Alarm.
605
6062009-09-07  Thomas Vander Stichele  <thomas at apestaart dot org>
607
608        * morituri.spec.in:
609          Update requirements to work around known bugs.
610
6112009-09-06  Thomas Vander Stichele  <thomas at apestaart dot org>
612
613        * morituri/rip/cd.py:
614          Fix warning against rebuilt package.
615
6162009-09-06  Thomas Vander Stichele  <thomas at apestaart dot org>
617
618        * README:
619          Fix up dependencies.
620        * morituri.spec.in:
621          Fix dependencies and noarch install location.
622        * morituri/common/Makefile.am:
623          Add result.py to dist
624
6252009-09-06  Thomas Vander Stichele  <thomas at apestaart dot org>
626
627        * configure.ac:
628        * m4/Makefile.am:
629        * m4/as-ac-expand.m4 (added):
630          Correctly set installation dir for noarch python files so that it
631          works on 64 bit.
632
6332009-09-06  Thomas Vander Stichele  <thomas at apestaart dot org>
634
635        * morituri/program/cdrdao.py:
636          Parse version number.
637        * morituri/rip/cd.py:
638          Warn about cdrdao versions with a bug.
639        * morituri/test/test_program_cdrdao.py:
640          Test that we can parse the version.
641
6422009-07-02  Thomas Vander Stichele  <thomas at apestaart dot org>
643
644        * morituri/program/cdrdao.py:
645          Handle errors.  Tested by not having a CD in the drive.
646
6472009-07-02  Thomas Vander Stichele  <thomas at apestaart dot org>
648
649        * morituri/common/task.py:
650          Document better.
651          Create an ITaskListener interface where we can document.
652          Log some more.
653
6542009-06-24  Thomas Vander Stichele  <thomas at apestaart dot org>
655
656        * morituri/test/test_common_program.py:
657        * morituri/common/program.py:
658          Extract a common method to get textual representation of
659          AccurateRip results, and test it.
660        * morituri/rip/cd.py:
661        * morituri/rip/image.py:
662          Use the method.
663
6642009-06-24  Thomas Vander Stichele  <thomas at apestaart dot org>
665
666        * morituri/image/table.py:
667          Fix deprecationwarning for python 2.6
668
6692009-06-24  Thomas Vander Stichele  <thomas at apestaart dot org>
670
671        * morituri/test/test_common_program.py (added):
672        * morituri/common/program.py:
673          Break verifyImage into two so we can test it.
674          Test it using an AccurateRip result for Luke Haines Is Dead
675          which had a wrongly ripped track 10.
676
677
6782009-06-24  Thomas Vander Stichele  <thomas at apestaart dot org>
679
680        * morituri/result/result.py:
681          Document some more.
682
6832009-06-24  Thomas Vander Stichele  <thomas at apestaart dot org>
684
685        * morituri/test/Makefile.am:
686        * morituri/test/dBAR-020-002e5023-029d8e49-040eaa14.bin (added):
687          Add AR result for Luke Haines Is Dead disc 1
688
6892009-06-20  Thomas Vander Stichele  <thomas at apestaart dot org>
690
691        * Makefile.am:
692        * misc/pycheckerrc:
693        * morituri/common/accurip.py:
694        * morituri/common/checksum.py:
695        * morituri/common/encode.py:
696        * morituri/image/table.py:
697        * morituri/rip/drive.py:
698          Fix up for pychecker warnings for 2.6
699          Fix rip drive list, which forgot some modules.
700
7012009-06-16  Thomas Vander Stichele  <thomas at apestaart dot org>
702
703        * morituri/rip/main.py:
704        * morituri/rip/image.py (added):
705          Add command to verify an image.
706        * morituri/common/program.py:
707        * morituri/rip/cd.py:
708          Fix AccurateRip checksum output.
709
7102009-06-16  Thomas Vander Stichele  <thomas at apestaart dot org>
711
712        * morituri/common/drive.py:
713          Really make pycdio and cdio optional.
714        * morituri/rip/drive.py:
715        * morituri/rip/offset.py:
716          Use drive.getAllDevicePaths()
717
7182009-06-15  Thomas Vander Stichele  <thomas at apestaart dot org>
719
720        * morituri/result/result.py:
721          Add max confidence from database.
722        * morituri/common/program.py:
723        * morituri/rip/cd.py:
724          Move AccurateRip checking to program.py
725          Re-rip if verification failed when continuing a rip.
726
7272009-06-15  Thomas Vander Stichele  <thomas at apestaart dot org>
728
729        * morituri/image/cue.py:
730          Better debug.
731
7322009-06-09  Thomas Vander Stichele  <thomas at apestaart dot org>
733
734        * morituri/common/program.py:
735        * morituri/rip/cd.py:
736          Serialize the rip result after every rip, so we can pick up
737          where we left off with all result data.
738
7392009-06-07  Thomas Vander Stichele  <thomas at apestaart dot org>
740
741        * morituri/common/program.py:
742          Move getPath to Program.
743          Remove arguments to ripTrack that can be gotten from
744          trackResult.
745        * morituri/rip/cd.py:
746          Continue without musicbrainz metadata.
747          Unify htoa and normal track ripping.
748        * morituri/result/result.py:
749          Add getTrackResult so it's easier to look up track results
750          when there's a HTOA.
751
7522009-06-07  Thomas Vander Stichele  <thomas at apestaart dot org>
753
754        * morituri/common/program.py:
755        * morituri/rip/cd.py:
756          Move HTOA checking to program.
757
7582009-06-07  Thomas Vander Stichele  <thomas at apestaart dot org>
759
760        * morituri/result/logger.py:
761          Fix for toctable->table
762        * morituri/common/program.py:
763        * morituri/rip/cd.py:
764          Move lots of functionality to program module.
765
7662009-06-07  Thomas Vander Stichele  <thomas at apestaart dot org>
767
768        * morituri/result/result.py:
769          Change toctable to table since it's a full index table.
770        * morituri/common/Makefile.am:
771        * morituri/common/program.py (added):
772          Add module and class for program state.
773        * morituri/rip/cd.py:
774          Use the program state to clean up the do() function.
775
7762009-06-07  Thomas Vander Stichele  <thomas at apestaart dot org>
777
778        * morituri/rip/cd.py:
779          Massage into 80 characters per line.
780          Make pycdio/cdio optional.
781
7822009-06-07  Thomas Vander Stichele  <thomas at apestaart dot org>
783
784        * morituri/rip/drive.py:
785          Make pycdio and cdio optional.
786
7872009-06-07  Thomas Vander Stichele  <thomas at apestaart dot org>
788
789        * morituri/image/table.py:
790          Add getPregap() method.
791        * morituri/rip/cd.py:
792          Use artist.name, not getUniqueName, to avoid monstruous names for
793          Muse.
794          Pass mbdiscid to getPath, so Unknown Disc can be saved with it.
795          Don't set the date if the release doesn't have one.
796          Set pregap on trackResult using new Track.getPregap()
797          Write all log/cue/m3u files as utf-8.
798
7992009-06-06  Thomas Vander Stichele  <thomas at apestaart dot org>
800
801        * morituri/test/cdparanoia.progress:
802          Add a shorter test file, 23 seconds.
803        * morituri/test/test_program_cdparanoia.py:
804          Update the test to adapt.  Check for track quality.
805        * morituri/program/cdparanoia.py:
806          Add a measure of track quality based on the number of reads.
807          Use the [wrote] output for progress updates, a bit more
808          jittery in its output.
809        * morituri/rip/cd.py:
810          Set track quality on RipResult.
811
8122009-06-05  Thomas Vander Stichele  <thomas at apestaart dot org>
813
814        * morituri/rip/cd.py:
815          Use RipResult to store result information.
816        * morituri/result/logger.py (added):
817          Add a Logger to handle the RipResult, much like
818          EAC's log file.
819
8202009-06-05  Thomas Vander Stichele  <thomas at apestaart dot org>
821
822        * morituri/rip/cd.py:
823          Comment out number of track setting on tag for now.
824          MusicBrainz can give us dates in YYYY, YYYY-MM, and YYYY-MM-DD
825          format, so convert to YYYY-MM-DD always.
826          Unmount the data part of the CD we want to rip if it is mounted.
827          Adapt to peak level change.
828          Don't try to write data tracks to the m3u file.
829          Resolve the device path to the actual device path.
830
8312009-06-05  Thomas Vander Stichele  <thomas at apestaart dot org>
832
833        * morituri/result/result.py:
834          Add a Logger base class.
835
8362009-06-05  Thomas Vander Stichele  <thomas at apestaart dot org>
837
838        * configure.ac:
839        * morituri/Makefile.am:
840        * morituri/result (added):
841        * morituri/result/result.py (added):
842        * morituri/result/__init__.py (added):
843        * morituri/result/Makefile.am (added):
844          Add classes to store track and rip results in.
845
8462009-06-04  Thomas Vander Stichele  <thomas at apestaart dot org>
847
848        * morituri/common/common.py:
849          Add an argument for the delimiter in formatting.
850        * morituri/common/encode.py:
851          Most programs use peak volume, not power, so do this too.
852
8532009-06-04  Thomas Vander Stichele  <thomas at apestaart dot org>
854
855        * morituri/test/common.py:
856          Add a method for diffing multiline strings.
857
8582009-06-02  Thomas Vander Stichele  <thomas at apestaart dot org>
859
860        * morituri/common/encode.py:
861          Add a test() method to the profile so we can warn about bad
862          flacenc versions.
863          Encode track number and count, and release date, if possible.
864        * morituri/rip/cd.py:
865          Fix another off-by-one error in the tag encoding.
866
8672009-06-01  Thomas Vander Stichele  <thomas at apestaart dot org>
868
869        * morituri/program/cdparanoia.py:
870        * morituri/rip/cd.py:
871          Handle another off-by-one error in the m3u handling.
872          Add a getTagList function.
873          Use it to encode tags.
874
8752009-06-01  Thomas Vander Stichele  <thomas at apestaart dot org>
876
877        * morituri/common/encode.py:
878        * morituri/program/cdparanoia.py:
879        * morituri/rip/cd.py:
880          Clean up the temporary unencoded file.
881          Pass profile as objects to tasks, so that temp files have the right
882          extension.
883
8842009-06-01  Thomas Vander Stichele  <thomas at apestaart dot org>
885
886        * morituri/common/encode.py:
887        * morituri/program/cdparanoia.py:
888          Add encoding profiles, kept simple for now as a class and
889          subclasses.  Use them to encode.  Calculate peak level while
890          encoding, compared to EAC and replaygain's value.
891        * morituri/rip/cd.py:
892          Use the encoding profiles, ripping with the right extension.
893          Add a --profile parameter for it.
894
8952009-05-31  Thomas Vander Stichele  <thomas at apestaart dot org>
896
897        * morituri/rip/cd.py:
898          Clean up track numbering confusion.
899
9002009-05-26  Thomas Vander Stichele  <thomas at apestaart dot org>
901
902        * morituri/common/encode.py (added):
903        * examples/encode.py (added):
904          Add an Encode Task, hardcoded to flac for now.
905          Add an example, that also sets tags.
906
9072009-05-26  Thomas Vander Stichele  <thomas at apestaart dot org>
908
909        * morituri/common/task.py:
910          Add debug.
911        * morituri/rip/drive.py:
912          Show all drives, not just the ones that happen to have an Audio CD
913          inserted.
914
9152009-05-25  Thomas Vander Stichele  <thomas at apestaart dot org>
916
917        * morituri/rip/cd.py:
918          Add asserts for comparing id's between the simple toc and
919          the full table.
920          Create the output directory before ripping the htoa.
921          Ignore data tracks for now.
922          Don't fail if we have no AccurateRip responses.
923        * morituri/image/table.py:
924          Add a session ivar to Track.
925          Factor in session leadin when calculating track length
926          of last track in a session.
927          add getMusicBrainzSubmitURL()
928          add _getSessionGap() because the session gap size is different
929          for session 2 and all following.
930          Use it in merge() to get offsets right.
931          Fix getAccurateRipURL by only using the audio tracks for the
932          'length in tracks' number
933          Temporarily disable writing out data tracks to a .cue file,
934          since it's not implemented yet.
935          Add canCue to see if we can write a .cue file from the given table,
936          and debug why not if not.
937        * morituri/program/cdrdao.py:
938          Rework to rip each session separately instead of using session 9.
939          This fixes session 9 read-toc missing the pregap.
940          Add a simple LineParser for handling output from disk-info.
941          Count tracks relatively for the session, because the output for
942          session 2 for track numbers picks up where session 1 left off.
943          Don't set leadout from TOC printing since for the same reason
944          session 2's leadout is absolute, not relative to start of session.
945          Add a DiscInfoTask.
946          Convert Table and Toc reading tasks to multitasks, first getting the
947          number of sessions, then reading table/toc for each session.
948
949        * morituri/test/test_image_table.py:
950          Fix up MusicBrainz disc id for my Ladyhawke disc.
951          Add AccurateRip URL verification, compared against EAC's.
952        * morituri/test/test_image_toc.py:
953          Use two separate session read-toc output files to verify
954          the case of Das Capital.
955          Verify musicbrainz URL.
956
9572009-05-25  Thomas Vander Stichele  <thomas at apestaart dot org>
958
959        * morituri/common/task.py:
960          Add documentation.
961          Use a _task counter instead of duplicating tasks to
962          __tasks; this allows us to add tasks after starting.
963          Catch Exceptions during next() so that we don't get
964          stuck in a main loop that doesn't exit.
965          Raise it later when we're done.
966
9672009-05-25  Thomas Vander Stichele  <thomas at apestaart dot org>
968
969        * morituri/common/common.py:
970          Since the version was inherited from the current code
971          in unpickled objects, separate into classVersion and
972          an instanceVersion set from __init__.
973
9742009-05-25  Thomas Vander Stichele  <thomas at apestaart dot org>
975
976        * morituri/image/toc.py:
977          Add a logName for debugging.
978
9792009-05-25  Thomas Vander Stichele  <thomas at apestaart dot org>
980
981        * morituri/program/cdparanoia.py:
982        * morituri/image/image.py:
983          Correctly chain up to parent __init__ for MultiTasks
984
9852009-05-24  Thomas Vander Stichele  <thomas at apestaart dot org>
986
987        * morituri/test/capital.1.toc (added):
988        * morituri/test/capital.2.toc (added):
989          Add two .toc's for two sessions of a 2 session disc
990        * morituri/image/table.py:
991          Add a merge method to merge in a second session.
992        * morituri/test/Makefile.am:
993        * morituri/test/test_image_toc.py:
994          Add a test for merging the Das Capital sessions, gets
995          the CDDB disc id right.
996
9972009-05-24  Thomas Vander Stichele  <thomas at apestaart dot org>
998
999        * morituri/common/common.py:
1000          Add a persisted cache so that we can store pickles on discs.
1001          Automatically delete them if the class version is newer than
1002          the object's.
1003        * morituri/rip/cd.py:
1004          Use it.
1005
10062009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1007
1008        * morituri/image/table.py:
1009          Add a version ivar to help with versioning pickled objects.
1010
10112009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1012
1013        * morituri/program/cdparanoia.py:
1014          Add copy and test CRC's to object.
1015
10162009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1017
1018        * morituri/common/Makefile.am:
1019        * morituri/common/drive.py (added):
1020          Add drive module.
1021
10222009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1023
1024        * morituri/program/cdparanoia.py:
1025        * morituri/program/cdrdao.py:
1026        * morituri/rip/cd.py:
1027        * morituri/rip/offset.py:
1028          Add device argument to ripping/scanning tasks.
1029
10302009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1031
1032        * morituri/common/accurip.py:
1033        * morituri/image/image.py:
1034        * morituri/test/Makefile.am:
1035        * morituri/test/test_image_image.py:
1036        * morituri/test/test_common_accurip.py (added):
1037          Move accuraterip stuff to the accurip module.
1038          Move/create new test file.
1039
10402009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1041
1042        * morituri/rip/Makefile.am:
1043        * morituri/rip/main.py:
1044        * morituri/rip/drive.py (added):
1045          Add 'rip drive list' command to list available drives.
1046        * morituri/common/accurip.py:
1047          Add force.
1048        * morituri/rip/cd.py:
1049          Add --output-directory argument.
1050
10512009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1052
1053        * morituri/common/Makefile.am:
1054        * morituri/rip/cd.py:
1055        * morituri/common/accurip.py (added):
1056          Add a module for handling a cache of AccurateRip results.
1057          Use it.
1058
10592009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1060
1061        * morituri/rip/Makefile.am:
1062        * morituri/rip/main.py:
1063        * morituri/rip/cd.py (added):
1064          Add second command, 'rip cd rip' before factoring out functionality.
1065
10662009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1067
1068        * morituri/rip/Makefile.am:
1069        * morituri/rip/main.py:
1070        * morituri/rip/offset.py (added):
1071          Add first command, 'rip offset find'
1072
10732009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1074
1075        * Makefile.am:
1076        * morituri/test/Makefile.am:
1077          Make distcheck work.
1078
10792009-05-22  Thomas Vander Stichele  <thomas at apestaart dot org>
1080
1081        * morituri/common/checksum.py:
1082          More pychecker fixes.
1083
10842009-05-22  Thomas Vander Stichele  <thomas at apestaart dot org>
1085
1086        * morituri/common/common.py:
1087        * morituri/common/renamer.py:
1088          Pychecker fixes.
1089
10902009-05-22  Thomas Vander Stichele  <thomas at apestaart dot org>
1091
1092        * RELEASE:
1093        * misc/pycheckerrc:
1094        * misc/show-coverage.py:
1095        * morituri/image/Makefile.am:
1096        * morituri/program/Makefile.am:
1097        * RELEASE (added):
1098        * morituri/image/Makefile.am (added):
1099        * morituri/program/Makefile.am (added):
1100        * misc/show-coverage.py (added):
1101        * misc/pycheckerrc (added):
1102          more additions
1103
11042009-05-22  Thomas Vander Stichele  <thomas at apestaart dot org>
1105
1106        * AUTHORS:
1107        * Makefile.am:
1108        * NEWS:
1109        * TODO:
1110        * autogen.sh:
1111        * configure.ac:
1112        * examples/ARcalibrate.py:
1113        * misc/Makefile.am:
1114        * misc/morituri-uninstalled:
1115        * morituri.spec.in:
1116        * morituri/Makefile.am:
1117        * morituri/common/Makefile.am:
1118        * morituri/common/logcommand.py:
1119        * morituri/extern/Makefile.am:
1120        * morituri/rip/Makefile.am:
1121        * morituri/rip/__init__.py:
1122        * morituri/rip/main.py:
1123        * morituri/test/Makefile:
1124        * morituri/test/Makefile.am:
1125        * configure.ac (added):
1126        * AUTHORS (added):
1127        * morituri.spec.in (added):
1128        * Makefile.am (added):
1129        * morituri/test/Makefile.am (added):
1130        * morituri/extern/Makefile.am (added):
1131        * morituri/common/logcommand.py (added):
1132        * morituri/common/Makefile.am (added):
1133        * morituri/Makefile.am (added):
1134        * morituri/rip (added):
1135        * morituri/rip/__init__.py (added):
1136        * morituri/rip/Makefile.am (added):
1137        * morituri/rip/main.py (added):
1138        * misc/Makefile.am (added):
1139        * misc/morituri-uninstalled (added):
1140        * autogen.sh (added):
1141        * NEWS (added):
1142          Start autotooling.  Add a command-line application.
1143
11442009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1145
1146        * morituri/program/cdrdao.py:
1147          read all sessions by reading session 9.
1148        * morituri/image/toc.py:
1149          Parse ZERO statements properly.
1150          Also set absolute offsets when we know them from the .toc file.
1151          Properly set audio flag on tracks.
1152          FIXME: probably doesn't work if the .toc does not have lengths.
1153        * morituri/image/table.py:
1154          Add some debug to cddb disc id calculation.
1155          Fix absolutize function, it was going one index too far.
1156          raise ValueError when overriding .absolute with a wrong value.
1157        * examples/readdisc.py:
1158          Show CDDB disc id at the start.
1159          Assert when toc and table have different disc id's (to be fixed)
1160        * morituri/test/test_image_cue.py:
1161          Update for having the table already with absolute values.
1162        * morituri/test/test_image_toc.py:
1163          Add Ladyhawke CDDB test, it has a data track.
1164
11652009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1166
1167        * examples/readdisc.py:
1168          Move constants to common
1169
11702009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1171
1172        * examples/readdisc.py:
1173        * examples/readhtoa.py:
1174        * examples/readtoc.py:
1175          Rename IndexTable to Table.
1176
11772009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1178
1179        * morituri/image/cue.py:
1180        * morituri/image/image.py:
1181        * morituri/image/table.py:
1182        * morituri/image/toc.py:
1183        * morituri/program/cdparanoia.py:
1184        * morituri/program/cdrdao.py:
1185        * morituri/test/test_image_cue.py:
1186        * morituri/test/test_image_table.py:
1187          Rename IndexTable to Table.
1188
11892009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1190
1191        * morituri/image/cue.py:
1192        * morituri/image/image.py:
1193        * morituri/image/table.py:
1194        * morituri/image/toc.py:
1195        * morituri/program/cdrdao.py:
1196        * morituri/test/test_image_cue.py:
1197        * morituri/test/test_image_table.py:
1198          Rename ITTrack to Track.
1199
12002009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1201
1202        * morituri/common/common.py:
1203        * morituri/image/cue.py:
1204          Use FRAMES_PER_SECOND where appropriate.
1205
12062009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1207
1208        * morituri/common/checksum.py:
1209        * morituri/common/common.py:
1210        * morituri/image/image.py:
1211        * morituri/image/table.py:
1212        * morituri/program/cdparanoia.py:
1213          Move constants to common
1214
12152009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1216
1217        * examples/readdisc.py:
1218          Get our metadata only from the toc.
1219
12202009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1221
1222        * examples/readdisc.py:
1223          Also work for discs without htoa.
1224
12252009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1226
1227        * examples/readdisc.py:
1228          Write .m3u file.
1229
12302009-05-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1231
1232        * examples/readdisc.py:
1233          Rip HTOA as well.  Add disc-template parameter.
1234
12352009-05-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1236
1237        * morituri/image/table.py:
1238          Fix a subtle bug in our CDDB disc id calculation.
1239          The length of the audio should be calculated as the delta
1240          between leadout and start already converted (and truncated)
1241          to seconds.
1242        * morituri/test/bloc.cue:
1243        * morituri/test/test_image_toc.py:
1244          Fix up tests for this.
1245
12462009-05-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1247
1248        * morituri/program/cdparanoia.py:
1249          Fix up track counting so HTOA can be ripped again.
1250        * examples/readhtoa.py:
1251          Fix up example so it works again, tested on Silent Alarm.
1252
12532009-05-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1254
1255        * morituri/test/test_image_toc.py:
1256        * morituri/test/bloc.cue (added):
1257          Add an expected .cue file for the bloc party toc.
1258
12592009-05-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1260
1261        * morituri/image/toc.py:
1262          Calculate the leadout from the sum of the track lengths.
1263        * morituri/test/breeders.cue:
1264        * morituri/test/cure.cue:
1265          Adapt expected results for DISCID.
1266        * morituri/image/table.py:
1267          Add an assert for hasTOC() when doing .cue()
1268        * morituri/test/test_image_toc.py:
1269        * morituri/test/test_image_cue.py:
1270          absolutize before cue()
1271
12722009-05-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1273
1274        * morituri/image/table.py:
1275          Only add DISCID if our table is a TOC (which it isn't
1276          with our current .toc file parsing)
1277        * morituri/test/test_image_cue.py:
1278        * morituri/test/test_image_toc.py:
1279          Fix up tests; testsuite passes again.
1280
12812009-05-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1282
1283        * morituri/image/toc.py:
1284          Add some debugging.
1285
12862009-05-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1287
1288        * morituri/image/table.py:
1289          Update .cue writing:
1290          - customise program name
1291          - add DISCID
1292          - use counter for FILE lines
1293          - put FILE line before TRACK if track does not have INDEX 00
1294          Take counter into account for setFile
1295          Fix off-by-one in setFile
1296        * examples/readdisc.py:
1297          Add --track-template.
1298          Pass counter to setFile.
1299
13002009-05-14  Thomas Vander Stichele  <thomas at apestaart dot org>
1301
1302        * morituri/image/table.py:
1303          Add CDText writing to .cue() method.
1304        * morituri/image/toc.py:
1305          Add CDText parsing.
1306        * morituri/test/test_image_toc.py:
1307        * morituri/test/breeders.cue (added):
1308          Add a test for cue'ing the breeders' toc.
1309
13102009-05-14  Thomas Vander Stichele  <thomas at apestaart dot org>
1311
1312        * morituri/image/table.py:
1313        * morituri/image/toc.py:
1314          Add parsing of ISRC codes.
1315          Add first part of CDTEXT stuff.
1316        * morituri/test/test_image_toc.py:
1317          Add test for converting .toc to .cue
1318        * morituri/test/cure.cue
1319          Add reference for converted cure.toc
1320
13212009-05-10  Thomas Vander Stichele  <thomas at apestaart dot org>
1322
1323        * examples/readhtoa.py:
1324          Fix example.
1325
13262009-05-07  Thomas Vander Stichele  <thomas at apestaart dot org>
1327
1328        * morituri/image/table.py:
1329        * morituri/test/test_image_table.py:
1330          Correctly calculate MusicBrainz disc id for enhanced cd's.
1331
13322009-05-07  Thomas Vander Stichele  <thomas at apestaart dot org>
1333
1334        * morituri/common/task.py:
1335          Log on runners too.
1336        * morituri/program/cdrdao.py:
1337          Abort if output has ERROR by killing and setting an exception.
1338
13392009-05-07  Thomas Vander Stichele  <thomas at apestaart dot org>
1340
1341        * examples/readdisc.py:
1342          filter out slashes when deciding on file names.
1343
13442009-05-07  Thomas Vander Stichele  <thomas at apestaart dot org>
1345
1346        * morituri/common/task.py:
1347        * morituri/image/image.py:
1348          Remove prints.  Describe tasks.
1349
13502009-05-07  Thomas Vander Stichele  <thomas at apestaart dot org>
1351
1352        * morituri/common/task.py:
1353          Add an exception ivar for tasks to set an exception on while
1354          running.  Make SyncRunner raise it during done()
1355        * morituri/program/cdparanoia.py:
1356          Set an exception if the ripped file doesn't match the expected size
1357          (for example when disc is full)
1358
13592009-05-07  Thomas Vander Stichele  <thomas at apestaart dot org>
1360
1361        * morituri/common/common.py:
1362          Set the object when we don't persist.
1363        * examples/readdisc.py:
1364          Small fixes.
1365
13662009-05-06  Thomas Vander Stichele  <thomas at apestaart dot org>
1367
1368        * examples/readdisc.py:
1369          Fix up cue file reading.
1370
13712009-05-06  Thomas Vander Stichele  <thomas at apestaart dot org>
1372
1373        * examples/readdisc.py:
1374          Add musicbrainz code for disc naming.
1375
13762009-05-06  Thomas Vander Stichele  <thomas at apestaart dot org>
1377
1378        * morituri/image/table.py:
1379        * morituri/image/toc.py:
1380          Delete old code.
1381
13822009-05-06  Thomas Vander Stichele  <thomas at apestaart dot org>
1383
1384        * morituri/image/toc.py:
1385        * morituri/test/test_image_toc.py:
1386        * morituri/test/test_program_cdrdao.py:
1387          After careful vetting, fix up the expected values after toc parsing.
1388          Fix (untested) INDEX handling.  Fix handling of START.
1389
13902009-05-05  Thomas Vander Stichele  <thomas at apestaart dot org>
1391
1392        * morituri/image/table.py:
1393        * morituri/test/test_image_table.py:
1394          Implement MusicBrainz disc id.  Works for audio-only discs,
1395          have to figure out why it fails for an Enhanced CD like the
1396          Ladyhawke one.
1397
13982009-05-05  Thomas Vander Stichele  <thomas at apestaart dot org>
1399
1400        * morituri/image/table.py:
1401          Add logging.
1402          Add methods to clear a table of files, and to absolutize indexes
1403          as long as the source is the same file, and to set a File on a
1404          given index, adjusting all following indexes that match the
1405          duration, and check if the IndexTable has all information for a TOC.
1406        * morituri/image/toc.py:
1407          Add logging.
1408          Use a counter for the source.
1409          Fix up index offset calculation.
1410        * morituri/program/cdrdao.py:
1411          Use a real IndexTable as the result, instead of a TocFile.
1412        * morituri/image/cue.py:
1413          Use a real IndexTable to store tracks.
1414        * morituri/test/test_image_toc.py:
1415          The toc file now has a table which has the tracks.
1416          Fix the tests to adjust for wrong index calculations.
1417        * morituri/test/test_image_cue.py:
1418        * morituri/test/test_image_image.py:
1419        * morituri/image/image.py:
1420          The cue file now has a table which has the tracks.
1421        * morituri/test/test_image_table.py:
1422          Add assertions to make sure when the table can serve as a TOC.
1423        * examples/readdisc.py:
1424          Adjust for changes.  Fix up to include AccurateRip results.
1425          First time we can do a complete normal rip including verifying
1426          against AccurateRip results!
1427
14282009-05-05  Thomas Vander Stichele  <thomas at apestaart dot org>
1429
1430        * examples/readdisc.py:
1431        * morituri/image/table.py:
1432        * morituri/test/test_image_table.py:
1433          Fix up and deprecate stuff.
1434
14352009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1436
1437        * examples/movecue.py:
1438        * examples/readcue.py:
1439        * morituri/image/cue.py:
1440        * morituri/image/image.py:
1441        * morituri/image/toc.py:
1442        * morituri/program/cdrdao.py:
1443        * morituri/test/test_image_cue.py:
1444        * morituri/test/test_image_toc.py:
1445          Cue -> CueFile
1446          TOC -> TocFile
1447
14482009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1449
1450        * examples/readdisc.py (added):
1451          Add an example to read a whole disc.  Doesn't work yet.
1452
14532009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1454
1455        * examples/readhtoa.py:
1456          Fix up readhtoa example.  Add offset option.
1457
14582009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1459
1460        * examples/ARcalibrate.py:
1461        * examples/readhtoa.py:
1462        * examples/readtoc.py:
1463        * morituri/program/cdrdao.py:
1464          Rename ReadTOCTask to ReadIndexTableTask.
1465          Rename ReadTableTask to ReadTOCTask.
1466
14672009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1468
1469        * morituri/program/cdrdao.py:
1470          Convert ReadTableTask to a CDRDAOTask subclass.
1471        * examples/ARcalibrate.py:
1472        * morituri/program/cdparanoia.py:
1473          Adapt.
1474
14752009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1476
1477        * morituri/program/cdrdao.py:
1478          Fix up index scanning's progress report.
1479          Add some debugging.
1480
14812009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1482
1483        * morituri/program/cdrdao.py:
1484        * morituri/test/test_program_cdrdao.py:
1485          Fix up tests.  Use an IndexTable.
1486
14872009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1488
1489        * morituri/program/cdrdao.py:
1490          Massage out a base class for running cdrdao.
1491
14922009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1493
1494        * morituri/program/cdrdao.py:
1495        * morituri/test/test_program_cdrdao.py (added):
1496          Split out the parser from the task.  Test the parser.
1497
14982009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1499
1500        * morituri/image/cue.py:
1501        * morituri/image/image.py:
1502        * morituri/image/table.py:
1503        * morituri/program/cdparanoia.py:
1504        * morituri/test/test_image_cue.py:
1505          Move to using a shared IndexTable for everything.
1506          Sadly mixed with a MultiTask rename.
1507
15082009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1509
1510        * morituri/common/checksum.py:
1511          Update debugging.  Add repr.
1512
15132009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1514
1515        * examples/ARcue.py:
1516          Handle case where we have no matching response.
1517
15182009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1519
1520        * morituri/common/task.py:
1521          Distinguish more clearly between MultiSeparateTask and
1522          MultiCombinedTask.
1523
15242009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1525
1526        * morituri/image/cue.py:
1527        * morituri/test/test_image_cue.py:
1528          Add dumping of .cue files.
1529
15302009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1531
1532        * morituri/program/cdparanoia.py:
1533          Use a temporary file to rip to.
1534
15352009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1536
1537        * examples/readtrack.py:
1538          Allow specifying the track to save.
1539
15402009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1541
1542        * morituri/common/task.py:
1543          Make SyncRunner clear previous description/progress task by
1544          tracking longest output given up to now.
1545
15462009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1547
1548        * morituri/program/cdparanoia.py:
1549          Add a task to read and verify a track.
1550        * examples/readtrack.py:
1551          Use it to clean up code.
1552        * morituri/common/task.py:
1553          describe a MultiTask better.
1554
1555
15562009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1557
1558        * morituri/common/common.py:
1559          Create a Persister class to wrap a possible pickle path.
1560        * examples/trm.py:
1561          Use it.
1562
15632009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1564
1565        * morituri/program/cdparanoia.py:
1566          Add table to __init__, so we can correctly calculate cdparanoia's
1567          strange ripping regions.
1568        * examples/ARcalibrate.py:
1569          When we found a positive match on a first track, match all the other
1570          tracks too for confirmation.
1571
15722009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1573
1574        * morituri/common/taskgtk.py:
1575          Bug fix.
1576
15772009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1578
1579        * morituri/common/task.py:
1580        * morituri/common/taskgtk.py:
1581          Split off GtkProgressRunner in separate module to not import gtk
1582          everywhere.
1583        * examples/ARcalibrate.py:
1584        * examples/ARcue.py:
1585        * examples/gtkchecksum.py:
1586        * examples/trm.py:
1587          Adapt.
1588
15892009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1590
1591        * examples/ARcalibrate.py (added):
1592          Add an example that calculates the read offset of your drive
1593          using AccurateRip.
1594
15952009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1596
1597        * morituri/program/cdrdao.py:
1598          Add a task to read the Table.
1599
16002009-05-02  Thomas Vander Stichele  <thomas at apestaart dot org>
1601
1602        * morituri/common/task.py:
1603        * morituri/image/image.py:
1604          Add some debugging.
1605
16062009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1607
1608        * examples/readhtoa.py (added):
1609          Add an example that detects and rips the Hidden Track One Audio.
1610
16112009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1612
1613        * examples/readtoc.py:
1614        * morituri/program/cdrdao.py (added):
1615          Move the ReadTocTask to the new cdrdao module.
1616
16172009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1618
1619        * examples/readtrack.py:
1620        * morituri/program/cdparanoia.py:
1621          Move ReadTrackTask to cdparanoia module.
1622
16232009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1624
1625        * examples/readtrack.py (added):
1626          Add an example that reads a track using cdparanoia.
1627
16282009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1629
1630        * morituri/test/cdparanoia.progress (added):
1631        * morituri/test/test_program_cdparanoia.py (added):
1632        * morituri/program/__init__.py (added):
1633        * morituri/program/cdparanoia.py (added):
1634          Add a module to wrap cdparanoia.  Add a test for parsing
1635          the progress report output.
1636
16372009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1638
1639        * morituri/common/checksum.py:
1640          Debug fixes.
1641
16422009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1643
1644        * morituri/common/common.py:
1645          Create some common functions to parse MSF and back.
1646        * morituri/image/toc.py:
1647          Use it here.
1648
16492009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1650
1651        * examples/trm.py:
1652          Allow loading and saving fingerprints from a pickle.
1653
16542009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1655
1656        * morituri/image/toc.py:
1657        * morituri/test/test_image_toc.py:
1658        * morituri/test/bloc.toc (added):
1659          Fix up .toc parsing to correct index 0 behaviour.
1660          Add Bloc Party's Silent Alarm .toc file to test HTOA.
1661
16622009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1663
1664        * examples/readtoc.py:
1665          Update to work on my desktop.
1666
16672009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1668
1669        * morituri/common/task.py:
1670          Make task subclass log.Log
1671
16722009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1673
1674        * morituri/common/log.py:
1675          Add external log module and use it.
1676
16772009-04-29  Thomas Vander Stichele  <thomas at apestaart dot org>
1678
1679        * morituri/test/cure.toc (added):
1680          Add an example .toc file for the test.
1681
16822009-04-28  Thomas Vander Stichele  <thomas at apestaart dot org>
1683
1684        * examples/readtoc.py:
1685          Extract and print TOC.
1686
16872009-04-28  Thomas Vander Stichele  <thomas at apestaart dot org>
1688
1689        * morituri/test/test_image_toc.py (added):
1690        * morituri/image/toc.py (added):
1691          Add first stab at .toc parsing.
1692
16932009-04-28  Thomas Vander Stichele  <thomas at apestaart dot org>
1694
1695        * examples/readtoc.py:
1696          get errors from output too.
1697
16982009-04-28  Thomas Vander Stichele  <thomas at apestaart dot org>
1699
1700        * morituri/image/image.py:
1701        * morituri/image/table.py:
1702        * morituri/test/test_image_image.py:
1703        * morituri/test/test_image_table.py:
1704          Rename toc.TOC to table.Table
1705
17062009-04-28  Thomas Vander Stichele  <thomas at apestaart dot org>
1707
1708        * morituri/test/test_image_table.py (added):
1709        * morituri/image/table.py (added):
1710        * morituri/test/test_image_toc.py (deleted):
1711        * morituri/image/toc.py (deleted):
1712          Move files around in preparation for the .toc file parsing.
1713
17142009-04-26  Thomas Vander Stichele  <thomas at apestaart dot org>
1715
1716        * examples/movecue.py (added):
1717          Add a script that moves a .cue file in its corresponding directory.
1718
17192009-04-26  Thomas Vander Stichele  <thomas at apestaart dot org>
1720
1721        * morituri/test/kanye.cue (added):
1722          Add a cue test with mixed mode.
1723        * morituri/image/cue.py:
1724        * morituri/test/test_image_cue.py:
1725          Handle it properly.
1726
17272009-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>
1728
1729        * morituri/image/cue.py:
1730          getRealPath should be here, it doesn't need anything outside
1731          the .cue file
1732        * morituri/image/image.py:
1733          Proxy it here.
1734
17352009-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>
1736
1737        * morituri/common/checksum.py:
1738          Add some debugging.
1739        * morituri/test/test_image_image.py:
1740          Run less verbose.
1741
17422009-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>
1743
1744        * morituri/common/task.py:
1745          Allow a SyncRunner to be constructed with verbose too.
1746          Separate a 'running' verbose mode from that.
1747          Fixes unwanted test output.
1748        * morituri/test/test_image_image.py:
1749          Run without verbosity.
1750
17512009-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>
1752
1753        * morituri/test/test_image_image.py:
1754          Fix name.
1755
17562009-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>
1757
1758        * morituri/test/test_common_renamer.py (added):
1759        * morituri/common/renamer.py (added):
1760          Add a way of doing transactional file renames, as well as their
1761          metafile updates.
1762
17632009-04-21  Thomas Vander Stichele  <thomas at apestaart dot org>
1764
1765        * morituri/common/task.py:
1766          Add a 'described' method so listeners can get proper notification
1767          of description changes, and update their description in between
1768          progress changes.
1769          Add a MultiCombinedTask that reports on progress over all tasks
1770          combined.
1771        * examples/trm.py:
1772          Add a playlist option to the example.  Still needs to store results
1773          to pickles, preferably after each completed task.
1774        * morituri/common/checksum.py:
1775          Add audioconvert to make sure we can trm ogg files.
1776
17772009-04-20  Thomas Vander Stichele  <thomas at apestaart dot org>
1778
1779        * morituri/common/task.py:
1780        * morituri/image/image.py:
1781          Move MultiTask to the task module.
1782
17832009-04-20  Thomas Vander Stichele  <thomas at apestaart dot org>
1784
1785        * morituri/common/checksum.py:
1786          Add a task to calculate a trm fingerprint.
1787        * examples/trm.py (added):
1788          Add an example.
1789          Strangely enough it starts burstily, doing 10% directly, halting,
1790          then progressing quickly,
1791
17922009-04-20  Thomas Vander Stichele  <thomas at apestaart dot org>
1793
1794        * examples/ARcue.py:
1795          Fix a bug in the gtk example.
1796
17972009-04-20  Thomas Vander Stichele  <thomas at apestaart dot org>
1798
1799        * examples/readtoc.py:
1800          Read the toc using cdrdao.  Now sets progress based on which
1801          frame it is on.
1802
18032009-04-20  Thomas Vander Stichele  <thomas at apestaart dot org>
1804
1805        * morituri/common/task.py:
1806          Add a __main__ example using DummyTask.
1807
18082009-04-19  Thomas Vander Stichele  <thomas at apestaart dot org>
1809
1810        * morituri/common/task.py:
1811          Make sure we also show progress when it's 0%, at the start.
1812
18132009-04-19  Thomas Vander Stichele  <thomas at apestaart dot org>
1814
1815        * morituri/image/cue.py:
1816          Use names for matches in regexps.
1817
18182009-04-19  Thomas Vander Stichele  <thomas at apestaart dot org>
1819
1820        * examples/readtoc.py (added):
1821          Add an example to read the TOC, not finished yet.
1822
18232009-04-19  Thomas Vander Stichele  <thomas at apestaart dot org>
1824
1825        * morituri/extern (added):
1826        * morituri/extern/__init__.py (added):
1827        * morituri/extern/asyncsub.py (added):
1828          Add extern module; add asynchronous subprocess Popen from
1829          http://code.activestate.com/recipes/440554/
1830
18312009-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1832
1833        * examples/gtkchecksum.py:
1834        * morituri/common/checksum.py:
1835          Final crc->checksum fixes.
1836
18372009-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1838
1839        * examples/ARcue.py:
1840        * morituri/common/checksum.py:
1841        * morituri/image/image.py:
1842        * morituri/image/toc.py:
1843        * examples/gtkchecksum.py (added):
1844        * examples/gtkcrc.py (deleted):
1845          More crc->checksum changes.
1846
18472009-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1848
1849        * examples/ARcue.py:
1850        * morituri/common/checksum.py:
1851        * morituri/image/image.py:
1852        * morituri/test/test_image_image.py:
1853          Change crc to checksum everywhere.
1854
18552009-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1856
1857        * morituri/image/image.py:
1858        * morituri/image/toc.py:
1859        * morituri/common/checksum.py (added):
1860        * morituri/common/crc.py (deleted):
1861          Rename crc to checksum, because AccurateRip checksums are not CRC's.
1862
18632009-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1864
1865        * examples/ARcue.py:
1866        * morituri/image/image.py:
1867        * morituri/test/test_image_image.py:
1868          Make everything use TOC for the id's.
1869
18702009-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1871
1872        * morituri/image/image.py:
1873          Refactor to use TOC class.
1874        * morituri/image/toc.py:
1875          Fully document.
1876
18772009-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1878
1879        * morituri/test/test_image_toc.py (added):
1880        * morituri/image/toc.py (added):
1881          Add an abstraction for a TOC.
1882          Take data tracks into account correctly for CDDB and AccurateRip
1883          disc ID's.
1884
18852009-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1886
1887        * morituri/image/image.py:
1888        * morituri/test/test_image_image.py:
1889          AccurateRip binary files actually contain multiple responses, so
1890          parse all of them.
1891        * examples/ARcue.py:
1892          Handle case of not having a response, and having multiple responses.
1893
18942009-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>
1895
1896        * morituri/common/crc.py:
1897          Actually return the CRC when checking frame 5.
1898        * morituri/test/test_image_image.py:
1899          Update test for this fix.
1900
19012009-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
1902
1903        * morituri/image/image.py:
1904          Also look for audio file basename relative to cue file.
1905
19062009-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
1907
1908        * examples/ARcue.py:
1909          Make output a bit nicer, mentioning whether tracks were
1910          accurately ripped.
1911
19122009-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
1913
1914        * morituri/image/image.py:
1915          Add an object to parse the response of AccurateRip.
1916        * morituri/test/test_image_image.py:
1917        * morituri/test/dBAR-011-0010e284-009228a3-9809ff0b.bin (added):
1918          Add a test for it, based on my Kings Of Leon CD.
1919
19202009-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
1921
1922        * morituri/image/image.py:
1923          Add the 150 frames for the leadin only to the CDDB calculation.
1924          Add methods to calculate AccurateRip id's and URL.
1925        * morituri/test/test_image_image.py:
1926          Add tests for it.
1927        * examples/ARcue.py:
1928          Show AccurateRip URL.
1929
19302009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
1931
1932        * examples/ARcue.py:
1933        * morituri/common/crc.py:
1934        * morituri/image/image.py:
1935        * morituri/test/test_image_image.py:
1936          Calculate CDDB disc id.
1937          Tested on my Kings Of Leon CD.
1938
19392009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
1940
1941        * examples/ARcue.py:
1942        * morituri/image/image.py:
1943        * morituri/test/test_image_image.py:
1944          Add a task to verify a disk image, which also calculates
1945          track lengths for tracks the cue file doesn't know the length of.
1946
19472009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
1948
1949        * examples/ARcue.py:
1950          Add option to run either command-line or gtk.
1951
19522009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
1953
1954        * morituri/image/image.py:
1955          Create a MultiTask base class, and make AudioRipCRCTask
1956          use it.
1957
19582009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
1959
1960        * morituri/image/image.py:
1961        * morituri/test/test_image_image.py:
1962          Add a task for calculating frame length of an audio file.
1963          Add a test for it.
1964
19652009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
1966
1967        * morituri/common/task.py:
1968          Schedule the start from the main loop, otherwise the
1969          task might complete before we're in the main loop,
1970          and then the loop.quit() doesn't work.
1971
19722009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
1973
1974        * examples/ARcue.py:
1975        * examples/gtkcrc.py:
1976          Rework both examples to look more similar.
1977
19782009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
1979
1980        * examples/gtkcrc.py:
1981        * morituri/common/task.py:
1982          Move the gtk-based progress bar to task.
1983
19842009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
1985
1986        * examples/gtkcrc.py:
1987        * morituri/common/crc.py:
1988        * morituri/common/task.py:
1989        * morituri/image/image.py:
1990          Add a 'schedule' call to the TaskRunner class, so that we can
1991          abstract things like gobject.timeout_add and reactor.callLater
1992          Pass the runner to the task in Task.start() so a task can call
1993          schedule.
1994
19952009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
1996
1997        * morituri/common/task.py:
1998          Update the docs.
1999
20002009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
2001
2002        * morituri/test/test_image_image.py (added):
2003          Add tests for AudioRip CRC'ing images.
2004
20052009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2006
2007        * morituri/test/track-separate.cue (added):
2008        * morituri/test/track.flac (added):
2009        * morituri/test/Makefile (added):
2010        * morituri/test/track-single.cue (added):
2011          Add a simple 10 frame flac file, and two .cue files
2012          using it.
2013
20142009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2015
2016        * morituri/image/image.py:
2017          If paths are relative, make them relative to cue file.
2018
20192009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2020
2021        * morituri/common/task.py:
2022          clear with whitespace.
2023
20242009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2025
2026        * examples/ARcue.py:
2027        * morituri/common/task.py:
2028        * morituri/image/image.py (added):
2029          Add an object for handling an Image based on a .cue file.
2030          Create a Task for CRC'ing the whole Image.
2031          Make the example use this new task instead.
2032
20332009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2034
2035        * examples/gtkcrc.py:
2036        * morituri/common/task.py:
2037          Add task object to listener interface methods.
2038
20392009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2040
2041        * morituri/common/task.py:
2042          Move methods around.
2043
20442009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2045
2046        * examples/ARcue.py:
2047        * examples/gtkcrc.py:
2048        * morituri/common/crc.py:
2049        * morituri/common/task.py:
2050          Split out generic task/runner from CRC tasks.
2051
20522009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2053
2054        * morituri/common/crc.py (added):
2055          Copy from task.py before splitting.
2056
20572009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2058
2059        * examples/gtkcrc.py:
2060        * morituri/common/task.py:
2061          Don't block the main loop by infinitely scheduling
2062          set_state.
2063
20642009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2065
2066        * examples/ARcue.py:
2067        * examples/gtkcrc.py:
2068        * morituri/common/task.py:
2069          Make a real Task interface and use it.
2070          Make runners reusable for multiple tasks.
2071          gtkcrc.py seems to be blocking updates however.
2072
20732009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2074
2075        * morituri/test (added):
2076        * morituri/test/test_image_cue.py (added):
2077        * morituri/test/kings-single.cue (added):
2078        * morituri/test/__init__.py (added):
2079        * morituri/test/kings-separate.cue (added):
2080          Add test suite.  Add Kings Of Leon cue files.
2081
20822009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2083
2084        * examples/ARcue.py:
2085          Error out when the file doesn't exist.
2086        * morituri/common/task.py:
2087          Drag the lake.
2088          Clean up prints.
2089
20902009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2091
2092        * morituri/common/task.py:
2093          Remove queue to avoid race.
2094          Remove prints.
2095          Clean up debug.
2096          Update progress after handling buffers.
2097
20982009-04-05  Thomas Vander Stichele  <thomas at apestaart dot org>
2099
2100        * morituri/common/task.py:
2101          Introduce constants for FRAMES_PER_DISC_FRAME
2102        * examples/ARcue.py:
2103          Use the constant.
2104          Get the CRC right for the last track too.
2105
21062009-03-26  Thomas Vander Stichele  <thomas at apestaart dot org>
2107
2108        * examples/ARcue.py:
2109        * morituri/common/task.py:
2110          Use an adapter to assemble CD frames.
2111          Take into account special rules for first and last track.
2112          Mention some bugs.
2113          Remember to drag the lake from the task.
2114
21152009-03-22  Thomas Vander Stichele  <thomas at apestaart dot org>
2116
2117        * examples/ARcue.py:
2118        * morituri/common/task.py:
2119          First version that seems to get some AccurateRip checksums right.
2120
21212009-02-28  Thomas Vander Stichele  <thomas at apestaart dot org>
2122
2123        * morituri/image/cue.py:
2124          publicize CueFile.tracks
2125          Add a method to get track lengths
2126        * examples/readcue.py:
2127          Use it.
2128
21292009-02-28  Thomas Vander Stichele  <thomas at apestaart dot org>
2130
2131        * morituri/common/task.py (added):
2132          Add a task abstraction.
2133
Note: See TracBrowser for help on using the repository browser.