2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

AppleScript アップルスクリプト 質問、発表 6

1 :名称未設定:2013/12/21(土) 21:50:45.07 ID:1PJJFexL0.net
質問、発表どっちでもスレ。

■注意
安直なスクリプト作成依頼、丸投げ、「こういうの作ってください!」はお断り。
わからない点、エラーが解決できない点についてはスクリプト片を添えて質問すること。
OSバージョンも忘れずに。

■参考
AppleScript Language Guide
https://developer.apple.com/library/mac/documentation/AppleScript/Conceptual/AppleScriptLangGuide/
TN2065: do shell script
https://developer.apple.com/library/mac/technotes/tn2065/
AppleScript: The Language of Automation
http://www.macosxautomation.com/applescript/
MacWiki - AppleScript
http://macwiki.sourceforge.jp/wiki/index.php/AppleScript
鳶嶋工房 / AppleScript
http://tonbi.jp/AppleScript/
AS Hole(AppleScriptの穴)
http://piyocast.com/as/
■過去スレ
1 http://pc11.2ch.net/test/read.cgi/mac/1174045850/
2 http://pc11.2ch.net/test/read.cgi/mac/1197443062/
3 http://pc11.2ch.net/test/read.cgi/mac/1223026902/
4 http://anago.2ch.net/test/read.cgi/mac/1256127156/
5 http://anago.2ch.net/test/read.cgi/mac/1330350325/

161 :名称未設定:2014/02/09(日) 05:17:21.79 ID:G4uzaK290.net
>>159
画像変換スクリプト作ってみたよ!>>160のAliasListGenハンドラ使ってるから追加してください。
set Convfolderpath to POSIX path of (choose folder with prompt "choose folder")
repeat
display dialog Convfolderpath & "
Please input width" default answer "2000" buttons {"Cancel", "TIFF", "JPEG"} default button 3 with title "Image Conversion"
copy the result as list to {intext, selbutton}
try
if (intext as number) > 0 then exit repeat
end try
end repeat
set OutPath to Convfolderpath
set aliaslist1 to AliasListGen(Convfolderpath)
if selbutton is "JPEG" then
ConvProcess("JPEG", intext, ".jpg", aliaslist1, OutPath)
else if selbutton is "TIFF" then
ConvProcess("TIFF", intext, ".tif", aliaslist1, OutPath)
end if
on ConvProcess(format, inWidth, Extension, itemlist, outpathPOSIX)
set tmpnum to 0
repeat with initem in itemlist --JPEG, PNG, TIFFのみ変換 (日本語環境のみ)
tell application "Finder" to set itemkind to get kind of initem
if itemkind is "JPEG イメージ" or itemkind is "PNG イメージ" or itemkind is "TIFF イメージ" then
set tmpnum to tmpnum + 1
tell application "Finder" to set itemname to get name of initem
set ConvitemPOSIX to POSIX path of initem
set itemname to do shell script "echo " & quoted form of itemname & " |sed -e 's/.[^.]*$//g'"
set outitemPOSIX to outpathPOSIX & "[" & tmpnum & "]" & itemname & Extension
do shell script "sips -s format " & format & " --resampleWidth " & inWidth & " " & quoted form of ConvitemPOSIX & " --out " & quoted form of outitemPOSIX
end if
end repeat
end ConvProcess

162 :名称未設定:2014/02/09(日) 05:38:49.19 ID:G4uzaK290.net
文字数制限厳しくて変な英語に変えたりコメントとかエラー処理とか色々端折ってますorz
入力値の全角半角とか処理とか追加すると良いかも

てかぶっちゃけリピート処理だとシェルスクリプトだけの方が処理は早いと思う
フォルダのパスを取得して
cdしてパイプでつないでsips -s format jpeg -Z 2000 *.tif
でまとめて変換した方が速いんじゃないかな。

そえば
tell application "Finder" to set itemkind to get kind of initem と set itemkind to kind of (info for initem)
ってどっちが速いんだろ何回かmsecで時間計ってみたら、後者の方が速い気もしたんだけど、logの表示がうざったいからtellにしました。
あとget kindとかの英語以外での環境での英語表示とかどうやるんだっけ?
これだと環境依存で気持ち悪いなー

163 :名称未設定:2014/02/09(日) 07:12:57.69 ID:Eetg+bKV0.net
UTIを使いましょう。

>>154
"JPEG イメージ"は移植性が無い。
>tell application "Finder"
>set itemkind to get kind of Q
>end tell
>if itemkind is "JPEG イメージ" then
if (type identifier of (info for Q) = "public.jpeg") then

>>160
これだと拡張子無しや".jpeg"は拾えない。
>set aliaslist2 to choosefile("jpgとpngだけ", {"jpg", "png"}, true, false)
set aliaslist2 to choosefile("jpgとpngだけ", {"public.jpeg", "public.png"}, true, false)

