スポンサーサイト

Tags :
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

もう7000円突っ込むかどうか…

今のところ完全に負け越してますので。



ただ丁度、履歴書に初めて『JAGAT DTPエキスパート認証合格』の一行を書き加えて実戦に臨む機会に恵まれましたので、こいつの威力を思う存分確かめてみたいと思います。
スポンサーサイト

ドラッグ&ドロップでFC2ブログに複数の画像をまとめてアップロードするAppleScript その4

以前のエントリで公開していた、ドラッグ&ドロップでFC2Blogに複数の画像をまとめてアップロードするAppleScriptの改良版です。

こちらのエントリからのトラックバックを受けて気が付いたんですが(ご指摘ありがとうございます)、去年のFC2Blogのリニューアルで管理画面の仕様が変わったため、アップロード用のスクリプトが動作しなくなっていました。

いやまあ作った本人が言うのも何ですが、ついこの間まで自宅にOSX使える環境が無くて、このスクリプトも自分では全然使ってなかったんですよね…。

ただ、利用しておられる方も少なからずいらっしゃるので、早速新しい管理画面に対応した改良版を作りました。


■使い方
・まず、スクリプトエディタにこのスクリプトをコピペして、9行目『ユーザ名』の部分を書き換えます。
・必要に応じてその下の、サムネイルを作成するかどうか、サムネイルのサイズ、同名ファイルがあった場合上書きするか、の項目を書き換えます。
・スクリプトを『アプリケーション』として保存します。
・アプリケーションとして保存したスクリプト(ドロップレット)にアップロードする画像をドロップします。
・ダイアログが表示されるので、ログインする時のパスワードを入力します。
・……しばらく待つ
・終了を知らせるダイアログが表示されます。

FC2ブログにアップロード出来ない種類のファイル(.psdや.xlsなど)をアップロードしようとしても、エラーなどは表示されず、ただ何もアップロードされずに終了します。

スクリプトを実行すると、ホームディレクトリ以下の『ライブラリ/Cookies』フォルダにサーバとのやり取りに使うCookieを保存したファイル『fc2uploader_cookie.txt』が作られます。削除されてもスクリプトを実行する度に作成されます。

■注意点
Safariを使用している方は、保存時にエラーが出る場合スクリプト中の『円マーク』を『バックスラッシュ』に置換してください。

■2009.3.20追記
FC2Blogが複数アップロード対応になったため動作しなくなっていたのを修正。

■2013.6.19追記
FC2Blogの仕様変更でスクリプトが動作しなくなっていたのを修正。

■動作確認
MacOSX 10.5.6
(*
ユーザー毎の初期設定
*)

--管理画面のURL
property myURL : "http://admin.blog.fc2.com/control.php"

--ユーザ名、もしくは登録しているメールアドレスを入れる ※必ず書き換えてください
property myID : "『ユーザ名』"

--アップロード時に自動的にサムネイルを作成するか(offの場合は""にする)
property createThumb : "on"

--アップロード時に作成されるサムネイルのサイズ(幅・高さ)
property thumbWidth : 250
property thumbHeight : 250

--同名のファイルが既にある場合、上書きするかどうか
-- 上書きする場合は"force" 別名で保存する場合は"rename"にする
property overwrite : "force"

(*
ユーザー毎の初期設定ここまで
*)


property msg1 : "管理画面のパスワードを入力" as Unicode text
property msg2 : "終了しました。" as Unicode text
property msg3 : "ログインに失敗しました。" as Unicode text
property cookiePath : " ~/Library/Cookies/fc2uploader_cookie.txt" ----保存するcookieのパス

