Guido van Rossum | 1ce7c6f | 1997-01-15 19:19:19 +0000 | [diff] [blame] | 1 | Interface to CD-ROM player. |
| 2 | |
| 3 | This module implements an interface to the built-in cd module. The |
| 4 | intention is to provide a more user-friendly interface than the |
| 5 | built-in module. |
| 6 | |
| 7 | The module defines a class Readcd with several methods. The |
| 8 | initialization of the class will try to open the CD player. This |
| 9 | means that initialization will fail if the CD player is already in |
| 10 | use. A RuntimeError will be raised by the cd module in that case. |
| 11 | |
| 12 | The way to work with this module is as follows. The user specifies |
| 13 | the parts of the CD that are to be read and he specifies callback |
| 14 | functions which are to be called by the system. At some point he can |
| 15 | tell the system to play. The specified parts of the CD will then be |
| 16 | read and the callbacks will be called. |
| 17 | |
| 18 | Initialization. |
| 19 | =============== |
| 20 | |
| 21 | r = readcd.Readcd([cd-player [, mode]]) |
| 22 | |
| 23 | The optional arguments are the name of the CD device and the mode. |
| 24 | When "mode" is not specified, it defaults to 'r' (which is the only |
| 25 | possible value); when "cd-player" also isn't specified, it defaults |
| 26 | to "None" which indicates the default CD player. |
| 27 | |
| 28 | Methods. |
| 29 | ======== |
| 30 | |
| 31 | eject() -- Eject the CD from the player. |
| 32 | |
| 33 | reset() -- Reset the list of data stretches to be played. |
| 34 | |
| 35 | appendtrack(track) -- Append the specified track to the list of music |
| 36 | stretches. |
| 37 | |
| 38 | appendstretch(first, last) -- Append the stretch from "first" to "last" |
| 39 | to the list of music stretches. Both "first" and "last" can be in one |
| 40 | of four forms. "None": for "first", the beginning of the CD, for |
| 41 | "last" the end of the CD; a single integer: a track number--playing |
| 42 | starts at the beginning of the track or ends at the end of the |
| 43 | specified track; a three-tuple: the absolute time from the start of |
| 44 | the CD in minutes, seconds, frames; a four-tuple: track number and |
| 45 | relative time within the track in minutes, seconds, frames. |
| 46 | |
| 47 | settracks(tracklist) -- The argument is a list of integers. The list |
| 48 | of stretches is set to argument list. The old list is discarded. |
| 49 | |
| 50 | setcallback(type, func, arg) -- Set a callback function for "type". |
| 51 | The function will be called as func(arg, type, data) where "arg" is |
| 52 | the third argument of setcallback, "type" is the type of callback, |
| 53 | "data" is type-dependent data. See the CDsetcallback(3) manual page |
| 54 | for more information. The possible "type" arguments are defined in |
| 55 | the CD module. |
| 56 | |
| 57 | removecallback(type) -- Remove the callback for "type". |
| 58 | |
| 59 | gettrackinfo([tracklist]) -- Return a list of tuples. Each tuple |
| 60 | consists of start and length information of a track. The start and |
| 61 | length information consist of three-tuples with minutes, seconds and |
| 62 | frames. The optional tracklist argument gives a list of interesting |
| 63 | track numbers. If no tracklist is specified, information about all |
| 64 | tracks is returned. |
| 65 | |
| 66 | getstatus() -- Return the status information of the CD. |
| 67 | |
| 68 | play() -- Play the preprogrammed stretches of music from the CD. When |
| 69 | nothing was programmed, the whole CD is played. |
| 70 | |
| 71 | Specifying stretches. |
| 72 | ===================== |
| 73 | |
| 74 | There are three methods available to specify a stretch of music to be |
| 75 | played. The easiest way is to use "settracklist(tracklist)" with which |
| 76 | a list of tracks can be specified. "settracklist(tracklist)" is |
| 77 | equivalent to the sequence |
| 78 | reset() |
| 79 | for track in tracklist: |
| 80 | appendtrack(track) |
| 81 | |
| 82 | The next method is "appendtrack(track)" with which a whole track can be |
| 83 | added to the list of music to be played. "appendtrack(track)" is |
| 84 | equivalent to "appendstretch(track, track)". |
| 85 | |
| 86 | The most complete method is "appendstretch(first, last)". Using this |
| 87 | method, it is possible to specify any stretch of music. |
| 88 | |
| 89 | When two consecutive tracks are played, it is possible to choose |
| 90 | whether the pause that may be between the tracks is played as well or |
| 91 | whether the pause should be skipped. When the end of a stretch is |
| 92 | specified using a track number and the next stretch starts at the |
| 93 | beginning of the following track and that was also specified using the |
| 94 | track number (that is, both were specified as integers, not as tuples), |
| 95 | the pause is played. When either value was specified using absolute |
| 96 | time or track-relative time (that is, as three-tuple or as |
| 97 | four-tuple), the pause will not be played. |
| 98 | |
| 99 | Errors. |
| 100 | ======= |
| 101 | |
| 102 | When an error occurs, an exception will be raised. Depending on where |
| 103 | the error occurs, the exception may either be "readcd.Error" or |
| 104 | "RuntimeError". |