2014-01-06 :-(
_ 午後
1300 コードマージしTARI
_ 画像を縮小してアップロードして href タグを作るだけの簡単な
以前書いたんだけど win32/clipboard が死んだりするので結局捨てた。cygwin 環境を前提としてるので cygpath を使ってたりする。
# coding: utf-8 require 'net/scp' require 'win32ole' require 'find' require "Win32API" require "win32/clipboard" require 'rubygems' require 'RMagick' DST_HOSTNAME = "example.jp" DST_HOST_USER = "USER" DST_HOST_PASS = "PASS" def get_src_dir(dir) d = `cygpath -u "#{dir}"`.chomp return d end def get_original_images(src_dir) files ||= [] Dir.glob("#{src_dir}/*") {|path| if File.file?(path) path2 = path.downcase File.rename(path, path2) files << path2 end } return files end def resize_images(src_dir, src_files) ds = File.join(src_dir, "s") Dir.mkdir(ds) unless File.directory?(ds) puts "ds: #{ds}" width = 400 height= 400 src_files.each {|path| image = Magick::ImageList.new(path) image.resize_to_fit!(width, height) f2 = File.basename(path) path2 = File.join(ds, f2) puts "f2: #{f2}" puts "path2: #{path2}" image.write(path2) } end # 転送先ディレクトリを取得 def get_dst_dir today = Time.now.strftime("%Y/%m/%d") dfl_dst_dir = "/home/rin/public_html/images/#{today}" msg = %Q@"コピー先を入力"@ title = %Q@"image"@ dfl = %Q@"#{dfl_dst_dir}"@ sc = WIN32OLE.new("ScriptControl") sc.language = "VBScript" dst_dir = sc.eval("InputBox(#{msg}, #{title}, #{dfl})") return dst_dir end # ファイルとフォルダ以下のファイルをすべて転送 def transfer(src_dir, dst_dir) cmd = "mkdir -p #{dst_dir}" Net::SSH.start(DST_HOSTNAME, DST_HOST_USER, {:password => DST_HOST_PASS} ) {|ssh| ssh.exec!(cmd) } Net::SCP.start(DST_HOSTNAME, DST_HOST_USER, {:password => DST_HOST_PASS, :compression => true}){|scp| scp.upload!(src_dir, dst_dir, {:recursive => true} ) } end # href タグを生成 # href タグをクリップボードへコピー def build_href(src_dir, dst_dir, original_images) ddir = dst_dir.gsub("/home/#{DST_HOST_USER}/public_html/", '../') sdir = File.basename(src_dir) tags = "" original_images.each{|file| f = File.basename(file) tag = %Q@{{'<a href="#{ddir}/#{sdir}/#{f}"><img src="#{ddir}/#{sdir}/s/#{f}"></a>'}}@ tags << "#{tag}\n\n" } p tags Win32::Clipboard.set_data(tags) p Win32::Clipboard.data end def main(argv) src_dir = get_src_dir(argv[0]) p src_dir return unless File.directory?(src_dir) images = get_original_images(src_dir) p images resize_images(src_dir, images) dst_dir = get_dst_dir p dst_dir transfer(src_dir, dst_dir) build_href(src_dir, dst_dir, images) end main(ARGV)
少し前に C# で書き直した。おかげで艦これ日誌が捗っている。結局 Windows との親和性は .NET が一番高いか... Java? いえ知らない子ですね。
[ツッコミを入れる]