on open drop
	activate me
	set myPass to text returned of (display dialog msg1 default answer "")
	
	----ログイン処理&Cookie保存
	set loginScript to "curl -d \"id=" & myID & "&pass=" & myPass & "&mode=admin&mode=logging&process=in\" -c " & cookiePath & " -L " & myURL & " | tail -n 300"
	set response_login to do shell script loginScript as string
	----パスワードの入力フォームがレスポンスに含まれていた場合、ログイン失敗と判定(ちょっとこのへんが微妙…)
	if response_login contains "input type=\"password\"" then
		beep
		display dialog msg3 with icon 0 buttons "OK" default button 1
		error number -128
	end if
	
	--POST時に送信するCRCの値を取得(コード中にタブ記号が含まれています)
	set getCrcScript to "curl -b " & cookiePath & " -d \"mode=control&process=upload\" -L " & myURL & " | grep 'name=\"crc\"' | sed 's/	*<input.*value=\"//' | sed 's/\".*'//"
	set returnedCrc to 1st paragraph of (do shell script getCrcScript as string)
	
	----メインループ
	repeat with theFile in drop
		tell application "Finder"
			set fPath to POSIX path of theFile as Unicode text
			set uploadScript to "curl -b " & cookiePath & " -F \"upfile[0]=@" & fPath & "\" -F thumb=" & createThumb
			set uploadScript to uploadScript & " -F width=" & thumbWidth & " -F height=" & thumbHeight & " -F overwrite=" & overwrite
			set uploadScript to uploadScript & " -F mode=control -F process=upload -F type=upload -F crc=" & returnedCrc & " -F insert=\"\" -L " & myURL
			do shell script uploadScript
		end tell
	end repeat
	beep
	display dialog msg2 default button 1 buttons "OK"
end open

InDesignで配置した画像を更新された日時によって色分けハイライトするJavaScript

ちょっと前に書いたInDesign用JavaScript。(CS2以前のパージョンでは正常に動作しないと思います。)

印刷会社の製版部門では、色校正が戻ってきて訂正指示の入った写真の色補正を行った後、修正した画像をInDesignで再配置して再校出力ってことが日常的にありますが、そのチェック作業に使えるInDesign用JavaScript。

作業時、訂正する画像が数点ならそれほど問題無いですが、数十ページに渡って直しが何十点もある場合には、貼り替え忘れ等の確認作業に結構神経使うと思います。検版作業はまた別の事として、製版作業の段階でのミスを軽減するアシスト用と言う事で。

このスクリプトは、ドキュメントに配置されている画像の更新日時をチェックし、指定した時間以内にPhotoshop等で変更、保存された画像であればブルーの枠でハイライト表示するので、その画像ファイルが最近変更されたものかどうかが一目で分かります。(表示されるのはInDesignでの配置日時に関係なく、画像ファイルそのものの更新日時によるものです)

チェックするドキュメントを開いた状態でスクリプトを実行するとダイアログが表示されるので、何時間以内に変更・保存された画像をブルーの枠でハイライトするのか入力します。







色分けの内容は次の通り

ブルー…ダイアログに入力した時間以内にPhotoshop等で変更されている画像(デフォルトは8時間に設定してあります)
イエロー…設定した時間よりも保存された日時が古い画像
レッド…リンク切れ等で保存された日時を取得出来ない画像(変更日時がNaNで返される)

ハイライトの枠の色がやや透けているのは、同じ場所で重なっている画像(部分キリヌキの画像など)を判別しやすくするためです。

ハイライトの枠は 『***画像ハイライト用』という名前のレイヤーを新たに作成して、そこに描画していくようになっているので、チェックが終わったら捨ててください。


現状の仕様では全ページに渡ってチェックしていくので(ページパレットで選択されたページの取得方法が分からなかった…ダイアログで入力するようにしても良いんですが)、画像を大量に配置していると結構時間がかかるかも知れません。まあ自分の経験では、ページ物でも大抵いくつかのファイルに分かれているので何百ページも一度に処理してしまう事はそうないとは思いますが。

■動作確認
Mac OS X 10.5.6
InDesign CS4
#target InDesign

if (app.documents.length == 0) {
	alert('ドキュメントが開かれていません。');
	exit();
} else {
	var doc = app.activeDocument;
}

var now = new Date();
var boundaryTime = showDialog();
var myLayerName = '***画像ハイライト用'; //新たに作るハイライト用レイヤの名前
var L = doc.layers;
for (var i=0; i<L.length; i++) {
	if (L[i].name == myLayerName) {
		if (confirm('既にハイライト用のレイヤがあります。処理を続けますか?') == false) { exit(); }
		L[i].remove();
	}
}
var myLayer = doc.layers.add({name: myLayerName}); //ハイライト用レイヤ作成
var myColors = {
	'red': setCmyk([0, 100, 100, 0]),
	'cyan': setCmyk([100, 0, 0, 0]),
	'yellow': setCmyk([0, 0, 100, 0]),
	'white': setCmyk([0, 0, 0, 0])
	} 