164 :名称未設定:2014/02/09(日) 08:47:41.45 ID:G4uzaK290.net
>>163
choose fileのタイプにtype identifier指定できたんだ なるほどいいね!

そうなのよ、そこ雑で悩んだの環境依存、type identifierで選別はいい感じだね!
指定フォルダの中身全部処理する時はtryで逃げとけば、中にフォルダが入ってる場合とかtype identifier無いからエラーでパスできる
大容量のフォルダにinfo forするとサイズ計算に時間掛かるみたいだから、一石二鳥だね。
うんスバラッ
てかkindをわざわざ英語出力にとか遠回り過ぎた、まぁちょっと英語出力の仕方も知りたいところだけど、グッジョブありがとう!

てことで>>163さんのアドバイスどおり
>>161
tell application "Finder" to set itemkind to get kind of initem
if itemkind is "JPEG イメージ" or itemkind is "PNG イメージ" or itemkind is "TIFF イメージ" then



try
set itemkind to type identifier of (info for initem)
on error
set itemkind to ""
end try
if itemkind is "public.jpeg" or itemkind is "public.png" or itemkind is "public.tiff" then
に変更します。

あと
set OutPath to Convfolderpath
で無駄に変数増やしちゃってるけど、文字数制限で処理を徐々に消していった名残なので適当に名前変えて消してくださいorz
ありがとうございました!

165 :146:2014/02/09(日) 10:51:43.82 ID:ohdnntp30.net
>>162 >>163
うわ、すごいな。
まだ試せていないけど、取り急ぎ感謝です。
これをもとに色々勉強できそうです。
ありがとうございました。

166 :名称未設定:2014/02/15(土) 08:47:51.53 ID:mqfLIl2K0.net
復旧

167 :名称未設定:2014/02/19(水) 20:41:23.94 ID:85Ztrva8P.net
画像に悪用防止で透かしを入れた画像を作りたいのだが、ASでさくっといけないものだろうか。

168 :名称未設定:2014/02/19(水) 21:54:02.95 ID:Ieto0spB0.net
シェルスクリプト含ませれば早いだろう
ググって素案できたらまた来いや

169 :名称未設定:2014/02/21(金) 16:09:03.28 ID:9KWp105h0.net
前にmac探で質問して見つからなかったので、自分用にapplescriptでこんなの作ってみたから発表してみる。
ざっくり言うと設定した音量以上の入力で、登録したapplescriptを動作させたり
マウスクリックしたりするapplescriptのアプリケーション
α版だけどこんな感じ、右のボタン達はテスト用だから無いです
http://i.imgur.com/BimdMDV.jpg
キー入力するスクリプトを入れると、音でページスクロールできたりする
ちなみに色付きでスクリプトの確認できる
http://i.imgur.com/JyakDsm.jpg
長いコードの場合はスクロールして確認できる
http://i.imgur.com/EY2TIBZ.jpg
ここからセットしたスクリプトをエディターで開けるmenuついてるから、編集して保存すればすぐ適応される
リピート処理のミスとかでデバックでエディターがフリーズしたくない時のテスト稼働とかにも使えるかも
一応エラー表示できる
http://i.imgur.com/4PTrwkn.jpg
applescriptをなんとなく対応
まだaudio levelコマンドしかないけど
現在の音量数値出力できる、音のレベルを使ったスクリプトにつかえるかな?
http://i.imgur.com/pZ0ijkL.jpg

現状applescriptだからかマルチスレッド系の処理でmallocエラーログがでてなんか気持ち悪い、、、
解決策分かる方いますか?
具体的にはNSSound使って音が止まった時とかAVCaptureSessionのセッションを走らせたときとかにでるGC operationなんちゃらです
稼働には問題ないんだけど、logが出て気持ち悪いなと。。。
GCC_ENABLE_OBJC_GCを無くすと出ないんだけど、なんなんだろう?
なんかGCC外すとAutoreleasePoolが使えなかったり、
CFAbsoluteTimeGetCurrentとか一部のメソッドを使うと落ちたりするから不安定そうなんで入れてるけど
いまいちわからない
webkitのやつみたいにログだけ出る無害なバグなのかな?

170 :名称未設定:2014/02/21(金) 18:36:12.43 ID:Jl0LW+tB0.net
>>169
Garbage Collection(GC)は、もう使うなだったような
AutoreleasePoolが使えないってのはAutomatic Reference Counting(ARC)がオンになっているんんじゃね。GCとARCは共存できないハズだが共にオンだとGCだけが有効とかかな
GCもARCもオフにしてみるとか

総レス数 1008
389 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★