end
scrap = Scrap.find_by_location(location.code)
-require 'rubygems'
-gem 'zipruby'
-require 'zipruby'
-require 'nkf'
-
-def encode(str)
- str && NKF.nkf('-Sw', str)
-end
-
-def dump_zip(path, location, name)
- Zip::Archive.open(path) do |ar|
- puts "# #{path}"
- code, extname = location.generate_arc_code_and_extname(name)
- arc = location.arcs.find_by_code(code)
- next unless arc
-
- n = ar.num_files # number of entries
- n.times do |i|
- # entry_name = ar.get_name(i) # get entry name from archive
-
- # open entry
- ar.fopen(i) do |f|
- path = encode(f.name)
- case path
- when /\.pmd\z/
- puts [ code, path ].join(' ')
- arc.pmds.find_or_create_by_path(path)
- when /\.vmd\z/
- puts [ code, path ].join(' ')
- arc.vmds.find_or_create_by_path(path)
- when /\.x\z/
- puts [ code, path ].join(' ')
- arc.xes.find_or_create_by_path(path)
- end
-
- # content = f.read # read entry content
- end
- end
- end
-rescue Zip::Error => exc
- puts "error: " + exc.message
-end
-
ent = "/Volumes/uploader/src/#{location.code}/index.html"
open(ent) do |f|
while line = f.gets
if scrap.match(line)
name, = scrap.row
- dump_zip("/Volumes/uploader/arc/#{location.code}/#{name}", location, name)
+ code, extname = location.generate_arc_code_and_extname(name)
+ arc = location.arcs.find_by_code(code)
+ next unless arc
+ arc.create_zip_entries("/Volumes/uploader/arc/#{location.code}/#{name}")
puts
end
end
+gem 'zipruby'
+require 'zipruby'
+require 'nkf'
+
class Arc < ActiveRecord::Base
belongs_to :location
has_many :pmds
has_many :vmds
has_many :xes
+
+ def encode(str)
+ str && NKF.nkf('-Sw', str)
+ end
+
+ def create_zip_entries(path)
+ Zip::Archive.open(path) do |ar|
+ puts "# #{path}"
+
+ n = ar.num_files # number of entries
+ n.times do |i|
+ # entry_name = ar.get_name(i) # get entry name from archive
+
+ # open entry
+ ar.fopen(i) do |f|
+ path = encode(f.name)
+ case path
+ when /\.pmd\z/
+ puts [ code, path ].join(' ')
+ pmds.find_or_create_by_path(path)
+ when /\.vmd\z/
+ puts [ code, path ].join(' ')
+ vmds.find_or_create_by_path(path)
+ when /\.x\z/
+ puts [ code, path ].join(' ')
+ xes.find_or_create_by_path(path)
+ end
+
+ # content = f.read # read entry content
+ end
+ end
+ end
+ rescue Zip::Error => exc
+ puts "error: " + exc.message
+ end
end