//ドキュメントの全ページを処理していく
for (var i=0; i<doc.pages.length; i++) {
	var p = doc.pages[i]
	var tf = p.textFrames.add({
		geometricBounds: p.bounds,
		fillColor: myColors['white']
		});
	tf.transparencySettings.blendingSettings.opacity = 70;
	var G = p.allGraphics;
	for (var j=0; j<G.length; j++) {
		var f = new File(G[j].itemLink.filePath);
		var md = Date.parse(f.modified);
		
		//画像の更新日時が設定した時間(boundaryTime)以内ならシアンの枠を描画
		//リンク切れなどで判別不可(更新日時がNaN)の場合はレッドに
		//それ以外はイエロー
		var sc = '';
		(!md) ? sc = myColors['red']
			: (((now - md) > boundaryTime*1000) ? sc = myColors['yellow'] : sc = myColors['cyan']);
			
		//画像の枠を描画
		var hl = G[j].parent.duplicate(myLayer);
		hl.graphics[0].remove();
		hl.fillColor = doc.swatches.item(0, 0, 0, 0);
		hl.strokeColor = sc;
		hl.strokeWeight = '5mm';
		hl.transparencySettings.blendingSettings.opacity = 60;
	}
}

alert('終了しました');
exit();


//CMYKカラーを作成(既に同じ色のカラーがある場合はそちらを使用)
function setCmyk(cv) {
	var cn = 'C=' + cv[0] + ' M=' + cv[1] + ' Y=' + cv[2] + ' K=' + cv[3];
	for (var i=0; i<doc.colors.length; i++) {
		var sw = doc.colors[i];
		var c = sw.colorValue;
		//forループで処理できない?
		if ((sw.name == cn) && (cv[0] == c[0]) && (cv[1] == c[1]) && (cv[2] == c[2]) && (cv[3] == c[3])) { return sw; }
	}
	return doc.colors.add({
		name: cn,
		model: ColorModel.process,
		space: ColorSpace.cmyk,
		colorValue: cv
	});
}


//時間入力用ダイアログ表示
function showDialog() {
	var myDialog = app.dialogs.add({name:"時間を入力してください",canCancel: true}); 
	with(myDialog){ 
		with(dialogColumns.add()) {
			with(borderPanels.add()) {
				staticTexts.add({staticLabel: '変更・保存されてから'});
				var myHoursField = integerEditboxes.add({editValue: 8, minWidth: 20});
				staticTexts.add({staticLabel: '時間'}); 
				var myMinutesField = integerEditboxes.add({editValue: 0, minWidth: 20});
				staticTexts.add({staticLabel: '分以内の画像をブルーの枠でハイライトします'});
			}
		}
	} 
	var myResult = myDialog.show(); 
	if(myResult == true) {
		var myBoundarySec = myHoursField.editValue * 3600 + myMinutesField.editValue * 60;
		myDialog.destroy(); 
		return (myBoundarySec);
	} 
	else{ 
		myDialog.destroy();
		exit();
	} 
}

引越しとか、その他いろいろと…

Tags : [DTP] [Life]
いや~、会社なんて脆いものですよね!!(挨拶)


前回のエントリからかなり間が開いてしまいました。

ちょっとしたアウトプットならtwitterで事足りてしまってる感じで、こっちに書くような事が殆どなかったもので。

去年の夏くらいにもっと住み良い環境を求めて引越したりでバタバタしてて、今年に入ってからも早速仕事関係で動かないといけません。

一応移籍先はあるので某村に入村する必要は無かったんですけど、今の住処に移ってまだ半年なのに、また引っ越しをするハメに…

あと、色々新しい事にも手を付け始めたので、そっちの方もネタにしていくかも知れません。こことは別のblogに書くかも知れませんが…

いや、でも非常に難しい状況であるにも関わらず、なんでしょうねこのワクワク感。


以上、生存報告エントリでした。
Profile
choco
Author : choco

印刷・製版の現場を経て、広告制作会社でPhotoshopを使ったビジュアル制作を担当。

→現在は車載機器開発ベンダにて、組み込み3Dデータ作成やUIデザインなどを行っています。

Categories
Favorites


Search
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。