1

最初のものは最初、これはAppleScriptを使用しての私の最初の試みですので、しばらくお待ちください:)アップルスクリプト - このスクリプトを改善する方法を

私が達成しようとしている何を:私は道としてのDropboxを使用しています写真をオンラインで保存する。私はほとんどすべてのavailabeスペースを使用しましたが、今日私はjpgsでシンプルなロスレスな最適化と私はスペースの35~40%(私はアプリケーションを使用してすべて最適化)を節約できることに気づいた。だから私のアイデアはここにある:私のMacのDropboxは毎回バックグラウンドで実行されるので、何か(またはカメラのアップロードを電話から)追加すると、画像は最終的に私のMacのフォルダに届くので、自動的に画像を最適化し、DPが関係している限り、写真は異なるので、自動的に最適化された画像で終了するため、アップロードは再度アップロードされます。

手順これまで:

  • ✔️画像をoptimseするCLIを検索フォルダに変更するたびに何かを実行したフォルダに基づいてサービスを作成します✔️

  • 画像を最適化する✔

  • Automatorのスクリプトは(今のところテストフォルダに添付)このようになります

✔️通知は一度だけ行わ:

on run {input, parameters} 
    tell application "Terminal" 
     activate 
     do script with command "imageoptim --directory /Users/Nick/Desktop/untitled" 
    end tell 
end run 

、これは実際には、よく、多かれ少なかれに動作します。

私はそれが動作する方法に100%満足していないので、これを改善したいと思います。

現在のところ、画像を追加/名前を変更すると、ターミナルウィンドウが開きます(2つのターミナルウィンドウが表示されることもあります)。コマンドが実行され、それだけです。一度も最適化が完了したときではなく、端末ウィンドウが開くとすぐに通知がトリガーされます。私はそれを改善したいのですがどのように

  • まず第一に、私は、ターミナルウィンドウを開くにはしたくありません。理想的には、何も開いてはいけません。それは最適化を実行するだけで、それだけです。

  • 通知は、いくつかの有用なメッセージを表示する必要があり、それは(基本的には、スクリプトからのコールバックとして)のみ圧縮後に開く必要がありますが、私は

  • 理想的には、コールバックを待つ方法がわかりません、通知には以前のサイズと新しいサイズが表示されます。私はフォルダサイズを取得する方法を探しましたが、私が使用できるオートメーションには何もありませんでした。以前のフォルダサイズを取得して変数に追加し、すべてを実行し、新しいフォルダサイズや別の変数を取得し、変数を通知メッセージとして出力することを考えましたが、フォルダサイズを取得する方法はわかりません。

私に手を差し伸べることができますか?(より良い)の が同様の何かがすでに存在していると私はちょうど車輪の再発明しようとしている、私に知らせてください:)

おかげで、事前に

EDIT

私はこれを見つけました: https://www.alfredforum.com/topic/3703-imageoptim-workflow/それは私が欲しいと思っているだけです。 Alfred wordkflowから純粋なオートメーションワークフローに変換することは可能ですか?

+1

JPEGの最適化は実質的に無損失ではありません。また、ターミナルを表示したくない場合は、ターミナルに起動するように指示するのではなく、 'do shell script'を使用してください。 –

答えて

1

このスクリプトをスクリプトエディターにアプリケーションとして保存しました。ですから、これが今設定されているのは、スクリプトをトリガするアプリケーションのアイコンにイメージファイルをドラッグするだけです。これを変更して、スクリプトをフォルダアクションとして使用することもできますが、他の方法でも使用できます。

on open files_list 
    (* 
scale v : Scale an image 
scale specifier : the object for the command 
[by factor real] : scale using a scalefactor 
[to size integer] : scale using a max width/length 
*) 
    set max_size to "600" as integer -- use the above commented code to play around with scaling. My example scaled everything to a width of 600 pixels proportionately 
    set output_folder to alias "Macintosh HD:Users:Smokestack:Desktop:untitled folder:" -- create an alias to whatever folder you want 
    tell application "System Events" to get the size of output_folder 
    set originalSize to the result 
    set n2 to "1,000,000" as integer 
    set originalSize to originalSize/n2 
    repeat with file_ref in files_list 
     try 
      tell application "Image Events" 
       set the_image to open file_ref 
       scale the_image to size max_size 
       save the_image in file ((output_folder as text) & name of the_image) 
       close the_image 
      end tell 
     on error error_string 
      display dialog "Skipping file " & (file_ref as text) & ¬ 
       " due to error:" & error_string buttons {"OK"} default button 1 
     end try 
    end repeat 
    tell application "System Events" to get the size of output_folder 
    set newSize to the result 
    set newSize to newSize/n2 
    display dialog "The Original Folder Size Is " & originalSize & " Megabytes" & linefeed & "The New Folder Size Is " & newSize & " Megabytes" with title "FOLDER INFORMATION" buttons {"OK"} default button 1 giving up after 10 
end open 
関連する問題