source: trunk/ChangeLog @ 444

Revision 444, 65.6 KB checked in by thomas, 2 years ago (diff)
  • morituri/test/Makefile.am: Package error progress output. Fixes distcheck on slaves.
Line 
12011-05-21  Thomas Vander Stichele  <thomas at apestaart dot org>
2
3        * morituri/test/Makefile.am:
4          Package error progress output.  Fixes distcheck on slaves.
5
62011-05-21  Thomas Vander Stichele  <thomas at apestaart dot org>
7
8        * morituri/test/test_program_cdparanoia.py:
9          Update expected quality percentage.
10          Was broken since its commit in [432].
11
122011-05-21  Thomas Vander Stichele  <thomas at apestaart dot org>
13
14        * morituri/common/checksum.py:
15        * morituri/common/encode.py:
16        * morituri/image/table.py:
17        * morituri/rip/cd.py:
18        * morituri/rip/image.py:
19        * morituri/rip/offset.py:
20        * morituri/test/test_common_accurip.py:
21        * morituri/test/test_common_checksum.py:
22        * morituri/test/test_image_cue.py:
23        * morituri/test/test_image_table.py:
24          Pychecker fixes.
25
262011-05-21  Thomas Vander Stichele  <thomas at apestaart dot org>
27
28        * morituri/common/checksum.py:
29          Actually raise the exception.
30        * morituri/common/task.py:
31          Document interface more clearly.
32        * morituri/test/test_common_checksum.py:
33          Use tcommon for test.common
34
352011-05-19  Thomas Vander Stichele  <thomas at apestaart dot org>
36
37        * morituri/common/common.py:
38          Don't fail on loading pickle.
39
402011-05-19  Thomas Vander Stichele  <thomas at apestaart dot org>
41
42        * morituri/common/encode.py:
43          Alac does not have merge_tags.  Fixes #15.
44
452011-05-19  Thomas Vander Stichele  <thomas at apestaart dot org>
46
47        * morituri/program/cdparanoia.py:
48        * morituri/common/encode.py:
49        * morituri/common/program.py:
50        * morituri/rip/cd.py:
51          Add action and what args to describe task better.
52
532011-05-19  Thomas Vander Stichele  <thomas at apestaart dot org>
54
55        * morituri/common/task.py:
56          Add more debug.
57
582011-05-19  Thomas Vander Stichele  <thomas at apestaart dot org>
59
60        * morituri/rip/main.py:
61          More debug info: args, version, revision.
62
632011-05-19  Thomas Vander Stichele  <thomas at apestaart dot org>
64
65        * morituri/configure/configure.py (svn:keywords):
66          Expand revision.
67        * morituri/configure/configure.py:
68          Set it on the revision local.
69
702011-04-08  Thomas Vander Stichele  <thomas at apestaart dot org>
71
72        * morituri/common/encode.py:
73          wavenc does not have merge_tags, it seems.
74          So don't call an element a tagger, don't merge tags if there is
75          no tagger, and complain if there is no merge_tags when we think
76          there should be.
77
782011-03-23  Thomas Vander Stichele  <thomas at apestaart dot org>
79
80        * morituri/program/cdparanoia.py:
81          cdparanoia can hang indefinitely on scsi read errors.
82          For example, on some drives, when trying negative offsets.
83          Notice them, count them, and fail after 100.
84        * morituri/test/test_program_cdparanoia.py:
85        * morituri/test/cdparanoia.progress.error (added):
86          Add a test for this output.
87
882011-03-22  Thomas Vander Stichele  <thomas at apestaart dot org>
89
90        * morituri/common/program.py:
91        * morituri/rip/offset.py:
92          When finding the offset, also load and possibly unmount, resolving
93          to the real path for the device.
94
952011-03-20  Thomas Vander Stichele  <thomas at apestaart dot org>
96
97        * morituri/common/encode.py:
98          Debug failing to write tags better.  See #60.
99
1002011-03-20  Thomas Vander Stichele  <thomas at apestaart dot org>
101
102        * morituri/program/cdparanoia.py:
103          Extend FileSizeError with an extra message.
104        * morituri/rip/offset.py:
105          Print a reasonable warning when we cannot rip with a certain offset.
106          See #57.
107
1082011-03-17  Thomas Vander Stichele  <thomas at apestaart dot org>
109
110        * morituri/rip/drive.py:
111          Fix typo.  Fixes #59.
112
1132011-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>
114
115        * morituri/common/checksum.py:
116          Create a GstException to wrap a Gst.GError.
117          Create a base GstPipelineTask class.
118          Use it in Checksum and TRM tasks.
119          Raise and don't proceed to call .paused() when a GstError happens.
120          Should help debug https://bugs.launchpad.net/bugs/735053
121        * morituri/test/test_common_checksum.py:
122          Adapt test.
123
1242011-01-09  Thomas Vander Stichele  <thomas at apestaart dot org>
125
126        patch by: Ross Burton
127
128        * morituri/common/program.py:
129          On compilation albums the album artist is different to the artist.
130          If this is the case, morituri should write both tags.
131          Fixes #43.
132
1332011-01-02  Thomas Vander Stichele  <thomas at apestaart dot org>
134
135        * morituri/common/program.py:
136        * morituri/image/table.py:
137        * morituri/rip/cd.py:
138          Get CDDB disc id.  Use it to print info when not found on
139          MusicBrainz.
140
1412011-01-01  Thomas Vander Stichele  <thomas at apestaart dot org>
142
143        * morituri/rip/cd.py:
144          Add -U/--unknown option to continue ripping even if the CD is
145          unknown.  Default to False.
146
1472010-12-30  Thomas Vander Stichele  <thomas at apestaart dot org>
148
149        * morituri/common/program.py:
150        * morituri/rip/cd.py:
151          Add load and eject device.  Do so before and after ripping.
152
1532010-11-14  Thomas Vander Stichele  <thomas at apestaart dot org>
154
155        patch by: Loïc Minier <lool at debian dot org>
156
157        * examples/ARcalibrate.py:
158        * examples/ARcue.py:
159        * examples/readdisc.py:
160        * morituri/rip/cd.py:
161        * morituri/rip/offset.py:
162          s/reponse/response.
163          Fixes #51.
164
1652010-11-08  Thomas Vander Stichele  <thomas at apestaart dot org>
166
167        * morituri/program/cdrdao.py:
168          Add logCategory to CDRDAO tasks.
169          Remove errors from parser, set them publically on task.
170          Properly raise exceptions on data cd's with correct stack origin.
171
1722010-07-08  Thomas Vander Stichele  <thomas at apestaart dot org>
173
174        * morituri/common/program.py:
175          Comment where we got the template variables from.
176        * morituri/rip/cd.py:
177          Document the template variables.
178
1792010-06-19  Thomas Vander Stichele  <thomas at apestaart dot org>
180
181        * morituri/program/cdparanoia.py:
182          Warn about missing cdparanoia too.
183
1842010-06-19  Thomas Vander Stichele  <thomas at apestaart dot org>
185
186        * morituri/common/common.py:
187          Add MissingDependencyException.
188        * morituri/program/cdrdao.py:
189        * morituri/rip/main.py:
190          Use it to warn about missing cdrdao.
191
1922010-06-18  Thomas Vander Stichele  <thomas at apestaart dot org>
193
194        * morituri/common/task.py:
195          Add exception traceback for easier debugging.
196
1972010-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
198
199        * morituri.spec.in:
200          Add requires for python-setuptools since we use parse_version.
201          Fixes #32.
202
2032010-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
204
205        * morituri/common/program.py:
206          Set results by default so that it is set even if we get an
207          exception getting them.
208          Fixes #35.
209
2102010-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>
211
212        * morituri/test/test_image_toc.py:
213          Fix distcheck by writing unicode toc filename in a temp dir.
214
2152010-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>
216
217        * morituri/rip/cd.py:
218          Log the version at the beginning to help in bug reports.
219
2202010-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>
221
222        * morituri/rip/main.py:
223          Fix another UnicodeEncodeError problem as mentioned in #25.
224
2252010-04-18  Thomas Vander Stichele  <thomas at apestaart dot org>
226
227        * morituri/test/Makefile.am:
228        * morituri/test/jose.toc (added):
229        * morituri/test/JoséGonzález.toc (deleted):
230          Rename utf-8 file to a normal file.
231        * morituri/test/common.py:
232        * morituri/test/test_common_checksum.py:
233        * morituri/test/test_common_encode.py:
234        * morituri/test/test_image_image.py:
235        * morituri/test/test_image_toc.py:
236          Copy the normal file first to the utf-8 filename, if supported.
237          Skip tests that need unicode when we are not in a utf-8 locale.
238
2392010-04-17  Thomas Vander Stichele  <thomas at apestaart dot org>
240
241        * configure.ac:
242        * doc/release:
243          Back to trunk.
244
245=== release 0.1.1 ===
246
2472010-04-16  Thomas Vander Stichele  <thomas at apestaart dot org>
248
249        * NEWS:
250        * README:
251        * RELEASE:
252        * configure.ac:
253        * doc/release:
254        * morituri.doap:
255          Releasing 0.1.1, 'Dead'
256
2572010-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
258
259        * morituri/common/encode.py:
260        * morituri/rip/image.py:
261          Provide status on the retagging.
262
2632010-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
264
265        patch by: Peter Oliver
266
267        * morituri/program/cdparanoia.py:
268          Respect umask for encoded files.  Fixes #17.
269
2702010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>
271
272        * morituri/common/encode.py:
273          Before moving the newly tagged file to overwrite the original
274          one, copy over mode.
275
2762010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>
277
278        * morituri/common/program.py:
279          Commit one missing line from patch in #4 for multi-artist discs.
280
2812010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>
282
283        patch by: Peter Oliver
284
285        * morituri/common/program.py:
286          Handle multi-artist releases where track artist is unset.
287          Fixes #14.
288
2892010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>
290
291        * morituri/rip/image.py:
292          Fix more utf-8 issues.
293
2942010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>
295
296        * morituri/image/image.py:
297          Remove dead code.
298
2992010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>
300
301        * morituri/common/encode.py:
302          Fix wrong code for checksum comparison.
303
3042010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>
305
306        * morituri/common/program.py:
307          Rename some vars to start with mbid.  Fix pychecker issues.
308
3092010-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
310
311        * morituri/common/program.py:
312          Add a retagging command.
313          Add a getMusicBrainz() method.
314          Also store musicbrainz track/album/artist ids.
315          Patch provided by Peter Oliver.  Fixes #4.
316        * morituri/rip/cd.py:
317          Use it.
318        * morituri/image/image.py:
319          Add a task to retag an image.
320        * morituri/rip/image.py:
321          Add a command to retag an image.
322
3232010-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
324
325        * morituri/common/encode.py:
326          Add tasks to read, write, and safely retag flac files.
327        * morituri/test/test_common_encode.py:
328          Add tests for this.
329
3302010-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
331
332        * morituri/common/checksum.py:
333          Style fixes.
334        * morituri/common/common.py:
335          Add functions to convert a gst.TagList to a dict and compare them.
336        * morituri/common/task.py:
337          Add setAndRaiseException which gives us an appropriate
338          exceptionMessage as if we raised where we called this new function.
339
3402010-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
341
342        * morituri/common/encode.py:
343          pychecker fix.
344
3452010-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
346
347        * morituri/common/encode.py:
348          Add a task to read tags.
349        * morituri/test/test_common_encode.py:
350          Add a test.
351
3522010-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
353
354        * morituri/common/encode.py:
355          Add a vbr profile.
356
3572010-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
358
359        * morituri/rip/image.py:
360          Don't splitext on inputdir; fixes encoding of directories like
361          Sigur Ros - Takk... (which removed a period)
362
3632010-04-09  Thomas Vander Stichele  <thomas at apestaart dot org>
364
365        * morituri/image/table.py:
366        * morituri/program/cdparanoia.py:
367          Do some 80 character cleanups.
368
3692010-04-08  Thomas Vander Stichele  <thomas at apestaart dot org>
370
371        * morituri/rip/image.py:
372          Fix problem to encode from files with unicode chars.
373
3742010-04-08  Thomas Vander Stichele  <thomas at apestaart dot org>
375
376        * morituri/program/cdparanoia.py:
377          Add some debug.
378        * morituri/common/encode.py:
379          Add more debug.
380          Handle the case where peak is full scale, and peakdB thus 0,
381          which triggered not setting self.peak.
382
3832010-04-06  Thomas Vander Stichele  <thomas at apestaart dot org>
384
385        patch by: Peter Oliver
386
387        * morituri/common/program.py:
388          Allow using sortName for artist/track using %S/%s.
389          Fixes #19.
390
3912010-04-06  Thomas Vander Stichele  <thomas at apestaart dot org>
392
393        * doc/release:
394          Document having clean test run.
395        * morituri/common/encode.py:
396          Catch and properly stop on gst.QueryError.
397          Don't set peak in stop if we had an error.
398        * morituri/test/test_common_encode.py:
399        * morituri/test/test_common_renamer.py:
400        * morituri/test/test_image_cue.py:
401          Clean up after tests.
402
4032010-04-06  Thomas Vander Stichele  <thomas at apestaart dot org>
404
405        * morituri/common/task.py:
406        * morituri/image/cue.py:
407          Add logCategory.
408        * morituri/image/image.py:
409          If subtasks had an exception, retrigger the exception and stop.
410
4112010-04-06  Thomas Vander Stichele  <thomas at apestaart dot org>
412
413        * morituri/image/image.py:
414          Fix AudioLengthTask for the case where we don't have the decoder,
415          by instead of doing get_state, waiting for an ASYNC_DONE or ERROR
416          message.  Properly raise a gst.GError in that case.
417        * morituri/common/task.py:
418          Add some debug.
419        * morituri/test/test_image_image.py:
420          After this fix, we now catch the TYPE_NOT_FOUND because of an
421          empty stream instead of the later gst.QueryError.
422        * morituri/test/test_common_encode.py:
423          Let us know what it is if not a gst.QueryError.
424
4252010-04-05  Thomas Vander Stichele  <thomas at apestaart dot org>
426
427        * doc/Makefile.am:
428          Don't put rip.1 manpage in subdir.
429
4302010-04-05  Thomas Vander Stichele  <thomas at apestaart dot org>
431
432        * morituri/common/common.py:
433          add quoteParse function to quote properly for gst.parse_launch()
434        * morituri/common/checksum.py:
435          Fix single quote problem.
436          use self.setException()
437        * morituri/common/encode.py:
438          Fix single quote problem.
439        * morituri/image/image.py:
440          Fix single quote problem.
441          Reraise gst.QueryError.
442        * morituri/test/test_common_encode.py:
443        * morituri/test/test_common_encode.py (added):
444          Add tests for unicode/single/double quote.
445        * morituri/test/test_image_image.py:
446        * morituri/test/test_common_checksum.py:
447          Add tests for single/double quote.
448        * morituri/test/common.py:
449          add twisted-like failUnlessRaises to TestCase that returns
450          the exception, so we can check wrapped exceptions in TaskException.
451          Fixes #16.
452
4532010-04-05  Thomas Vander Stichele  <thomas at apestaart dot org>
454
455        * morituri/common/task.py:
456          Wrap exceptions during tasks in a TaskException, storing the
457          message, for improved error reporting later on.
458
4592010-04-05  Thomas Vander Stichele  <thomas at apestaart dot org>
460
461        * doc/Makefile.am:
462        * morituri.spec.in:
463        * morituri/extern/Makefile.am:
464          Use help2man.py to generate manpage.
465
4662010-04-04  Thomas Vander Stichele  <thomas at apestaart dot org>
467
468        * morituri/common/encode.py:
469        * morituri/common/program.py:
470        * morituri/image/image.py:
471        * morituri/program/cdparanoia.py:
472        * morituri/rip/cd.py:
473        * morituri/rip/image.py:
474        * morituri/rip/offset.py:
475          Move all gst-using imports inside functions and classes
476          to avoid 'import gst' eating our options.
477          Fixes #12.
478
4792010-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>
480
481        * bin/Makefile.am:
482          Install rip as the script.
483
4842010-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>
485
486        * morituri/common/Makefile.am:
487          Add missing result.py
488        * morituri/test/Makefile.am:
489        * morituri/test/test_image_toc.py:
490        * morituri/test/JoséGonzález.toc (added):
491        * morituri/test/José González.toc (deleted):
492          automake doesn't handle spaces in names, so move it.
493
4942010-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>
495
496        * bin/rip.in:
497          Add our PYTHONLIBDIR to sys.path if needed.  Should make this
498          work when doing ./configure; sudo checkinstall make install
499          on e.g. Ubuntu.
500
5012010-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>
502
503        * configure.ac:
504        * bin/rip.in (added):
505        * bin/rip (deleted):
506          Generate bin/rip so we can do sys.path stuff.
507
5082010-03-14  Thomas Vander Stichele  <thomas at apestaart dot org>
509
510        * morituri/rip/offset.py:
511          Add a more complete list of offsets, obtained using misc/offsets.py
512
5132010-03-14  Thomas Vander Stichele  <thomas at apestaart dot org>
514
515        * misc/offsets.py (added):
516          Add a script to calculate list of offsets based on AccurateRip's
517          online database, according to popularity.
518
5192010-02-28  Thomas Vander Stichele  <thomas at apestaart dot org>
520
521        * morituri/common/encode.py:
522          Handle utf-8 properly.
523
5242010-02-28  Thomas Vander Stichele  <thomas at apestaart dot org>
525
526        * morituri/common/program.py:
527          Fix a problem with Arid's new album of not having an id.
528
5292010-01-31  Thomas Vander Stichele  <thomas at apestaart dot org>
530
531        * morituri/common/accurip.py:
532          The AccuRip cache dir could exist without the file; handle that
533          case.
534
5352009-12-28  Thomas Vander Stichele  <thomas at apestaart dot org>
536
537        * morituri/common/program.py:
538          For Various Artists releases, fall back to the release artist if
539          the track artist is None.
540
5412009-10-17  Thomas Vander Stichele  <thomas at apestaart dot org>
542
543        * morituri/image/image.py:
544          Add ImageEncodeTask to encode a disk image to a different profile
545          and directory.
546        * morituri/common/encode.py:
547          Add lossy encoding profiles for mp3 and vorbis.
548          Rename muxer to tagger since that's what we use it for.
549          Do progress probe after level to make sure we get samples for
550          offsets.
551        * morituri/rip/image.py:
552          Add rip image encode command.
553
5542009-10-17  Thomas Vander Stichele  <thomas at apestaart dot org>
555
556        * morituri/test/José González.toc (added):
557          Add test file for a test.
558
5592009-10-16  Thomas Vander Stichele  <thomas at apestaart dot org>
560
561        * morituri/common/task.py:
562          Add exceptionMessage on Task to store the result of
563          log.getExceptionMessage when the stack is still valid.
564
5652009-09-26  Thomas Vander Stichele  <thomas at apestaart dot org>
566
567        * configure.ac:
568          Back to TRUNK.
569
570=== release 0.1.0 ===
571
5722009-09-26  Thomas Vander Stichele  <thomas at apestaart dot org>
573
574        * NEWS:
575        * RELEASE:
576        * configure.ac:
577          Releasing 0.1.0, "Youngblood".
578
5792009-09-19  Thomas Vander Stichele  <thomas at apestaart dot org>
580
581        * morituri/program/cdparanoia.py:
582          explicitize keyword args.
583          Break some 80+ lines.
584
5852009-09-19  Thomas Vander Stichele  <thomas at apestaart dot org>
586
587        * morituri/rip/offset.py:
588          Pass device parameter to ReadTrackTask.  Thanks to Alex B for
589          spotting this on my blog.
590
5912009-09-12  Thomas Vander Stichele  <thomas at apestaart dot org>
592
593        * morituri/program/cdparanoia.py:
594        * morituri/rip/offset.py:
595          Another unicode fix.
596
5972009-09-12  Thomas Vander Stichele  <thomas at apestaart dot org>
598
599        * HACKING:
600          More unicode notes.
601        * morituri/common/program.py:
602        * morituri/image/table.py:
603        * morituri/image/toc.py:
604        * morituri/result/result.py:
605        * morituri/rip/cd.py:
606        * morituri/test/test_image_toc.py:
607          Further unicode fixes, for options, CD-Text, paths, ...
608
6092009-09-11  Thomas Vander Stichele  <thomas at apestaart dot org>
610
611        * morituri/program/cdrdao.py:
612          Wrap read in an exception handler.
613        * morituri/common/task.py:
614          Debug exceptions more.
615
6162009-09-11  Thomas Vander Stichele  <thomas at apestaart dot org>
617
618        * HACKING:
619          Note unicode handling.
620        * morituri/test/test_image_image.py:
621        * morituri/image/table.py:
622        * morituri/program/cdparanoia.py:
623        * morituri/common/checksum.py:
624          Use unicode for paths.
625          Use repr for path representation.
626        * morituri/test/test_common_checksum.py:
627          Add test for unicode audio file name.
628
6292009-09-11  Thomas Vander Stichele  <thomas at apestaart dot org>
630
631        * morituri/image/cue.py:
632        * morituri/image/toc.py:
633        * morituri/test/test_image_cue.py:
634        * morituri/test/test_image_toc.py:
635          Read input file as utf-8.  Fix logging of paths.
636        * morituri/image/image.py:
637          Document and add asserts for unicodeness of paths.
638          Encode path in launch lines as utf-8
639
6402009-09-11  Thomas Vander Stichele  <thomas at apestaart dot org>
641
642        * morituri/common/task.py:
643          Make SyncRunner wrap start() so we correctly handle any
644          exception being thrown.
645         
6462009-09-11  Thomas Vander Stichele  <thomas at apestaart dot org>
647
648        * morituri/common/checksum.py:
649        * morituri/test/Makefile.am:
650        * morituri/test/test_common_checksum.py (added):
651          Add a check to make sure that checksumming an empty file doesn't
652          hang.  Fix the hang.
653
6542009-09-08  Thomas Vander Stichele  <thomas at apestaart dot org>
655
656        * morituri.spec.in:
657          Add pycdio as requirement.
658
6592009-09-07  Thomas Vander Stichele  <thomas at apestaart dot org>
660
661        * morituri/common/program.py:
662          Fix getting AccurateRip results for albums with a HTOA.
663        * morituri/test/Makefile.am:
664        * morituri/test/test_common_program.py:
665        * morituri/test/silentalarm.result.pickle (added):
666          Add testcase for it, Bloc Party's Silent Alarm.
667
6682009-09-07  Thomas Vander Stichele  <thomas at apestaart dot org>
669
670        * morituri.spec.in:
671          Update requirements to work around known bugs.
672
6732009-09-06  Thomas Vander Stichele  <thomas at apestaart dot org>
674
675        * morituri/rip/cd.py:
676          Fix warning against rebuilt package.
677
6782009-09-06  Thomas Vander Stichele  <thomas at apestaart dot org>
679
680        * README:
681          Fix up dependencies.
682        * morituri.spec.in:
683          Fix dependencies and noarch install location.
684        * morituri/common/Makefile.am:
685          Add result.py to dist
686
6872009-09-06  Thomas Vander Stichele  <thomas at apestaart dot org>
688
689        * configure.ac:
690        * m4/Makefile.am:
691        * m4/as-ac-expand.m4 (added):
692          Correctly set installation dir for noarch python files so that it
693          works on 64 bit.
694
6952009-09-06  Thomas Vander Stichele  <thomas at apestaart dot org>
696
697        * morituri/program/cdrdao.py:
698          Parse version number.
699        * morituri/rip/cd.py:
700          Warn about cdrdao versions with a bug.
701        * morituri/test/test_program_cdrdao.py:
702          Test that we can parse the version.
703
7042009-07-02  Thomas Vander Stichele  <thomas at apestaart dot org>
705
706        * morituri/program/cdrdao.py:
707          Handle errors.  Tested by not having a CD in the drive.
708
7092009-07-02  Thomas Vander Stichele  <thomas at apestaart dot org>
710
711        * morituri/common/task.py:
712          Document better.
713          Create an ITaskListener interface where we can document.
714          Log some more.
715
7162009-06-24  Thomas Vander Stichele  <thomas at apestaart dot org>
717
718        * morituri/test/test_common_program.py:
719        * morituri/common/program.py:
720          Extract a common method to get textual representation of
721          AccurateRip results, and test it.
722        * morituri/rip/cd.py:
723        * morituri/rip/image.py:
724          Use the method.
725
7262009-06-24  Thomas Vander Stichele  <thomas at apestaart dot org>
727
728        * morituri/image/table.py:
729          Fix deprecationwarning for python 2.6
730
7312009-06-24  Thomas Vander Stichele  <thomas at apestaart dot org>
732
733        * morituri/test/test_common_program.py (added):
734        * morituri/common/program.py:
735          Break verifyImage into two so we can test it.
736          Test it using an AccurateRip result for Luke Haines Is Dead
737          which had a wrongly ripped track 10.
738
739
7402009-06-24  Thomas Vander Stichele  <thomas at apestaart dot org>
741
742        * morituri/result/result.py:
743          Document some more.
744
7452009-06-24  Thomas Vander Stichele  <thomas at apestaart dot org>
746
747        * morituri/test/Makefile.am:
748        * morituri/test/dBAR-020-002e5023-029d8e49-040eaa14.bin (added):
749          Add AR result for Luke Haines Is Dead disc 1
750
7512009-06-20  Thomas Vander Stichele  <thomas at apestaart dot org>
752
753        * Makefile.am:
754        * misc/pycheckerrc:
755        * morituri/common/accurip.py:
756        * morituri/common/checksum.py:
757        * morituri/common/encode.py:
758        * morituri/image/table.py:
759        * morituri/rip/drive.py:
760          Fix up for pychecker warnings for 2.6
761          Fix rip drive list, which forgot some modules.
762
7632009-06-16  Thomas Vander Stichele  <thomas at apestaart dot org>
764
765        * morituri/rip/main.py:
766        * morituri/rip/image.py (added):
767          Add command to verify an image.
768        * morituri/common/program.py:
769        * morituri/rip/cd.py:
770          Fix AccurateRip checksum output.
771
7722009-06-16  Thomas Vander Stichele  <thomas at apestaart dot org>
773
774        * morituri/common/drive.py:
775          Really make pycdio and cdio optional.
776        * morituri/rip/drive.py:
777        * morituri/rip/offset.py:
778          Use drive.getAllDevicePaths()
779
7802009-06-15  Thomas Vander Stichele  <thomas at apestaart dot org>
781
782        * morituri/result/result.py:
783          Add max confidence from database.
784        * morituri/common/program.py:
785        * morituri/rip/cd.py:
786          Move AccurateRip checking to program.py
787          Re-rip if verification failed when continuing a rip.
788
7892009-06-15  Thomas Vander Stichele  <thomas at apestaart dot org>
790
791        * morituri/image/cue.py:
792          Better debug.
793
7942009-06-09  Thomas Vander Stichele  <thomas at apestaart dot org>
795
796        * morituri/common/program.py:
797        * morituri/rip/cd.py:
798          Serialize the rip result after every rip, so we can pick up
799          where we left off with all result data.
800
8012009-06-07  Thomas Vander Stichele  <thomas at apestaart dot org>
802
803        * morituri/common/program.py:
804          Move getPath to Program.
805          Remove arguments to ripTrack that can be gotten from
806          trackResult.
807        * morituri/rip/cd.py:
808          Continue without musicbrainz metadata.
809          Unify htoa and normal track ripping.
810        * morituri/result/result.py:
811          Add getTrackResult so it's easier to look up track results
812          when there's a HTOA.
813
8142009-06-07  Thomas Vander Stichele  <thomas at apestaart dot org>
815
816        * morituri/common/program.py:
817        * morituri/rip/cd.py:
818          Move HTOA checking to program.
819
8202009-06-07  Thomas Vander Stichele  <thomas at apestaart dot org>
821
822        * morituri/result/logger.py:
823          Fix for toctable->table
824        * morituri/common/program.py:
825        * morituri/rip/cd.py:
826          Move lots of functionality to program module.
827
8282009-06-07  Thomas Vander Stichele  <thomas at apestaart dot org>
829
830        * morituri/result/result.py:
831          Change toctable to table since it's a full index table.
832        * morituri/common/Makefile.am:
833        * morituri/common/program.py (added):
834          Add module and class for program state.
835        * morituri/rip/cd.py:
836          Use the program state to clean up the do() function.
837
8382009-06-07  Thomas Vander Stichele  <thomas at apestaart dot org>
839
840        * morituri/rip/cd.py:
841          Massage into 80 characters per line.
842          Make pycdio/cdio optional.
843
8442009-06-07  Thomas Vander Stichele  <thomas at apestaart dot org>
845
846        * morituri/rip/drive.py:
847          Make pycdio and cdio optional.
848
8492009-06-07  Thomas Vander Stichele  <thomas at apestaart dot org>
850
851        * morituri/image/table.py:
852          Add getPregap() method.
853        * morituri/rip/cd.py:
854          Use artist.name, not getUniqueName, to avoid monstruous names for
855          Muse.
856          Pass mbdiscid to getPath, so Unknown Disc can be saved with it.
857          Don't set the date if the release doesn't have one.
858          Set pregap on trackResult using new Track.getPregap()
859          Write all log/cue/m3u files as utf-8.
860
8612009-06-06  Thomas Vander Stichele  <thomas at apestaart dot org>
862
863        * morituri/test/cdparanoia.progress:
864          Add a shorter test file, 23 seconds.
865        * morituri/test/test_program_cdparanoia.py:
866          Update the test to adapt.  Check for track quality.
867        * morituri/program/cdparanoia.py:
868          Add a measure of track quality based on the number of reads.
869          Use the [wrote] output for progress updates, a bit more
870          jittery in its output.
871        * morituri/rip/cd.py:
872          Set track quality on RipResult.
873
8742009-06-05  Thomas Vander Stichele  <thomas at apestaart dot org>
875
876        * morituri/rip/cd.py:
877          Use RipResult to store result information.
878        * morituri/result/logger.py (added):
879          Add a Logger to handle the RipResult, much like
880          EAC's log file.
881
8822009-06-05  Thomas Vander Stichele  <thomas at apestaart dot org>
883
884        * morituri/rip/cd.py:
885          Comment out number of track setting on tag for now.
886          MusicBrainz can give us dates in YYYY, YYYY-MM, and YYYY-MM-DD
887          format, so convert to YYYY-MM-DD always.
888          Unmount the data part of the CD we want to rip if it is mounted.
889          Adapt to peak level change.
890          Don't try to write data tracks to the m3u file.
891          Resolve the device path to the actual device path.
892
8932009-06-05  Thomas Vander Stichele  <thomas at apestaart dot org>
894
895        * morituri/result/result.py:
896          Add a Logger base class.
897
8982009-06-05  Thomas Vander Stichele  <thomas at apestaart dot org>
899
900        * configure.ac:
901        * morituri/Makefile.am:
902        * morituri/result (added):
903        * morituri/result/result.py (added):
904        * morituri/result/__init__.py (added):
905        * morituri/result/Makefile.am (added):
906          Add classes to store track and rip results in.
907
9082009-06-04  Thomas Vander Stichele  <thomas at apestaart dot org>
909
910        * morituri/common/common.py:
911          Add an argument for the delimiter in formatting.
912        * morituri/common/encode.py:
913          Most programs use peak volume, not power, so do this too.
914
9152009-06-04  Thomas Vander Stichele  <thomas at apestaart dot org>
916
917        * morituri/test/common.py:
918          Add a method for diffing multiline strings.
919
9202009-06-02  Thomas Vander Stichele  <thomas at apestaart dot org>
921
922        * morituri/common/encode.py:
923          Add a test() method to the profile so we can warn about bad
924          flacenc versions.
925          Encode track number and count, and release date, if possible.
926        * morituri/rip/cd.py:
927          Fix another off-by-one error in the tag encoding.
928
9292009-06-01  Thomas Vander Stichele  <thomas at apestaart dot org>
930
931        * morituri/program/cdparanoia.py:
932        * morituri/rip/cd.py:
933          Handle another off-by-one error in the m3u handling.
934          Add a getTagList function.
935          Use it to encode tags.
936
9372009-06-01  Thomas Vander Stichele  <thomas at apestaart dot org>
938
939        * morituri/common/encode.py:
940        * morituri/program/cdparanoia.py:
941        * morituri/rip/cd.py:
942          Clean up the temporary unencoded file.
943          Pass profile as objects to tasks, so that temp files have the right
944          extension.
945
9462009-06-01  Thomas Vander Stichele  <thomas at apestaart dot org>
947
948        * morituri/common/encode.py:
949        * morituri/program/cdparanoia.py:
950          Add encoding profiles, kept simple for now as a class and
951          subclasses.  Use them to encode.  Calculate peak level while
952          encoding, compared to EAC and replaygain's value.
953        * morituri/rip/cd.py:
954          Use the encoding profiles, ripping with the right extension.
955          Add a --profile parameter for it.
956
9572009-05-31  Thomas Vander Stichele  <thomas at apestaart dot org>
958
959        * morituri/rip/cd.py:
960          Clean up track numbering confusion.
961
9622009-05-26  Thomas Vander Stichele  <thomas at apestaart dot org>
963
964        * morituri/common/encode.py (added):
965        * examples/encode.py (added):
966          Add an Encode Task, hardcoded to flac for now.
967          Add an example, that also sets tags.
968
9692009-05-26  Thomas Vander Stichele  <thomas at apestaart dot org>
970
971        * morituri/common/task.py:
972          Add debug.
973        * morituri/rip/drive.py:
974          Show all drives, not just the ones that happen to have an Audio CD
975          inserted.
976
9772009-05-25  Thomas Vander Stichele  <thomas at apestaart dot org>
978
979        * morituri/rip/cd.py:
980          Add asserts for comparing id's between the simple toc and
981          the full table.
982          Create the output directory before ripping the htoa.
983          Ignore data tracks for now.
984          Don't fail if we have no AccurateRip responses.
985        * morituri/image/table.py:
986          Add a session ivar to Track.
987          Factor in session leadin when calculating track length
988          of last track in a session.
989          add getMusicBrainzSubmitURL()
990          add _getSessionGap() because the session gap size is different
991          for session 2 and all following.
992          Use it in merge() to get offsets right.
993          Fix getAccurateRipURL by only using the audio tracks for the
994          'length in tracks' number
995          Temporarily disable writing out data tracks to a .cue file,
996          since it's not implemented yet.
997          Add canCue to see if we can write a .cue file from the given table,
998          and debug why not if not.
999        * morituri/program/cdrdao.py:
1000          Rework to rip each session separately instead of using session 9.
1001          This fixes session 9 read-toc missing the pregap.
1002          Add a simple LineParser for handling output from disk-info.
1003          Count tracks relatively for the session, because the output for
1004          session 2 for track numbers picks up where session 1 left off.
1005          Don't set leadout from TOC printing since for the same reason
1006          session 2's leadout is absolute, not relative to start of session.
1007          Add a DiscInfoTask.
1008          Convert Table and Toc reading tasks to multitasks, first getting the
1009          number of sessions, then reading table/toc for each session.
1010
1011        * morituri/test/test_image_table.py:
1012          Fix up MusicBrainz disc id for my Ladyhawke disc.
1013          Add AccurateRip URL verification, compared against EAC's.
1014        * morituri/test/test_image_toc.py:
1015          Use two separate session read-toc output files to verify
1016          the case of Das Capital.
1017          Verify musicbrainz URL.
1018
10192009-05-25  Thomas Vander Stichele  <thomas at apestaart dot org>
1020
1021        * morituri/common/task.py:
1022          Add documentation.
1023          Use a _task counter instead of duplicating tasks to
1024          __tasks; this allows us to add tasks after starting.
1025          Catch Exceptions during next() so that we don't get
1026          stuck in a main loop that doesn't exit.
1027          Raise it later when we're done.
1028
10292009-05-25  Thomas Vander Stichele  <thomas at apestaart dot org>
1030
1031        * morituri/common/common.py:
1032          Since the version was inherited from the current code
1033          in unpickled objects, separate into classVersion and
1034          an instanceVersion set from __init__.
1035
10362009-05-25  Thomas Vander Stichele  <thomas at apestaart dot org>
1037
1038        * morituri/image/toc.py:
1039          Add a logName for debugging.
1040
10412009-05-25  Thomas Vander Stichele  <thomas at apestaart dot org>
1042
1043        * morituri/program/cdparanoia.py:
1044        * morituri/image/image.py:
1045          Correctly chain up to parent __init__ for MultiTasks
1046
10472009-05-24  Thomas Vander Stichele  <thomas at apestaart dot org>
1048
1049        * morituri/test/capital.1.toc (added):
1050        * morituri/test/capital.2.toc (added):
1051          Add two .toc's for two sessions of a 2 session disc
1052        * morituri/image/table.py:
1053          Add a merge method to merge in a second session.
1054        * morituri/test/Makefile.am:
1055        * morituri/test/test_image_toc.py:
1056          Add a test for merging the Das Capital sessions, gets
1057          the CDDB disc id right.
1058
10592009-05-24  Thomas Vander Stichele  <thomas at apestaart dot org>
1060
1061        * morituri/common/common.py:
1062          Add a persisted cache so that we can store pickles on discs.
1063          Automatically delete them if the class version is newer than
1064          the object's.
1065        * morituri/rip/cd.py:
1066          Use it.
1067
10682009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1069
1070        * morituri/image/table.py:
1071          Add a version ivar to help with versioning pickled objects.
1072
10732009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1074
1075        * morituri/program/cdparanoia.py:
1076          Add copy and test CRC's to object.
1077
10782009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1079
1080        * morituri/common/Makefile.am:
1081        * morituri/common/drive.py (added):
1082          Add drive module.
1083
10842009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1085
1086        * morituri/program/cdparanoia.py:
1087        * morituri/program/cdrdao.py:
1088        * morituri/rip/cd.py:
1089        * morituri/rip/offset.py:
1090          Add device argument to ripping/scanning tasks.
1091
10922009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1093
1094        * morituri/common/accurip.py:
1095        * morituri/image/image.py:
1096        * morituri/test/Makefile.am:
1097        * morituri/test/test_image_image.py:
1098        * morituri/test/test_common_accurip.py (added):
1099          Move accuraterip stuff to the accurip module.
1100          Move/create new test file.
1101
11022009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1103
1104        * morituri/rip/Makefile.am:
1105        * morituri/rip/main.py:
1106        * morituri/rip/drive.py (added):
1107          Add 'rip drive list' command to list available drives.
1108        * morituri/common/accurip.py:
1109          Add force.
1110        * morituri/rip/cd.py:
1111          Add --output-directory argument.
1112
11132009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1114
1115        * morituri/common/Makefile.am:
1116        * morituri/rip/cd.py:
1117        * morituri/common/accurip.py (added):
1118          Add a module for handling a cache of AccurateRip results.
1119          Use it.
1120
11212009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1122
1123        * morituri/rip/Makefile.am:
1124        * morituri/rip/main.py:
1125        * morituri/rip/cd.py (added):
1126          Add second command, 'rip cd rip' before factoring out functionality.
1127
11282009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1129
1130        * morituri/rip/Makefile.am:
1131        * morituri/rip/main.py:
1132        * morituri/rip/offset.py (added):
1133          Add first command, 'rip offset find'
1134
11352009-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>
1136
1137        * Makefile.am:
1138        * morituri/test/Makefile.am:
1139          Make distcheck work.
1140
11412009-05-22  Thomas Vander Stichele  <thomas at apestaart dot org>
1142
1143        * morituri/common/checksum.py:
1144          More pychecker fixes.
1145
11462009-05-22  Thomas Vander Stichele  <thomas at apestaart dot org>
1147
1148        * morituri/common/common.py:
1149        * morituri/common/renamer.py:
1150          Pychecker fixes.
1151
11522009-05-22  Thomas Vander Stichele  <thomas at apestaart dot org>
1153
1154        * RELEASE:
1155        * misc/pycheckerrc:
1156        * misc/show-coverage.py:
1157        * morituri/image/Makefile.am:
1158        * morituri/program/Makefile.am:
1159        * RELEASE (added):
1160        * morituri/image/Makefile.am (added):
1161        * morituri/program/Makefile.am (added):
1162        * misc/show-coverage.py (added):
1163        * misc/pycheckerrc (added):
1164          more additions
1165
11662009-05-22  Thomas Vander Stichele  <thomas at apestaart dot org>
1167
1168        * AUTHORS:
1169        * Makefile.am:
1170        * NEWS:
1171        * TODO:
1172        * autogen.sh:
1173        * configure.ac:
1174        * examples/ARcalibrate.py:
1175        * misc/Makefile.am:
1176        * misc/morituri-uninstalled:
1177        * morituri.spec.in:
1178        * morituri/Makefile.am:
1179        * morituri/common/Makefile.am:
1180        * morituri/common/logcommand.py:
1181        * morituri/extern/Makefile.am:
1182        * morituri/rip/Makefile.am:
1183        * morituri/rip/__init__.py:
1184        * morituri/rip/main.py:
1185        * morituri/test/Makefile:
1186        * morituri/test/Makefile.am:
1187        * configure.ac (added):
1188        * AUTHORS (added):
1189        * morituri.spec.in (added):
1190        * Makefile.am (added):
1191        * morituri/test/Makefile.am (added):
1192        * morituri/extern/Makefile.am (added):
1193        * morituri/common/logcommand.py (added):
1194        * morituri/common/Makefile.am (added):
1195        * morituri/Makefile.am (added):
1196        * morituri/rip (added):
1197        * morituri/rip/__init__.py (added):
1198        * morituri/rip/Makefile.am (added):
1199        * morituri/rip/main.py (added):
1200        * misc/Makefile.am (added):
1201        * misc/morituri-uninstalled (added):
1202        * autogen.sh (added):
1203        * NEWS (added):
1204          Start autotooling.  Add a command-line application.
1205
12062009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1207
1208        * morituri/program/cdrdao.py:
1209          read all sessions by reading session 9.
1210        * morituri/image/toc.py:
1211          Parse ZERO statements properly.
1212          Also set absolute offsets when we know them from the .toc file.
1213          Properly set audio flag on tracks.
1214          FIXME: probably doesn't work if the .toc does not have lengths.
1215        * morituri/image/table.py:
1216          Add some debug to cddb disc id calculation.
1217          Fix absolutize function, it was going one index too far.
1218          raise ValueError when overriding .absolute with a wrong value.
1219        * examples/readdisc.py:
1220          Show CDDB disc id at the start.
1221          Assert when toc and table have different disc id's (to be fixed)
1222        * morituri/test/test_image_cue.py:
1223          Update for having the table already with absolute values.
1224        * morituri/test/test_image_toc.py:
1225          Add Ladyhawke CDDB test, it has a data track.
1226
12272009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1228
1229        * examples/readdisc.py:
1230          Move constants to common
1231
12322009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1233
1234        * examples/readdisc.py:
1235        * examples/readhtoa.py:
1236        * examples/readtoc.py:
1237          Rename IndexTable to Table.
1238
12392009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1240
1241        * morituri/image/cue.py:
1242        * morituri/image/image.py:
1243        * morituri/image/table.py:
1244        * morituri/image/toc.py:
1245        * morituri/program/cdparanoia.py:
1246        * morituri/program/cdrdao.py:
1247        * morituri/test/test_image_cue.py:
1248        * morituri/test/test_image_table.py:
1249          Rename IndexTable to Table.
1250
12512009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1252
1253        * morituri/image/cue.py:
1254        * morituri/image/image.py:
1255        * morituri/image/table.py:
1256        * morituri/image/toc.py:
1257        * morituri/program/cdrdao.py:
1258        * morituri/test/test_image_cue.py:
1259        * morituri/test/test_image_table.py:
1260          Rename ITTrack to Track.
1261
12622009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1263
1264        * morituri/common/common.py:
1265        * morituri/image/cue.py:
1266          Use FRAMES_PER_SECOND where appropriate.
1267
12682009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1269
1270        * morituri/common/checksum.py:
1271        * morituri/common/common.py:
1272        * morituri/image/image.py:
1273        * morituri/image/table.py:
1274        * morituri/program/cdparanoia.py:
1275          Move constants to common
1276
12772009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1278
1279        * examples/readdisc.py:
1280          Get our metadata only from the toc.
1281
12822009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1283
1284        * examples/readdisc.py:
1285          Also work for discs without htoa.
1286
12872009-05-16  Thomas Vander Stichele  <thomas at apestaart dot org>
1288
1289        * examples/readdisc.py:
1290          Write .m3u file.
1291
12922009-05-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1293
1294        * examples/readdisc.py:
1295          Rip HTOA as well.  Add disc-template parameter.
1296
12972009-05-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1298
1299        * morituri/image/table.py:
1300          Fix a subtle bug in our CDDB disc id calculation.
1301          The length of the audio should be calculated as the delta
1302          between leadout and start already converted (and truncated)
1303          to seconds.
1304        * morituri/test/bloc.cue:
1305        * morituri/test/test_image_toc.py:
1306          Fix up tests for this.
1307
13082009-05-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1309
1310        * morituri/program/cdparanoia.py:
1311          Fix up track counting so HTOA can be ripped again.
1312        * examples/readhtoa.py:
1313          Fix up example so it works again, tested on Silent Alarm.
1314
13152009-05-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1316
1317        * morituri/test/test_image_toc.py:
1318        * morituri/test/bloc.cue (added):
1319          Add an expected .cue file for the bloc party toc.
1320
13212009-05-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1322
1323        * morituri/image/toc.py:
1324          Calculate the leadout from the sum of the track lengths.
1325        * morituri/test/breeders.cue:
1326        * morituri/test/cure.cue:
1327          Adapt expected results for DISCID.
1328        * morituri/image/table.py:
1329          Add an assert for hasTOC() when doing .cue()
1330        * morituri/test/test_image_toc.py:
1331        * morituri/test/test_image_cue.py:
1332          absolutize before cue()
1333
13342009-05-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1335
1336        * morituri/image/table.py:
1337          Only add DISCID if our table is a TOC (which it isn't
1338          with our current .toc file parsing)
1339        * morituri/test/test_image_cue.py:
1340        * morituri/test/test_image_toc.py:
1341          Fix up tests; testsuite passes again.
1342
13432009-05-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1344
1345        * morituri/image/toc.py:
1346          Add some debugging.
1347
13482009-05-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1349
1350        * morituri/image/table.py:
1351          Update .cue writing:
1352          - customise program name
1353          - add DISCID
1354          - use counter for FILE lines
1355          - put FILE line before TRACK if track does not have INDEX 00
1356          Take counter into account for setFile
1357          Fix off-by-one in setFile
1358        * examples/readdisc.py:
1359          Add --track-template.
1360          Pass counter to setFile.
1361
13622009-05-14  Thomas Vander Stichele  <thomas at apestaart dot org>
1363
1364        * morituri/image/table.py:
1365          Add CDText writing to .cue() method.
1366        * morituri/image/toc.py:
1367          Add CDText parsing.
1368        * morituri/test/test_image_toc.py:
1369        * morituri/test/breeders.cue (added):
1370          Add a test for cue'ing the breeders' toc.
1371
13722009-05-14  Thomas Vander Stichele  <thomas at apestaart dot org>
1373
1374        * morituri/image/table.py:
1375        * morituri/image/toc.py:
1376          Add parsing of ISRC codes.
1377          Add first part of CDTEXT stuff.
1378        * morituri/test/test_image_toc.py:
1379          Add test for converting .toc to .cue
1380        * morituri/test/cure.cue
1381          Add reference for converted cure.toc
1382
13832009-05-10  Thomas Vander Stichele  <thomas at apestaart dot org>
1384
1385        * examples/readhtoa.py:
1386          Fix example.
1387
13882009-05-07  Thomas Vander Stichele  <thomas at apestaart dot org>
1389
1390        * morituri/image/table.py:
1391        * morituri/test/test_image_table.py:
1392          Correctly calculate MusicBrainz disc id for enhanced cd's.
1393
13942009-05-07  Thomas Vander Stichele  <thomas at apestaart dot org>
1395
1396        * morituri/common/task.py:
1397          Log on runners too.
1398        * morituri/program/cdrdao.py:
1399          Abort if output has ERROR by killing and setting an exception.
1400
14012009-05-07  Thomas Vander Stichele  <thomas at apestaart dot org>
1402
1403        * examples/readdisc.py:
1404          filter out slashes when deciding on file names.
1405
14062009-05-07  Thomas Vander Stichele  <thomas at apestaart dot org>
1407
1408        * morituri/common/task.py:
1409        * morituri/image/image.py:
1410          Remove prints.  Describe tasks.
1411
14122009-05-07  Thomas Vander Stichele  <thomas at apestaart dot org>
1413
1414        * morituri/common/task.py:
1415          Add an exception ivar for tasks to set an exception on while
1416          running.  Make SyncRunner raise it during done()
1417        * morituri/program/cdparanoia.py:
1418          Set an exception if the ripped file doesn't match the expected size
1419          (for example when disc is full)
1420
14212009-05-07  Thomas Vander Stichele  <thomas at apestaart dot org>
1422
1423        * morituri/common/common.py:
1424          Set the object when we don't persist.
1425        * examples/readdisc.py:
1426          Small fixes.
1427
14282009-05-06  Thomas Vander Stichele  <thomas at apestaart dot org>
1429
1430        * examples/readdisc.py:
1431          Fix up cue file reading.
1432
14332009-05-06  Thomas Vander Stichele  <thomas at apestaart dot org>
1434
1435        * examples/readdisc.py:
1436          Add musicbrainz code for disc naming.
1437
14382009-05-06  Thomas Vander Stichele  <thomas at apestaart dot org>
1439
1440        * morituri/image/table.py:
1441        * morituri/image/toc.py:
1442          Delete old code.
1443
14442009-05-06  Thomas Vander Stichele  <thomas at apestaart dot org>
1445
1446        * morituri/image/toc.py:
1447        * morituri/test/test_image_toc.py:
1448        * morituri/test/test_program_cdrdao.py:
1449          After careful vetting, fix up the expected values after toc parsing.
1450          Fix (untested) INDEX handling.  Fix handling of START.
1451
14522009-05-05  Thomas Vander Stichele  <thomas at apestaart dot org>
1453
1454        * morituri/image/table.py:
1455        * morituri/test/test_image_table.py:
1456          Implement MusicBrainz disc id.  Works for audio-only discs,
1457          have to figure out why it fails for an Enhanced CD like the
1458          Ladyhawke one.
1459
14602009-05-05  Thomas Vander Stichele  <thomas at apestaart dot org>
1461
1462        * morituri/image/table.py:
1463          Add logging.
1464          Add methods to clear a table of files, and to absolutize indexes
1465          as long as the source is the same file, and to set a File on a
1466          given index, adjusting all following indexes that match the
1467          duration, and check if the IndexTable has all information for a TOC.
1468        * morituri/image/toc.py:
1469          Add logging.
1470          Use a counter for the source.
1471          Fix up index offset calculation.
1472        * morituri/program/cdrdao.py:
1473          Use a real IndexTable as the result, instead of a TocFile.
1474        * morituri/image/cue.py:
1475          Use a real IndexTable to store tracks.
1476        * morituri/test/test_image_toc.py:
1477          The toc file now has a table which has the tracks.
1478          Fix the tests to adjust for wrong index calculations.
1479        * morituri/test/test_image_cue.py:
1480        * morituri/test/test_image_image.py:
1481        * morituri/image/image.py:
1482          The cue file now has a table which has the tracks.
1483        * morituri/test/test_image_table.py:
1484          Add assertions to make sure when the table can serve as a TOC.
1485        * examples/readdisc.py:
1486          Adjust for changes.  Fix up to include AccurateRip results.
1487          First time we can do a complete normal rip including verifying
1488          against AccurateRip results!
1489
14902009-05-05  Thomas Vander Stichele  <thomas at apestaart dot org>
1491
1492        * examples/readdisc.py:
1493        * morituri/image/table.py:
1494        * morituri/test/test_image_table.py:
1495          Fix up and deprecate stuff.
1496
14972009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1498
1499        * examples/movecue.py:
1500        * examples/readcue.py:
1501        * morituri/image/cue.py:
1502        * morituri/image/image.py:
1503        * morituri/image/toc.py:
1504        * morituri/program/cdrdao.py:
1505        * morituri/test/test_image_cue.py:
1506        * morituri/test/test_image_toc.py:
1507          Cue -> CueFile
1508          TOC -> TocFile
1509
15102009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1511
1512        * examples/readdisc.py (added):
1513          Add an example to read a whole disc.  Doesn't work yet.
1514
15152009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1516
1517        * examples/readhtoa.py:
1518          Fix up readhtoa example.  Add offset option.
1519
15202009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1521
1522        * examples/ARcalibrate.py:
1523        * examples/readhtoa.py:
1524        * examples/readtoc.py:
1525        * morituri/program/cdrdao.py:
1526          Rename ReadTOCTask to ReadIndexTableTask.
1527          Rename ReadTableTask to ReadTOCTask.
1528
15292009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1530
1531        * morituri/program/cdrdao.py:
1532          Convert ReadTableTask to a CDRDAOTask subclass.
1533        * examples/ARcalibrate.py:
1534        * morituri/program/cdparanoia.py:
1535          Adapt.
1536
15372009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1538
1539        * morituri/program/cdrdao.py:
1540          Fix up index scanning's progress report.
1541          Add some debugging.
1542
15432009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1544
1545        * morituri/program/cdrdao.py:
1546        * morituri/test/test_program_cdrdao.py:
1547          Fix up tests.  Use an IndexTable.
1548
15492009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1550
1551        * morituri/program/cdrdao.py:
1552          Massage out a base class for running cdrdao.
1553
15542009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1555
1556        * morituri/program/cdrdao.py:
1557        * morituri/test/test_program_cdrdao.py (added):
1558          Split out the parser from the task.  Test the parser.
1559
15602009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1561
1562        * morituri/image/cue.py:
1563        * morituri/image/image.py:
1564        * morituri/image/table.py:
1565        * morituri/program/cdparanoia.py:
1566        * morituri/test/test_image_cue.py:
1567          Move to using a shared IndexTable for everything.
1568          Sadly mixed with a MultiTask rename.
1569
15702009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1571
1572        * morituri/common/checksum.py:
1573          Update debugging.  Add repr.
1574
15752009-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
1576
1577        * examples/ARcue.py:
1578          Handle case where we have no matching response.
1579
15802009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1581
1582        * morituri/common/task.py:
1583          Distinguish more clearly between MultiSeparateTask and
1584          MultiCombinedTask.
1585
15862009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1587
1588        * morituri/image/cue.py:
1589        * morituri/test/test_image_cue.py:
1590          Add dumping of .cue files.
1591
15922009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1593
1594        * morituri/program/cdparanoia.py:
1595          Use a temporary file to rip to.
1596
15972009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1598
1599        * examples/readtrack.py:
1600          Allow specifying the track to save.
1601
16022009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1603
1604        * morituri/common/task.py:
1605          Make SyncRunner clear previous description/progress task by
1606          tracking longest output given up to now.
1607
16082009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1609
1610        * morituri/program/cdparanoia.py:
1611          Add a task to read and verify a track.
1612        * examples/readtrack.py:
1613          Use it to clean up code.
1614        * morituri/common/task.py:
1615          describe a MultiTask better.
1616
1617
16182009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1619
1620        * morituri/common/common.py:
1621          Create a Persister class to wrap a possible pickle path.
1622        * examples/trm.py:
1623          Use it.
1624
16252009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1626
1627        * morituri/program/cdparanoia.py:
1628          Add table to __init__, so we can correctly calculate cdparanoia's
1629          strange ripping regions.
1630        * examples/ARcalibrate.py:
1631          When we found a positive match on a first track, match all the other
1632          tracks too for confirmation.
1633
16342009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1635
1636        * morituri/common/taskgtk.py:
1637          Bug fix.
1638
16392009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1640
1641        * morituri/common/task.py:
1642        * morituri/common/taskgtk.py:
1643          Split off GtkProgressRunner in separate module to not import gtk
1644          everywhere.
1645        * examples/ARcalibrate.py:
1646        * examples/ARcue.py:
1647        * examples/gtkchecksum.py:
1648        * examples/trm.py:
1649          Adapt.
1650
16512009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1652
1653        * examples/ARcalibrate.py (added):
1654          Add an example that calculates the read offset of your drive
1655          using AccurateRip.
1656
16572009-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
1658
1659        * morituri/program/cdrdao.py:
1660          Add a task to read the Table.
1661
16622009-05-02  Thomas Vander Stichele  <thomas at apestaart dot org>
1663
1664        * morituri/common/task.py:
1665        * morituri/image/image.py:
1666          Add some debugging.
1667
16682009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1669
1670        * examples/readhtoa.py (added):
1671          Add an example that detects and rips the Hidden Track One Audio.
1672
16732009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1674
1675        * examples/readtoc.py:
1676        * morituri/program/cdrdao.py (added):
1677          Move the ReadTocTask to the new cdrdao module.
1678
16792009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1680
1681        * examples/readtrack.py:
1682        * morituri/program/cdparanoia.py:
1683          Move ReadTrackTask to cdparanoia module.
1684
16852009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1686
1687        * examples/readtrack.py (added):
1688          Add an example that reads a track using cdparanoia.
1689
16902009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1691
1692        * morituri/test/cdparanoia.progress (added):
1693        * morituri/test/test_program_cdparanoia.py (added):
1694        * morituri/program/__init__.py (added):
1695        * morituri/program/cdparanoia.py (added):
1696          Add a module to wrap cdparanoia.  Add a test for parsing
1697          the progress report output.
1698
16992009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1700
1701        * morituri/common/checksum.py:
1702          Debug fixes.
1703
17042009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1705
1706        * morituri/common/common.py:
1707          Create some common functions to parse MSF and back.
1708        * morituri/image/toc.py:
1709          Use it here.
1710
17112009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1712
1713        * examples/trm.py:
1714          Allow loading and saving fingerprints from a pickle.
1715
17162009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1717
1718        * morituri/image/toc.py:
1719        * morituri/test/test_image_toc.py:
1720        * morituri/test/bloc.toc (added):
1721          Fix up .toc parsing to correct index 0 behaviour.
1722          Add Bloc Party's Silent Alarm .toc file to test HTOA.
1723
17242009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1725
1726        * examples/readtoc.py:
1727          Update to work on my desktop.
1728
17292009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1730
1731        * morituri/common/task.py:
1732          Make task subclass log.Log
1733
17342009-05-01  Thomas Vander Stichele  <thomas at apestaart dot org>
1735
1736        * morituri/common/log.py:
1737          Add external log module and use it.
1738
17392009-04-29  Thomas Vander Stichele  <thomas at apestaart dot org>
1740
1741        * morituri/test/cure.toc (added):
1742          Add an example .toc file for the test.
1743
17442009-04-28  Thomas Vander Stichele  <thomas at apestaart dot org>
1745
1746        * examples/readtoc.py:
1747          Extract and print TOC.
1748
17492009-04-28  Thomas Vander Stichele  <thomas at apestaart dot org>
1750
1751        * morituri/test/test_image_toc.py (added):
1752        * morituri/image/toc.py (added):
1753          Add first stab at .toc parsing.
1754
17552009-04-28  Thomas Vander Stichele  <thomas at apestaart dot org>
1756
1757        * examples/readtoc.py:
1758          get errors from output too.
1759
17602009-04-28  Thomas Vander Stichele  <thomas at apestaart dot org>
1761
1762        * morituri/image/image.py:
1763        * morituri/image/table.py:
1764        * morituri/test/test_image_image.py:
1765        * morituri/test/test_image_table.py:
1766          Rename toc.TOC to table.Table
1767
17682009-04-28  Thomas Vander Stichele  <thomas at apestaart dot org>
1769
1770        * morituri/test/test_image_table.py (added):
1771        * morituri/image/table.py (added):
1772        * morituri/test/test_image_toc.py (deleted):
1773        * morituri/image/toc.py (deleted):
1774          Move files around in preparation for the .toc file parsing.
1775
17762009-04-26  Thomas Vander Stichele  <thomas at apestaart dot org>
1777
1778        * examples/movecue.py (added):
1779          Add a script that moves a .cue file in its corresponding directory.
1780
17812009-04-26  Thomas Vander Stichele  <thomas at apestaart dot org>
1782
1783        * morituri/test/kanye.cue (added):
1784          Add a cue test with mixed mode.
1785        * morituri/image/cue.py:
1786        * morituri/test/test_image_cue.py:
1787          Handle it properly.
1788
17892009-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>
1790
1791        * morituri/image/cue.py:
1792          getRealPath should be here, it doesn't need anything outside
1793          the .cue file
1794        * morituri/image/image.py:
1795          Proxy it here.
1796
17972009-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>
1798
1799        * morituri/common/checksum.py:
1800          Add some debugging.
1801        * morituri/test/test_image_image.py:
1802          Run less verbose.
1803
18042009-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>
1805
1806        * morituri/common/task.py:
1807          Allow a SyncRunner to be constructed with verbose too.
1808          Separate a 'running' verbose mode from that.
1809          Fixes unwanted test output.
1810        * morituri/test/test_image_image.py:
1811          Run without verbosity.
1812
18132009-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>
1814
1815        * morituri/test/test_image_image.py:
1816          Fix name.
1817
18182009-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>
1819
1820        * morituri/test/test_common_renamer.py (added):
1821        * morituri/common/renamer.py (added):
1822          Add a way of doing transactional file renames, as well as their
1823          metafile updates.
1824
18252009-04-21  Thomas Vander Stichele  <thomas at apestaart dot org>
1826
1827        * morituri/common/task.py:
1828          Add a 'described' method so listeners can get proper notification
1829          of description changes, and update their description in between
1830          progress changes.
1831          Add a MultiCombinedTask that reports on progress over all tasks
1832          combined.
1833        * examples/trm.py:
1834          Add a playlist option to the example.  Still needs to store results
1835          to pickles, preferably after each completed task.
1836        * morituri/common/checksum.py:
1837          Add audioconvert to make sure we can trm ogg files.
1838
18392009-04-20  Thomas Vander Stichele  <thomas at apestaart dot org>
1840
1841        * morituri/common/task.py:
1842        * morituri/image/image.py:
1843          Move MultiTask to the task module.
1844
18452009-04-20  Thomas Vander Stichele  <thomas at apestaart dot org>
1846
1847        * morituri/common/checksum.py:
1848          Add a task to calculate a trm fingerprint.
1849        * examples/trm.py (added):
1850          Add an example.
1851          Strangely enough it starts burstily, doing 10% directly, halting,
1852          then progressing quickly,
1853
18542009-04-20  Thomas Vander Stichele  <thomas at apestaart dot org>
1855
1856        * examples/ARcue.py:
1857          Fix a bug in the gtk example.
1858
18592009-04-20  Thomas Vander Stichele  <thomas at apestaart dot org>
1860
1861        * examples/readtoc.py:
1862          Read the toc using cdrdao.  Now sets progress based on which
1863          frame it is on.
1864
18652009-04-20  Thomas Vander Stichele  <thomas at apestaart dot org>
1866
1867        * morituri/common/task.py:
1868          Add a __main__ example using DummyTask.
1869
18702009-04-19  Thomas Vander Stichele  <thomas at apestaart dot org>
1871
1872        * morituri/common/task.py:
1873          Make sure we also show progress when it's 0%, at the start.
1874
18752009-04-19  Thomas Vander Stichele  <thomas at apestaart dot org>
1876
1877        * morituri/image/cue.py:
1878          Use names for matches in regexps.
1879
18802009-04-19  Thomas Vander Stichele  <thomas at apestaart dot org>
1881
1882        * examples/readtoc.py (added):
1883          Add an example to read the TOC, not finished yet.
1884
18852009-04-19  Thomas Vander Stichele  <thomas at apestaart dot org>
1886
1887        * morituri/extern (added):
1888        * morituri/extern/__init__.py (added):
1889        * morituri/extern/asyncsub.py (added):
1890          Add extern module; add asynchronous subprocess Popen from
1891          http://code.activestate.com/recipes/440554/
1892
18932009-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1894
1895        * examples/gtkchecksum.py:
1896        * morituri/common/checksum.py:
1897          Final crc->checksum fixes.
1898
18992009-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1900
1901        * examples/ARcue.py:
1902        * morituri/common/checksum.py:
1903        * morituri/image/image.py:
1904        * morituri/image/toc.py:
1905        * examples/gtkchecksum.py (added):
1906        * examples/gtkcrc.py (deleted):
1907          More crc->checksum changes.
1908
19092009-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1910
1911        * examples/ARcue.py:
1912        * morituri/common/checksum.py:
1913        * morituri/image/image.py:
1914        * morituri/test/test_image_image.py:
1915          Change crc to checksum everywhere.
1916
19172009-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1918
1919        * morituri/image/image.py:
1920        * morituri/image/toc.py:
1921        * morituri/common/checksum.py (added):
1922        * morituri/common/crc.py (deleted):
1923          Rename crc to checksum, because AccurateRip checksums are not CRC's.
1924
19252009-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1926
1927        * examples/ARcue.py:
1928        * morituri/image/image.py:
1929        * morituri/test/test_image_image.py:
1930          Make everything use TOC for the id's.
1931
19322009-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1933
1934        * morituri/image/image.py:
1935          Refactor to use TOC class.
1936        * morituri/image/toc.py:
1937          Fully document.
1938
19392009-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1940
1941        * morituri/test/test_image_toc.py (added):
1942        * morituri/image/toc.py (added):
1943          Add an abstraction for a TOC.
1944          Take data tracks into account correctly for CDDB and AccurateRip
1945          disc ID's.
1946
19472009-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
1948
1949        * morituri/image/image.py:
1950        * morituri/test/test_image_image.py:
1951          AccurateRip binary files actually contain multiple responses, so
1952          parse all of them.
1953        * examples/ARcue.py:
1954          Handle case of not having a response, and having multiple responses.
1955
19562009-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>
1957
1958        * morituri/common/crc.py:
1959          Actually return the CRC when checking frame 5.
1960        * morituri/test/test_image_image.py:
1961          Update test for this fix.
1962
19632009-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
1964
1965        * morituri/image/image.py:
1966          Also look for audio file basename relative to cue file.
1967
19682009-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
1969
1970        * examples/ARcue.py:
1971          Make output a bit nicer, mentioning whether tracks were
1972          accurately ripped.
1973
19742009-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
1975
1976        * morituri/image/image.py:
1977          Add an object to parse the response of AccurateRip.
1978        * morituri/test/test_image_image.py:
1979        * morituri/test/dBAR-011-0010e284-009228a3-9809ff0b.bin (added):
1980          Add a test for it, based on my Kings Of Leon CD.
1981
19822009-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
1983
1984        * morituri/image/image.py:
1985          Add the 150 frames for the leadin only to the CDDB calculation.
1986          Add methods to calculate AccurateRip id's and URL.
1987        * morituri/test/test_image_image.py:
1988          Add tests for it.
1989        * examples/ARcue.py:
1990          Show AccurateRip URL.
1991
19922009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
1993
1994        * examples/ARcue.py:
1995        * morituri/common/crc.py:
1996        * morituri/image/image.py:
1997        * morituri/test/test_image_image.py:
1998          Calculate CDDB disc id.
1999          Tested on my Kings Of Leon CD.
2000
20012009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
2002
2003        * examples/ARcue.py:
2004        * morituri/image/image.py:
2005        * morituri/test/test_image_image.py:
2006          Add a task to verify a disk image, which also calculates
2007          track lengths for tracks the cue file doesn't know the length of.
2008
20092009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
2010
2011        * examples/ARcue.py:
2012          Add option to run either command-line or gtk.
2013
20142009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
2015
2016        * morituri/image/image.py:
2017          Create a MultiTask base class, and make AudioRipCRCTask
2018          use it.
2019
20202009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
2021
2022        * morituri/image/image.py:
2023        * morituri/test/test_image_image.py:
2024          Add a task for calculating frame length of an audio file.
2025          Add a test for it.
2026
20272009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
2028
2029        * morituri/common/task.py:
2030          Schedule the start from the main loop, otherwise the
2031          task might complete before we're in the main loop,
2032          and then the loop.quit() doesn't work.
2033
20342009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
2035
2036        * examples/ARcue.py:
2037        * examples/gtkcrc.py:
2038          Rework both examples to look more similar.
2039
20402009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
2041
2042        * examples/gtkcrc.py:
2043        * morituri/common/task.py:
2044          Move the gtk-based progress bar to task.
2045
20462009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
2047
2048        * examples/gtkcrc.py:
2049        * morituri/common/crc.py:
2050        * morituri/common/task.py:
2051        * morituri/image/image.py:
2052          Add a 'schedule' call to the TaskRunner class, so that we can
2053          abstract things like gobject.timeout_add and reactor.callLater
2054          Pass the runner to the task in Task.start() so a task can call
2055          schedule.
2056
20572009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
2058
2059        * morituri/common/task.py:
2060          Update the docs.
2061
20622009-04-12  Thomas Vander Stichele  <thomas at apestaart dot org>
2063
2064        * morituri/test/test_image_image.py (added):
2065          Add tests for AudioRip CRC'ing images.
2066
20672009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2068
2069        * morituri/test/track-separate.cue (added):
2070        * morituri/test/track.flac (added):
2071        * morituri/test/Makefile (added):
2072        * morituri/test/track-single.cue (added):
2073          Add a simple 10 frame flac file, and two .cue files
2074          using it.
2075
20762009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2077
2078        * morituri/image/image.py:
2079          If paths are relative, make them relative to cue file.
2080
20812009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2082
2083        * morituri/common/task.py:
2084          clear with whitespace.
2085
20862009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2087
2088        * examples/ARcue.py:
2089        * morituri/common/task.py:
2090        * morituri/image/image.py (added):
2091          Add an object for handling an Image based on a .cue file.
2092          Create a Task for CRC'ing the whole Image.
2093          Make the example use this new task instead.
2094
20952009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2096
2097        * examples/gtkcrc.py:
2098        * morituri/common/task.py:
2099          Add task object to listener interface methods.
2100
21012009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2102
2103        * morituri/common/task.py:
2104          Move methods around.
2105
21062009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2107
2108        * examples/ARcue.py:
2109        * examples/gtkcrc.py:
2110        * morituri/common/crc.py:
2111        * morituri/common/task.py:
2112          Split out generic task/runner from CRC tasks.
2113
21142009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2115
2116        * morituri/common/crc.py (added):
2117          Copy from task.py before splitting.
2118
21192009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2120
2121        * examples/gtkcrc.py:
2122        * morituri/common/task.py:
2123          Don't block the main loop by infinitely scheduling
2124          set_state.
2125
21262009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2127
2128        * examples/ARcue.py:
2129        * examples/gtkcrc.py:
2130        * morituri/common/task.py:
2131          Make a real Task interface and use it.
2132          Make runners reusable for multiple tasks.
2133          gtkcrc.py seems to be blocking updates however.
2134
21352009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2136
2137        * morituri/test (added):
2138        * morituri/test/test_image_cue.py (added):
2139        * morituri/test/kings-single.cue (added):
2140        * morituri/test/__init__.py (added):
2141        * morituri/test/kings-separate.cue (added):
2142          Add test suite.  Add Kings Of Leon cue files.
2143
21442009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2145
2146        * examples/ARcue.py:
2147          Error out when the file doesn't exist.
2148        * morituri/common/task.py:
2149          Drag the lake.
2150          Clean up prints.
2151
21522009-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>
2153
2154        * morituri/common/task.py:
2155          Remove queue to avoid race.
2156          Remove prints.
2157          Clean up debug.
2158          Update progress after handling buffers.
2159
21602009-04-05  Thomas Vander Stichele  <thomas at apestaart dot org>
2161
2162        * morituri/common/task.py:
2163          Introduce constants for FRAMES_PER_DISC_FRAME
2164        * examples/ARcue.py:
2165          Use the constant.
2166          Get the CRC right for the last track too.
2167
21682009-03-26  Thomas Vander Stichele  <thomas at apestaart dot org>
2169
2170        * examples/ARcue.py:
2171        * morituri/common/task.py:
2172          Use an adapter to assemble CD frames.
2173          Take into account special rules for first and last track.
2174          Mention some bugs.
2175          Remember to drag the lake from the task.
2176
21772009-03-22  Thomas Vander Stichele  <thomas at apestaart dot org>
2178
2179        * examples/ARcue.py:
2180        * morituri/common/task.py:
2181          First version that seems to get some AccurateRip checksums right.
2182
21832009-02-28  Thomas Vander Stichele  <thomas at apestaart dot org>
2184
2185        * morituri/image/cue.py:
2186          publicize CueFile.tracks
2187          Add a method to get track lengths
2188        * examples/readcue.py:
2189          Use it.
2190
21912009-02-28  Thomas Vander Stichele  <thomas at apestaart dot org>
2192
2193        * morituri/common/task.py (added):
2194          Add a task abstraction.
2195
Note: See TracBrowser for help on using the repository browser.