Документация Python неофициальный перевод

cd.md

205 строк · 17.5 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/2.7/library/cd.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 39.3. [`cd`](https://python-all.ru/2.7/library/cd.html#module-cd) – доступ к CD-ROM на системах SGI89Устарело с версии 2.6: Модуль [`cd`](https://python-all.ru/2.7/library/cd.html#module-cd) удалён в Python 3.1011Этот модуль предоставляет интерфейс к библиотеке CD от Silicon Graphics. Он доступен только на системах Silicon Graphics.1213Библиотека работает следующим образом. Программа открывает устройство CD-ROM с помощью [`open()`](https://python-all.ru/2.7/library/cd.html#cd.open) и создаёт синтаксический анализатор для разбора данных с CD с помощью [`createparser()`](https://python-all.ru/2.7/library/cd.html#cd.createparser). Объект, возвращаемый [`open()`](https://python-all.ru/2.7/library/cd.html#cd.open), можно использовать для чтения данных с CD, а также для получения информации о состоянии устройства CD-ROM и получения информации о CD, например, оглавления. Данные с CD передаются анализатору, который разбирает фреймы и вызывает все ранее добавленные колбэк-функции.1415Аудио CD делится на *дорожки* или *программы* (термины используются как синонимы). Дорожки можно подразделять на *индексы*. Аудио CD содержит *оглавление*, в котором указаны начала дорожек на CD. Индекс 0 – это обычно пауза перед началом дорожки. Начало дорожки, указанное в оглавлении, обычно является началом индекса 1.1617Позиции на CD могут быть представлены двумя способами: номер фрейма или кортеж из трёх значений: минуты, секунды и фреймы. Большинство функций используют второе представление. Позиции могут быть как относительно начала CD, так и относительно начала дорожки.1819Модуль [`cd`](https://python-all.ru/2.7/library/cd.html#module-cd) определяет следующие функции и константы:2021#### `cd.createparser()`2223Создаёт и возвращает непрозрачный объект синтаксического анализатора. Методы объекта анализатора описаны ниже.2425#### `cd.msftoframe(minutes, seconds, frames)`2627Преобразует тройку `(minutes, seconds, frames)`, представляющую время в абсолютном временном коде, в соответствующий номер фрейма CD.2829#### `cd.open([device[, mode]])`3031Открывает устройство CD-ROM. Возвращаемое значение – непрозрачный объект проигрывателя; методы объекта проигрывателя описаны ниже. Устройство – это имя файла SCSI-устройства, например `'/dev/scsi/sc0d4l0'` или `None`. Если оно опущено или равно `None`, производится опрос аппаратной конфигурации для поиска привода CD-ROM. Параметр *режим*, если не опущен, должен быть строкой `'r'`.3233Модуль определяет следующие переменные:3435#### `exception cd.error`3637Исключение, возбуждаемое при различных ошибках.3839#### `cd.DATASIZE`4041Размер одного фрейма аудиоданных. Это размер аудиоданных, передаваемых колбэку типа `audio`.4243#### `cd.BLOCKSIZE`4445Размер одного неинтерпретированного фрейма аудиоданных.4647Следующие переменные – это состояния, возвращаемые `getstatus()`:4849#### `cd.READY`5051Привод готов к работе, загружен аудио CD.5253#### `cd.NODISC`5455В приводе нет загруженного CD.5657#### `cd.CDROM`5859В привод загружен CD-ROM. Последующие операции воспроизведения или чтения будут возвращать ошибки ввода-вывода.6061#### `cd.ERROR`6263Произошла ошибка при попытке чтения диска или его оглавления.6465#### `cd.PLAYING`6667Привод находится в режиме CD-плеера, воспроизводя аудио CD через его аудиоразъёмы.6869#### `cd.PAUSED`7071Привод находится в режиме CD-плеера с приостановленным воспроизведением.7273#### `cd.STILL`7475Эквивалент [`PAUSED`](https://python-all.ru/2.7/library/cd.html#cd.PAUSED) на старых (не 3301) моделях приводов CD-ROM Toshiba. Такие приводы никогда не поставлялись SGI.7677#### `cd.audio`7879#### `cd.pnum`8081#### `cd.index`8283#### `cd.ptime`8485#### `cd.atime`8687#### `cd.catalog`8889#### `cd.ident`9091#### `cd.control`9293Целочисленные константы, описывающие различные типы колбэков синтаксического анализатора, которые можно установить с помощью метода `addcallback()` объектов синтаксического анализатора CD (см. ниже).9495## 39.3.1. Объекты проигрывателя9697Объекты проигрывателя (возвращаемые [`open()`](https://python-all.ru/2.7/library/cd.html#cd.open)) имеют следующие методы:9899#### `CD player.allowremoval()`100101Разблокирует кнопку извлечения на приводе CD-ROM, позволяя пользователю извлечь кадди при желании.102103#### `CD player.bestreadsize()`104105Возвращает наилучшее значение для использования в качестве параметра *num\_frames* метода `readda()`. Наилучшим считается значение, обеспечивающее непрерывный поток данных с привода CD-ROM.106107#### `CD player.close()`108109Освобождает ресурсы, связанные с объектом проигрывателя. После вызова `close()` методы объекта больше не следует использовать.110111#### `CD player.eject()`112113Извлекает кадди из привода CD-ROM.114115#### `CD player.getstatus()`116117Возвращает информацию о текущем состоянии привода CD-ROM. Возвращаемая информация представляет собой кортеж со следующими значениями: *state*, *track*, *rtime*, *atime*, *ttime*, *first*, *last*, *scsi\_audio*, *cur\_block*. *rtime* – это время относительно начала текущей дорожки; *atime* – это время относительно начала диска; *ttime* – это общее время на диске. Для получения дополнительной информации о значении этих полей см. man-страницу *CDgetstatus(3dm)*. Значение *state* – одно из следующих: [`ERROR`](https://python-all.ru/2.7/library/cd.html#cd.ERROR), [`NODISC`](https://python-all.ru/2.7/library/cd.html#cd.NODISC), [`READY`](https://python-all.ru/2.7/library/cd.html#cd.READY), [`PLAYING`](https://python-all.ru/2.7/library/cd.html#cd.PLAYING), [`PAUSED`](https://python-all.ru/2.7/library/cd.html#cd.PAUSED), [`STILL`](https://python-all.ru/2.7/library/cd.html#cd.STILL) или [`CDROM`](https://python-all.ru/2.7/library/cd.html#cd.CDROM).118119#### `CD player.gettrackinfo(track)`120121Возвращает информацию о заданном треке. Возвращаемая информация представляет собой кортеж из двух элементов: время начала трека и его длительность.122123#### `CD player.msftoblock(min, sec, frame)`124125Преобразует тройку (минуты, секунды, кадры), представляющую время в абсолютном временном коде, в соответствующий номер логического блока для указанного привода CD-ROM. Для сравнения времени следует использовать [`msftoframe()`](https://python-all.ru/2.7/library/cd.html#cd.msftoframe), а не `msftoblock()`. Номер логического блока отличается от номера кадра на смещение, необходимое для некоторых приводов CD-ROM.126127#### `CD player.play(start, play)`128129Начинает воспроизведение аудиодиска в приводе CD-ROM с заданного трека. Аудиовыход появляется на разъёмах для наушников и аудиоразъёмах привода CD-ROM (если они имеются). Воспроизведение останавливается в конце диска. *начало* – номер трека, с которого начать воспроизведение CD; если *воспроизведение* равно 0, CD переводится в начальное состояние паузы. Затем метод `togglepause()` можно использовать для начала воспроизведения.130131#### `CD player.playabs(minutes, seconds, frames, play)`132133Аналогично `play()`, но начальная позиция задаётся в минутах, секундах и кадрах, а не номером трека.134135#### `CD player.playtrack(start, play)`136137Аналогично `play()`, но воспроизведение останавливается в конце трека.138139#### `CD player.playtrackabs(track, minutes, seconds, frames, play)`140141Аналогично `play()`, но воспроизведение начинается в заданное абсолютное время и заканчивается в конце указанного трека.142143#### `CD player.preventremoval()`144145Блокирует кнопку извлечения на приводе CD-ROM, предотвращая произвольное извлечение каретки.146147#### `CD player.readda(num_frames)`148149Считывает указанное количество кадров с аудиодиска, установленного в приводе CD-ROM. Возвращаемое значение – строка, представляющая аудиокадры. Эту строку можно передать без изменений методу `parseframe()` объекта парсера.150151#### `CD player.seek(minutes, seconds, frames)`152153Устанавливает указатель, определяющий начальную точку следующего чтения цифровых аудиоданных с CD-ROM. Указатель устанавливается на позицию абсолютного временного кода, заданную в *минутах*, *секундах* и *кадрах*. Возвращаемое значение – номер логического блока, на который установлен указатель.154155#### `CD player.seekblock(block)`156157Устанавливает указатель, определяющий начальную точку следующего чтения цифровых аудиоданных с CD-ROM. Указатель устанавливается на заданный номер логического блока. Возвращаемое значение – номер логического блока, на который установлен указатель.158159#### `CD player.seektrack(track)`160161Устанавливает указатель, определяющий начальную точку следующего чтения цифровых аудиоданных с CD-ROM. Указатель устанавливается на заданный трек. Возвращаемое значение – номер логического блока, на который установлен указатель.162163#### `CD player.stop()`164165Останавливает текущую операцию воспроизведения.166167#### `CD player.togglepause()`168169Приостанавливает CD, если он играет, и запускает воспроизведение, если он на паузе.170171## 39.3.2. Объекты Parser172173Объекты Parser (возвращаемые [`createparser()`](https://python-all.ru/2.7/library/cd.html#cd.createparser)) имеют следующие методы:174175#### `CD parser.addcallback(type, func, arg)`176177Добавляет колбэк для парсера. У парсера есть колбэки для восьми различных типов данных в потоке цифровых аудиоданных. Константы для этих типов определены на уровне модуля [`cd`](https://python-all.ru/2.7/library/cd.html#module-cd) (см. выше). Колбэк вызывается следующим образом: `func(arg, type, data)`, где *аргумент* – переданный пользователем аргумент, *тип* – конкретный тип колбэка, а *данные* – данные, возвращаемые для этого *типа* колбэка. Тип данных зависит от *типа* колбэка следующим образом:178179| Тип | Значение |180| --- | --- |181| `audio` | Строка, которую можно передать без изменений в `al.writesamps()`. |182| `pnum` | Целое число, задающее номер программы (трека). |183| `index` | Целое число, задающее номер индекса. |184| `ptime` | Кортеж, состоящий из времени программы в минутах, секундах и кадрах. |185| `atime` | Кортеж, состоящий из абсолютного времени в минутах, секундах и кадрах. |186| `catalog` | Строка из 13 символов, задающая каталожный номер диска. |187| `ident` | Строка из 12 символов, задающая идентификационный номер ISRC записи. Строка состоит из двух символов кода страны, трёх символов кода владельца, двух символов, задающих год, и пяти символов, задающих серийный номер. |188| `control` | Целое число, задающее управляющие биты из субкодовых данных CD. |189190#### `CD parser.deleteparser()`191192Удаляет парсер и освобождает используемую им память. Объект не должен использоваться после этого вызова. Этот вызов выполняется автоматически, когда последняя ссылка на объект удаляется.193194#### `CD parser.parseframe(frame)`195196Разбирает один или несколько кадров цифровых аудиоданных с CD, например, возвращённых методом `readda()`. Определяет, какие субкоды присутствуют в данных. Если с момента последнего кадра эти субкоды изменились, то `parseframe()` выполняет колбэк соответствующего типа, передавая ему субкодовые данные, обнаруженные в кадре. В отличие от C-функции, этому методу можно передать более одного кадра цифровых аудиоданных.197198#### `CD parser.removecallback(type)`199200Удаляет колбэк для заданного *типа*.201202#### `CD parser.resetparser()`203204Сбрасывает поля парсера, используемые для отслеживания субкодов, в начальное состояние. `resetparser()` следует вызывать после замены диска.205