rbcddb 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/AUTHORS +1 -0
- data/README +33 -0
- data/Rakefile +182 -0
- data/example/example.rb +68 -0
- data/ext/cddb_conn.c +576 -0
- data/ext/cddb_conn.h +15 -0
- data/ext/cddb_disc.c +497 -0
- data/ext/cddb_disc.h +16 -0
- data/ext/cddb_mod.c +134 -0
- data/ext/cddb_mod.h +11 -0
- data/ext/cddb_rb.c +15 -0
- data/ext/cddb_track.c +327 -0
- data/ext/cddb_track.h +18 -0
- data/ext/extconf.rb +6 -0
- data/ext/usage.c +19 -0
- data/ext/usage.h +8 -0
- metadata +61 -0
data/AUTHORS
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Jurgen Van Ham (juvanham@nerdshack.com)
|
data/README
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
= rubycdio
|
|
2
|
+
== Version
|
|
3
|
+
version 0.0.1
|
|
4
|
+
|
|
5
|
+
== Overview
|
|
6
|
+
cddb_ruby are the bindings for ruby to use the libcddb, its
|
|
7
|
+
main use will be in combination with rbcdio
|
|
8
|
+
|
|
9
|
+
== Requirements
|
|
10
|
+
|
|
11
|
+
I've only tested rcdio on Ruby 1.8.4 - 1.8.6
|
|
12
|
+
http://libcddb.sourceforge.net with header fiels
|
|
13
|
+
|
|
14
|
+
== What's here
|
|
15
|
+
|
|
16
|
+
Currently there is a simple example in example/example
|
|
17
|
+
|
|
18
|
+
important is to require the 'rbcddb' which will use the .so-file
|
|
19
|
+
|
|
20
|
+
Now there are 3 objects and a module available
|
|
21
|
+
|
|
22
|
+
CDDB_Connection
|
|
23
|
+
CDDB_Disc
|
|
24
|
+
CDDB_Track
|
|
25
|
+
and the module Rb_CDB
|
|
26
|
+
|
|
27
|
+
The CDDB_Disc and CDDB_Track have a to_hash method on top of the
|
|
28
|
+
methods from cddblib. The constants are defined in the Rb_CDDB
|
|
29
|
+
which does provide some global settings for the library
|
|
30
|
+
|
|
31
|
+
== Todo
|
|
32
|
+
Documentation in ruby style of these 4 ruby objects, and maybe some
|
|
33
|
+
more examples
|
data/Rakefile
ADDED
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
SO_NAME = "rbcddb.so"
|
|
2
|
+
|
|
3
|
+
# ------- Default Package ----------
|
|
4
|
+
PKG_VERSION='0.0.2'
|
|
5
|
+
PKG_NAME = 'rbcddb'
|
|
6
|
+
|
|
7
|
+
FILES = [
|
|
8
|
+
'Rakefile',
|
|
9
|
+
'AUTHORS',
|
|
10
|
+
'README',
|
|
11
|
+
'example/*',
|
|
12
|
+
'**/doc/**/*',
|
|
13
|
+
'ext/**/*.c',
|
|
14
|
+
'ext/**/*.h',
|
|
15
|
+
'ext/**/Makefile',
|
|
16
|
+
'ext/**/extconf.rb',
|
|
17
|
+
'lib/*.rb',
|
|
18
|
+
]
|
|
19
|
+
|
|
20
|
+
require 'rake/gempackagetask'
|
|
21
|
+
task :default => [ 'rdoc', 'package' ]
|
|
22
|
+
|
|
23
|
+
# --- Redo Rake::PackageTask::define so tar uses -h to include
|
|
24
|
+
# files of a symbolic link.
|
|
25
|
+
module Rake
|
|
26
|
+
class PackageTask < TaskLib
|
|
27
|
+
# Create the tasks defined by this task library.
|
|
28
|
+
def define
|
|
29
|
+
fail "Version required (or :noversion)" if @version.nil?
|
|
30
|
+
@version = nil if :noversion == @version
|
|
31
|
+
|
|
32
|
+
desc "Build all the packages"
|
|
33
|
+
task :package
|
|
34
|
+
|
|
35
|
+
desc "Force a rebuild of the package files"
|
|
36
|
+
task :repackage => [:clobber_package, :package]
|
|
37
|
+
|
|
38
|
+
desc "Remove package products"
|
|
39
|
+
task :clobber_package do
|
|
40
|
+
rm_r package_dir rescue nil
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
task :clobber => [:clobber_package]
|
|
44
|
+
|
|
45
|
+
[
|
|
46
|
+
[need_tar, tgz_file, "z"],
|
|
47
|
+
[need_tar_gz, tar_gz_file, "z"],
|
|
48
|
+
[need_tar_bz2, tar_bz2_file, "j"]
|
|
49
|
+
].each do |(need, file, flag)|
|
|
50
|
+
if need
|
|
51
|
+
task :package => ["#{package_dir}/#{file}"]
|
|
52
|
+
file "#{package_dir}/#{file}" => [package_dir_path] + package_files do
|
|
53
|
+
chdir(package_dir) do
|
|
54
|
+
sh %{tar #{flag}hcvf #{file} #{package_name}}
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
if need_zip
|
|
61
|
+
task :package => ["#{package_dir}/#{zip_file}"]
|
|
62
|
+
file "#{package_dir}/#{zip_file}" => [package_dir_path] + package_files do
|
|
63
|
+
chdir(package_dir) do
|
|
64
|
+
sh %{zip -r #{zip_file} #{package_name}}
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
directory package_dir
|
|
70
|
+
|
|
71
|
+
file package_dir_path => @package_files do
|
|
72
|
+
mkdir_p package_dir rescue nil
|
|
73
|
+
@package_files.each do |fn|
|
|
74
|
+
f = File.join(package_dir_path, fn)
|
|
75
|
+
fdir = File.dirname(f)
|
|
76
|
+
mkdir_p(fdir) if !File.exist?(fdir)
|
|
77
|
+
if File.directory?(fn)
|
|
78
|
+
mkdir_p(f)
|
|
79
|
+
else
|
|
80
|
+
rm_f f
|
|
81
|
+
safe_ln(fn, f)
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
self
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# --------- GEM package ------
|
|
91
|
+
require 'rubygems'
|
|
92
|
+
desc "Create GEM spec file"
|
|
93
|
+
default_spec = Gem::Specification.new do |spec|
|
|
94
|
+
spec.name = PKG_NAME
|
|
95
|
+
|
|
96
|
+
spec.homepage = "http://rubyforge.org/projects/rbcddb/"
|
|
97
|
+
spec.summary = "Ruby to libcddb ( http://libcddb.sourceforge.net)"
|
|
98
|
+
spec.description = <<-EOF
|
|
99
|
+
Libcddb is a C library to access data on a CDDB server (freedb.org).
|
|
100
|
+
It allows you to:
|
|
101
|
+
|
|
102
|
+
1. search the database for possible CD matches;
|
|
103
|
+
2. retrieve detailed information about a specific CD;
|
|
104
|
+
3. submit new CD entries to the database.
|
|
105
|
+
EOF
|
|
106
|
+
|
|
107
|
+
spec.version = PKG_VERSION
|
|
108
|
+
|
|
109
|
+
spec.author = "Jurgen Van Ham"
|
|
110
|
+
spec.email = "juvanham@rubyforge.org"
|
|
111
|
+
spec.platform = Gem::Platform::RUBY
|
|
112
|
+
spec.require_path = "lib"
|
|
113
|
+
spec.bindir = "bin"
|
|
114
|
+
spec.executables = []
|
|
115
|
+
spec.extensions = ["ext/extconf.rb"]
|
|
116
|
+
spec.autorequire = "rbcddb"
|
|
117
|
+
spec.files = FileList[FILES].to_a
|
|
118
|
+
# spec.test_files = FileList['tests/**/*']
|
|
119
|
+
|
|
120
|
+
spec.required_ruby_version = '>= 1.8.4'
|
|
121
|
+
spec.date = DateTime.now
|
|
122
|
+
spec.rubyforge_project = 'rbcddb'
|
|
123
|
+
|
|
124
|
+
# rdoc
|
|
125
|
+
spec.has_rdoc = true
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
# Rake task to build the default package
|
|
129
|
+
desc "Build all the packages (gem, tgz)"
|
|
130
|
+
Rake::GemPackageTask.new(default_spec) do |pkg|
|
|
131
|
+
# pkg.need_zip = true
|
|
132
|
+
pkg.need_tar = true
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
# --------- Publish ------
|
|
137
|
+
desc "Publish rbcddb to RubyForge."
|
|
138
|
+
task :publish do
|
|
139
|
+
require 'rake/contrib/sshpublisher'
|
|
140
|
+
|
|
141
|
+
# Get ruby-debug path
|
|
142
|
+
ruby_debug_path = File.expand_path(File.dirname(__FILE__))
|
|
143
|
+
|
|
144
|
+
publisher = Rake::SshDirPublisher.new("juvanham@rubyforge.org",
|
|
145
|
+
"/var/www/gforge-projects/rbcddb", ruby_debug_path)
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
desc "Clear temp files"
|
|
149
|
+
task :clean do
|
|
150
|
+
sh "rm -f ruby_cddb-*.gem "
|
|
151
|
+
sh "rm -Rf pkg doc exr/*.so ext/*.o"
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
# --------- RDoc Documentation ------
|
|
155
|
+
require 'rake/rdoctask'
|
|
156
|
+
Rake::RDocTask.new("rdoc") do |rdoc|
|
|
157
|
+
rdoc.rdoc_dir = 'doc'
|
|
158
|
+
rdoc.title = "rbcddb-debug"
|
|
159
|
+
# Show source inline with line numbers
|
|
160
|
+
rdoc.options += ("--exclude data --exclude test "
|
|
161
|
+
"--exclude pkg").split()
|
|
162
|
+
# Make the readme file the start page for the generated html
|
|
163
|
+
rdoc.options << '--main' << 'README'
|
|
164
|
+
rdoc.rdoc_files.include('lib/*.rb',
|
|
165
|
+
'ext/*.c',
|
|
166
|
+
'AUTHORS',
|
|
167
|
+
'README')
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
# --------- Regression tests ------
|
|
171
|
+
require 'rake/testtask'
|
|
172
|
+
Rake::TestTask.new('test') do |t|
|
|
173
|
+
t.pattern = 'test/*.rb'
|
|
174
|
+
t.warning = true
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
# 'check' is an the same thing as 'test'
|
|
178
|
+
Rake::TestTask.new('check') do |t|
|
|
179
|
+
t.pattern = 'test/*.rb'
|
|
180
|
+
t.warning = true
|
|
181
|
+
end
|
|
182
|
+
|
data/example/example.rb
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
require 'rubygems'
|
|
3
|
+
gem 'ruby_cddb'
|
|
4
|
+
gem 'rbcdio'
|
|
5
|
+
require 'cdio'
|
|
6
|
+
require 'rbcddb'
|
|
7
|
+
|
|
8
|
+
cddb_conn=CDDB_Connection.new
|
|
9
|
+
cddb_disk=CDDB_Disc.new
|
|
10
|
+
cdio_drive = Cdio::Device.new
|
|
11
|
+
|
|
12
|
+
if false
|
|
13
|
+
cddb_conn.http_enable=true
|
|
14
|
+
cddb_conn.server_name='freedb.freedb.org'
|
|
15
|
+
cddb_conn.http_proxy_server_name='squid'
|
|
16
|
+
cddb_conn.http_proxy_server_port=3128
|
|
17
|
+
cddb_conn.http_proxy_enable=true
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
cdio_drive.open
|
|
21
|
+
|
|
22
|
+
trk_cnt=cdio_drive.num_tracks
|
|
23
|
+
|
|
24
|
+
(1..trk_cnt).each do |trn|
|
|
25
|
+
cddb_track=CDDB_Track.new
|
|
26
|
+
offset=cdio_drive.track(trn).lba
|
|
27
|
+
cddb_track.frame_offset=offset
|
|
28
|
+
cddb_disk.add_track(cddb_track)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
puts "cache dir #{cddb_conn.cache_dir}"
|
|
32
|
+
# set length without calculating a lot
|
|
33
|
+
cddb_disk.last_frame_offset=cdio_drive.track(Rubycdio::CDROM_LEADOUT_TRACK).lba
|
|
34
|
+
|
|
35
|
+
Rb_CDDB.log_level=Rb_CDDB::LOG_WARN
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
t=cddb_conn.query_all(cddb_disk)
|
|
39
|
+
puts "Error : #{cddb_conn.error_str}"
|
|
40
|
+
|
|
41
|
+
tr=t.last.track(t.last.track_count-1)
|
|
42
|
+
tr.title='changed_'+ ((tr.title) || '')
|
|
43
|
+
|
|
44
|
+
if t.nil?
|
|
45
|
+
puts "return nil"
|
|
46
|
+
else
|
|
47
|
+
t.each do |d|
|
|
48
|
+
d.to_hash.each_pair do |k,v|
|
|
49
|
+
puts "disc #{k} => #{v} "
|
|
50
|
+
end
|
|
51
|
+
unless d.nil?
|
|
52
|
+
tracks=[d.track_first]
|
|
53
|
+
while ! tracks.last.nil?
|
|
54
|
+
tracks.push d.track_next
|
|
55
|
+
end
|
|
56
|
+
tracks.each do |track|
|
|
57
|
+
puts ''
|
|
58
|
+
unless track.nil?
|
|
59
|
+
track.to_hash.each_pair do |k,v|
|
|
60
|
+
puts "track #{k}=> #{v} "
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
puts Rb_CDDB::CAT_JAZZ
|