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? いえ知らない子ですね。
[ツッコミを入れる]




