Hatena::ブログ(Diary)

名もないテクノ手 このページをアンテナに追加 RSSフィード

EPUB版『InDesign者のための正規表現入門』

InDesignのTips一覧

2011-11-07

[][][]ネットからダウンロードしたファイルをドラッグ&ドロップして、アラートを出ないようにする。

Snow Leopardの頃はあまり気にならなかったんですが、Mac OS X Lion(10.7.2)にしてから、ネットからダウンロードしたファイルを開く時のチェックがかなり厳しくなったようです。これね:

f:id:seuzo:20111107002626p:image

ひとつかふたつならなんてことないんですが、FTPなどからダウンロードしたファイルが100も200もあると正直うんざりしますな...

ってことでAppleScriptのドロップレットを書いてみました。フォルダ内のファイルも再帰的に処理します。

(追記:2011-11-11T15:52:29+0900)内部的にxattr -r オプションを使って、entire contentsをやめるようにしました。

(*
remove_download_EA
ネットからダウンロードしたファイルを開く時の警告表示を出ないようにするドロップレット

for Mac OS X 10.7.2

2011-11-07	ver0.1	とりあえず
2011-11-11	ver0.2	xattr -r オプションを使って、entire contentsをやめた

(c)2011 seuzo
*)

--ファイル名の警告
to violation_name(file_path)
	set file_path to quoted form of ((POSIX path of file_path) as Unicode text) --まずPOSIX pathにする
	set file_path_test to do shell script "echo " & file_path & " | perl -pe 's/[\\/\\.0-9A-Za-z _-]+//;'"
	if (file_path_test is not "") then
		display dialog file_path & " のファイル名には英数字以外の文字が使われています。" & return & "実行時にトラブルになるかもしれません。続行しますか?" buttons {"Cancel", "続行"} default button 1 with icon 1 --キャンセルで終了
	end if
end violation_name

--リストの結合
to as_join(thedelimit, theList)
	set oldDelim to AppleScript's text item delimiters
	set AppleScript's text item delimiters to thedelimit
	set tmpstr to theList as text
	set AppleScript's text item delimiters to oldDelim
	return tmpstr
end as_join


--ドラッグ&ドロップで実行
on open of my_files
	set target_path to {}
	
	tell application "Finder"
		repeat with i in my_files
			set aFile to i as alias
			my violation_name(aFile) --ファイル名の警告
			set end of target_path to quoted form of (POSIX path of aFile)
		end repeat
		set target_path to my as_join(" ", target_path)
		
		
		try
			set my_script to "xattr -rd com.apple.quarantine " & target_path
			--display dialog my_script
			set ans to do shell script my_script
			--display dialog ans
		on error errMsg number errNo
			--エラーがあっても無視する
			--display dialog "実行エラーです" & return & errMsg & return & errNo buttons {"Cancel"} default button 1 with icon 1 --キャンセルで終了
		end try
	end tell
end open

アプリケーション形式でダウンロードしたい人はこちら:remove_download_EA.app.zip 直

問題:ファイルをドラッグ&ドロップした時、1回だけ警告が出ます。フォルダごとドラッグ&ドロップすれば警告は出ません。

問題:すでにcom.apple.quarantine属性が外れているファイルを、未処理のファイルと一緒に選択してドラッグ&ドロップしても、未処理ファイル分を処理しません。ASのバグっぽいので、修正できないかも。フォルダごとドラッグ&ドロップすれば、すべてのファイルを処理します。


参照

ネットからダウンロードしたファイルを開く時の警告表示を消す方法 - 強火で進め

【コラム】OS X ハッキング! (253) Leopard解体新書(4) 〜拡張された拡張属性〜 | パソコン | マイコミジャーナル

Macでlsした時のパーミッションにあるアットマークを消す。xattrコマンド。 - kanonjiの日記

ダウンロードしてきたファイルを初めて開く時の警告ダイアログを表示させないようにする | Macの手書き説明書

2011-08-04

[][][][]InDesignのテキストをKyokoさんに読んでもらう

メインの環境をMac OS X Lionにアップデートしました!

Lionといえば、まず試したくなるのはKyokoさんだろう。

$ say -v kyoko "わたしも日本語をちゃんとしゃべれるようになりました!"

結構ふつーにしゃべってる。あんなことやこんなことも...


日本語読み上げって、専用システムだとすごくお高いものだった。それがこうしてお手軽にしゃべってくれるとわ...

AppleScriptでも、古くはPhonemic Representationという発音記号の記述法を書いて、ローマ字表記をむりむり発音させるという方法があった。最近だと、SayKanaを使って日本語を読み上げるCUIアプリケーションもあった。そう考えると、とても感慨深い。


じゃあ、お約束で、InDesignのテキストをKyokoさんに読んでもらうよ。コードはこれだけ:*1

tell application "Adobe InDesign CS5"
	if exists document 1 then
		tell document 1
			if class of parent of selection is story then
				set str to contents of selection
				say str using "Kyoko"
			end if
		end tell
	end if
end tell

D

Kyokoさん、ドンマイ!

*1:文字列を加工する必要がなければ、do shell script を使う必要はないですね。