rb_cdio en operaciones!
Aunque ni yo lo creo, ya tengo una versión útil de rb_cdio!
Para los que no han leído los post anteriores, es una extensión en C para Ruby, que permite utilizar parte de las funciones incluidas en las bibliotecas cdio e iso9660, del proyecto libcdio.
Estas bibliotecas nos permiten determinar, para un cd, cosas como su tipo, el número de pistas que tiene, el tipo y formato de estas últimas, entre otras cosas. También permite, si tienen instalado ruby-freedb, acceder de inmediato a un objeto Freedb a partir de un lindo CdIo::Cd.
A continuación, les muestro la definición de interface para el módulo CdIo. Espero que hable por si solo:
- #!/bin/env ruby
- # Definición del módulo y las clases del archivo
- module CdIo
- def CdIo.get_devices_with_cap(search_devices,capabilities,any)
- end
- # debe devolver un objeto:
- # - propiedad 'devices' :array de string con los devices
- # - propiedad 'driver': con el driver por defecto
- # y otro con
- def CdIo.get_devices_with_cap_ret(search_devices,capabilities,any,driver_id)
- end
- def CdIo.get_devices
- end
- # Devuelve el mismo objeto que get_devices_with_cap_ret
- def CdIo.get_devices_ret
- end
- # Devuelve el device por defecto. Se puede entregar un objeto
- def CdIo.get_default_device(cd=nil)
- end
- # Devuelve las capacidades del device en un objeto DeviceCap
- # ¿Valdrá la pena?
- def CdIo.get_drive_cap(device)
- end
- def CdIo.get_hwinfo()
- end
- def CdIo.driver_describe(driver)
- end
- def CdIo.discmode_describe(driver)
- end
- def CdIo.track_type_describe(track)
- end
- # ocupamos lo que haya que ocupar para abrir la fuente y el driver por defecto
- # si la fuente es null, ocupamos get_default_device con null.
- def open(source=nil,driver=nil)
- end
- class Cd
- attr_reader :device, :mcn, :driver_name, :driver_id, :first_track_num, :disc_mode, :num_tracks, :stat_size, :cddb_id
- def get_arg(key)
- end
- # puede entregarse el número o el objeto pista
- def get_cdtext(track)
- end
- # devuelve un array con las pistas del Cd.
- def get_tracks
- end
- def is_cd?
- end
- def is_dvd?
- end
- end
- class CdText
- end
- class Track
- attr_reader :cd, :number, :format, :green?, :lba,:lsn,:min,:sec,:frames,:sec_count
- def green?
- end
- end
- class TrackIso9660 < Track
- attr_reader :system_id, :volume_id, :volumeset_id, :preparer_id, :publisher_id, :application_id
- end
- class Device
- end
- end
Como se darán cuenta, aun falta trabajo por hacer. Por ejemplo, no he hecho nada para la clase Device, ni tengo mucha documentación. De todas maneras, con lo que ya está, se pueden hacer cosas muy interesantes :)
Pueden acceder a la página del proyecto en http://php.apsique.com/project/rb_cdio
- 1829 lecturas

Enviar un comentario nuevo