rb_cdio en operaciones!

Enviado por clbustos el Jue, 19/05/2005 - 02:50.
Clasificado en:

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:

  1.  #!/bin/env ruby
  2.  # Definición del módulo y las clases del archivo
  3.  
  4.  module CdIo
  5.   def CdIo.get_devices_with_cap(search_devices,capabilities,any)
  6.   end
  7.   # debe devolver un objeto:
  8.   # - propiedad 'devices' :array de string con los devices
  9.   # - propiedad 'driver': con el driver por defecto
  10.   # y otro con
  11.   def CdIo.get_devices_with_cap_ret(search_devices,capabilities,any,driver_id)
  12.   end
  13.   def CdIo.get_devices
  14.   end
  15.   # Devuelve el mismo objeto que get_devices_with_cap_ret
  16.   def CdIo.get_devices_ret
  17.   end
  18.   # Devuelve el device por defecto. Se puede entregar un objeto
  19.   def CdIo.get_default_device(cd=nil)
  20.   end
  21.   # Devuelve las capacidades del device en un objeto DeviceCap
  22.   # ¿Valdrá la pena?
  23.   def CdIo.get_drive_cap(device)
  24.   end
  25.   def CdIo.get_hwinfo()
  26.   end
  27.   def CdIo.driver_describe(driver)
  28.   end
  29.   def CdIo.discmode_describe(driver)
  30.   end
  31.   def CdIo.track_type_describe(track)
  32.   end
  33.   # ocupamos lo que haya que ocupar para abrir la fuente y el driver por defecto
  34.   # si la fuente es null, ocupamos get_default_device con null.
  35.   def open(source=nil,driver=nil)
  36.   end
  37.   class Cd
  38.   attr_reader :device, :mcn, :driver_name, :driver_id, :first_track_num, :disc_mode, :num_tracks, :stat_size, :cddb_id
  39.   def get_arg(key)
  40.   end
  41.   # puede entregarse el número o el objeto pista
  42.   def get_cdtext(track)
  43.   end
  44.   # devuelve un array con las pistas del Cd.
  45.   def get_tracks
  46.   end
  47.   def is_cd?
  48.   end
  49.   def is_dvd?
  50.   end
  51.  
  52.   end
  53.   class CdText
  54.   end
  55.   class Track
  56.   attr_reader :cd, :number, :format, :green?, :lba,:lsn,:min,:sec,:frames,:sec_count
  57.   def green?
  58.   end
  59.   end
  60.   class TrackIso9660 < Track
  61.   attr_reader :system_id, :volume_id, :volumeset_id, :preparer_id, :publisher_id, :application_id
  62.   end
  63.   class Device
  64.   end
  65.  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

Enviar un comentario nuevo

El contenido de este campo se mantiene como privado y no se muestra públicamente.
If you have a Gravatar account, used to display your avatar.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Saltos automáticos de líneas y de párrafos.

Más información sobre opciones de formato