S
Scott Ellsworth
Hi, all.
Please find attached a simple Ruby script that rummages through my
ITunes files, reads the first megabyte or so, finds the encoder, and
then prints the encoder and filename. This lets me know which tracks
need re-ripping.
This script blows through half a gig of RAM while running, and I really
do not see why. It should only have perhaps a few megabytes at max in
RAM.
FWIW, the output looks like:
iTunes v4.9, QuickTime 7.0.1 /Users/work/Music/iTunes/iTunes
Music/Yellowcard/Ocean Avenue Song1.m4a
iTunes v4.9, QuickTime 7.0.1 /Users/work/Music/iTunes/iTunes
Music/Yellowcard/Ocean Avenue Song2.m4a
iTunes v4.9, QuickTime 7.0.1 /Users/work/Music/iTunes/iTunes
Music/Yellowcard/Ocean Avenue Song3.m4a
Style and speed optimizations are accepted, but the runtime is under a
minute now for the 5500 files I have in my library, so memory usage is
my real problem.
Help?
#!/usr/bin/env ruby
require 'find'
def procpath(f)
if File.file?(f) then
if File.fnmatch("*.m4a",f) then
found = false
data = IO.read(f, 65536*8)
re = /[[:alnum:]_., ]{9,}/
data.scan(re) do |string|
if (string =~ /QuickTime/) then
filename = File.basename(f)
dirname = File.dirname(f)
# puts "#{string} #{dirname}"
puts "#{string} #{dirname} #{filename}"
found = true
break
end
end
if (!found) then
puts "Unknown #{f}"
end
end
elsif File.directory?(f) && !File.fnmatch(".", f) &&
!File.fnmatch("..", f) then
Dir.foreach(f) { |subf| procpath(subf) }
end
end
Find.find("/Users/work/Music/iTunes/iTunes Music/") do |f|
procpath(f)
end
Scott
Please find attached a simple Ruby script that rummages through my
ITunes files, reads the first megabyte or so, finds the encoder, and
then prints the encoder and filename. This lets me know which tracks
need re-ripping.
This script blows through half a gig of RAM while running, and I really
do not see why. It should only have perhaps a few megabytes at max in
RAM.
FWIW, the output looks like:
iTunes v4.9, QuickTime 7.0.1 /Users/work/Music/iTunes/iTunes
Music/Yellowcard/Ocean Avenue Song1.m4a
iTunes v4.9, QuickTime 7.0.1 /Users/work/Music/iTunes/iTunes
Music/Yellowcard/Ocean Avenue Song2.m4a
iTunes v4.9, QuickTime 7.0.1 /Users/work/Music/iTunes/iTunes
Music/Yellowcard/Ocean Avenue Song3.m4a
Style and speed optimizations are accepted, but the runtime is under a
minute now for the 5500 files I have in my library, so memory usage is
my real problem.
Help?
#!/usr/bin/env ruby
require 'find'
def procpath(f)
if File.file?(f) then
if File.fnmatch("*.m4a",f) then
found = false
data = IO.read(f, 65536*8)
re = /[[:alnum:]_., ]{9,}/
data.scan(re) do |string|
if (string =~ /QuickTime/) then
filename = File.basename(f)
dirname = File.dirname(f)
# puts "#{string} #{dirname}"
puts "#{string} #{dirname} #{filename}"
found = true
break
end
end
if (!found) then
puts "Unknown #{f}"
end
end
elsif File.directory?(f) && !File.fnmatch(".", f) &&
!File.fnmatch("..", f) then
Dir.foreach(f) { |subf| procpath(subf) }
end
end
Find.find("/Users/work/Music/iTunes/iTunes Music/") do |f|
procpath(f)
end
Scott