cd — Доступ к CD-ROM на системах SGI
Устарело начиная с версии 2.6: Модуль cd был удалён в Python 3.
Этот модуль предоставляет интерфейс к библиотеке Silicon Graphics для работы с CD. Он доступен только на системах Silicon Graphics.
Способы работы библиотеки следующие. Программа открывает устройство CD-ROM с помощью open() и создаёт парсер для обработки данных с CD с помощью createparser(). Объект, возвращаемый open(), может использоваться для чтения данных с CD, а также для получения информации о состоянии устройства CD-ROM и информации о CD, такой как таблица содержания. Данные с CD передаются парсеру, который анализирует фреймы и вызывает любые функции обратного вызова, которые были добавлены ранее.
Аудио-CD разделён на треки или программы (эти термины используются взаимозаменяемо). Треки могут быть разделены на индексы. Аудио-CD содержит таблицу содержания, которая указывает начало треков на CD. Индекс 0 обычно является паузой перед началом трека. Начало трека, как указано в таблице содержания, обычно является началом индекса 1.
Позиции на CD могут быть представлены двумя способами. Либо номер фрейма, либо кортеж из трёх значений: минуты, секунды и фреймы. Большинство функций используют последнее представление. Позиции могут быть как относительно начала CD, так и относительно начала трека.
Модуль cd определяет следующие функции и константы:
-
cd.createparser() -
Создаёт и возвращает неявный объект парсера. Методы объекта парсера описаны ниже.
-
cd.msftoframe(minutes, seconds, frames) -
Преобразует тройку
(minutes, seconds, frames), представляющую время в абсолютном коде времени, в соответствующий номер фрейма CD.
-
cd.open([device[, mode]]) -
Открывает устройство CD-ROM. Значение возврата — неявный объект плеера; методы объекта плеера описаны ниже. Устройство — это имя файла устройства SCSI, например
'/dev/scsi/sc0d4l0', илиNone. Если опущено илиNone, выполняется поиск в инвентаре оборудования для обнаружения привода CD-ROM. Если параметр mode не опущен, он должен быть строкой'r'.
Модуль определяет следующие переменные:
-
exception cd.error -
Исключение, генерируемое при различных ошибках.
-
cd.DATASIZE -
Размер одной порции аудиоданных фрейма. Это размер аудиоданных, передаваемых в функцию обратного вызова типа
audio.
-
cd.BLOCKSIZE -
Размер одного неинтерпретируемого фрейма аудиоданных.
Следующие переменные — это состояния, возвращаемые getstatus():
-
cd.READY -
Привод готов к работе с загруженным аудио-CD.
-
cd.NODISC -
В приводе нет загруженного CD.
-
cd.CDROM -
В приводе загружен CD-ROM. Последующие операции воспроизведения или чтения вернут ошибки ввода/вывода.
-
cd.ERROR -
Возникла ошибка при попытке чтения диска или его таблицы содержания.
-
cd.PLAYING -
Привод находится в режиме плеера CD, воспроизводящего аудио-CD через его аудиоразъёмы.
-
cd.PAUSED -
Привод находится в режиме слоя CD с приостановленным воспроизведением.
-
cd.STILL -
Аналог
PAUSEDна более старых (не модели 3301) приводах Toshiba CD-ROM. Такие приводы никогда не поставлялись SGI.
-
cd.audio -
cd.pnum -
cd.index -
cd.ptime -
cd.atime -
cd.catalog -
cd.ident -
cd.control -
Целочисленные константы, описывающие различные типы функций обратного вызова парсера, которые могут быть установлены методом
addcallback()объектов парсера CD (см. ниже).
1. Объекты плеера
Объекты плеера (возвращаемые open()) имеют следующие методы:
-
CD player.allowremoval() -
Разблокирует кнопку выброса из привода CD-ROM, позволяя пользователю выбросить лоток, если нужно.
-
CD player.bestreadsize() -
Возвращает наилучшее значение для параметра num_frames метода
readda(). Наилучшее определяется как значение, позволяющее непрерывный поток данных с привода CD-ROM.
-
CD player.close() -
Освобождает ресурсы, связанные с объектом плеера. После вызова
close(), методы объекта больше не должны использоваться.
-
CD player.eject() -
Выбрасывает лоток из привода CD-ROM.
-
CD player.getstatus() -
Возвращает информацию о текущем состоянии привода CD-ROM. Возвращаемая информация — кортеж со следующими значениями: state, track, rtime, atime, ttime, first, last, scsi_audio, cur_block. rtime — время относительно начала текущего трека; atime — время относительно начала диска; ttime — общее время на диске. Более подробная информация о значении значений содержится в справке CDgetstatus(3dm). Значение state — одно из следующих:
ERROR,NODISC,READY,PLAYING,PAUSED,STILLилиCDROM.
-
CD player.gettrackinfo(track) -
Возвращает информацию о заданном треке. Возвращаемая информация — кортеж из двух элементов: начальное время трека и продолжительность трека.
-
CD player.msftoblock(min, sec, frame) -
Преобразует тройку «минуты, секунды, фреймы», представляющую время в абсолютном коде времени, в соответствующий логический номер блока для данного привода CD-ROM. Следует использовать
msftoframe()вместоmsftoblock()для сравнения времени. Логический номер блока отличается от номера фрейма смещением, необходимым для определённых приводов CD-ROM.
-
CD player.play(start, play) -
Начинает воспроизведение аудио-CD в приводе CD-ROM с указанного трека. Аудиовыход появляется на наушниках и аудиоразъёмах привода CD-ROM (если они есть). Воспроизведение останавливается в конце диска. start — номер трека, с которого начать воспроизведение; если play равно 0, CD устанавливается в первоначальное приостановленное состояние. Затем можно использовать метод
togglepause()для начала воспроизведения.
-
CD player.playabs(minutes, seconds, frames, play) -
Как
play(), за исключением того, что начало задаётся в минутах, секундах и фреймах вместо номера трека.
-
CD player.playtrack(start, play) -
Как
play(), за исключением того, что воспроизведение останавливается в конце трека.
-
CD player.playtrackabs(track, minutes, seconds, frames, play) -
Как
play(), за исключением того, что воспроизведение начинается в указанное абсолютное время и заканчивается в конце указанного трека.
-
CD player.preventremoval() -
Заблокирует кнопку выброса из привода CD-ROM, препятствуя произвольному выбросу лотка пользователем.
-
CD player.readda(num_frames) -
Читает указанное количество фреймов с аудио-CD, установленного в привод CD-ROM. Возвращаемое значение — строка, представляющая аудиофреймы. Эту строку можно без изменений передать в метод
parseframe()объекта парсера.
-
CD player.seek(minutes, seconds, frames) -
Устанавливает указатель, указывающий на начальную точку следующего чтения цифровых аудиоданных с CD-ROM. Указатель устанавливается в абсолютную позицию кода времени, заданную в минутах, секундах и фреймах. Возвращаемое значение — логический номер блока, на который установлен указатель.
-
CD player.seekblock(block) -
Устанавливает указатель, указывающий на начальную точку следующего чтения цифровых аудиоданных с CD-ROM. Указатель устанавливается на указанный логический номер блока. Возвращаемое значение — логический номер блока, на который установлен указатель.
-
CD player.seektrack(track) -
Устанавливает указатель, указывающий на начальную точку следующего чтения цифровых аудиоданных с CD-ROM. Указатель устанавливается на указанный трек. Возвращаемое значение — логический номер блока, на который установлен указатель.
-
CD player.stop() -
Останавливает текущую операцию воспроизведения.
-
CD player.togglepause() -
Приостанавливает CD, если он воспроизводится, и заставляет его воспроизводиться, если он приостановлен.
2. Объекты парсера
Объекты парсера (возвращаемые createparser()) имеют следующие методы:
-
CD parser.addcallback(type, func, arg) -
Добавляет обратный вызов для анализатора. Анализатор имеет обратные вызовы для восьми различных типов данных в потоке данных цифрового аудио. Константы для этих типов определены на уровне модуля
cd(см. выше). Обратный вызов вызывается следующим образом:func(arg, type, data), где arg — переданное пользователем значение, type — конкретный тип обратного вызова, а data — данные, возвращаемые для этого типа обратного вызова. Тип данных зависит от типа обратного вызова следующим образом:Тип
Значение
audioСтрока, которую можно передать без изменений в
al.writesamps().pnumЦелое число, задающее номер программы (трека).
indexЦелое число, задающее номер индекса.
ptimeКортеж, состоящий из времени программы в минутах, секундах и кадрах.
atimeКортеж, состоящий из абсолютного времени в минутах, секундах и кадрах.
catalogСтрока из 13 символов, задающая каталожный номер компакт-диска.
identСтрока из 12 символов, задающая идентификатор ISRC записи. Строка состоит из двух символов — кода страны, трех символов — кода владельца, двух символов — года и пяти символов — серийного номера.
controlЦелое число, задающее управляющие биты из данных подкода компакт-диска.
-
CD parser.deleteparser() -
Удаляет анализатор и освобождает занимаемую им память. После этого вызова объект использовать нельзя. Этот вызов выполняется автоматически при удалении последней ссылки на объект.
-
CD parser.parseframe(frame) -
Анализирует один или несколько кадров цифровых аудиоданных с компакт-диска, таких как возвращаемые
readda(). Определяет, какие подкоды присутствуют в данных. Если эти подкоды изменились с момента последнего кадра, тоparseframe()выполняет обратный вызов соответствующего типа, передавая ему данные подкода, найденные в кадре. В отличие от функции C, в этот метод можно передать более одного кадра цифровых аудиоданных.
-
CD parser.removecallback(type) -
Удаляет обратный вызов для заданного типа type.
-
CD parser.resetparser() -
Сбрасывает поля анализатора, используемые для отслеживания подкодов, в начальное состояние.
resetparser()следует вызывать после смены диска.
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/2.7/library/cd.html