AppleScript GIF

アニメーション画像

アニメーション画像
(各種WEBサービスを利用しない場合)
A:gif
B:APNG (Animated png)
C:Animated webp
D:Movie
E:マルチページPNG



ツール類
A:gif
[bash]gifskiインストール
https://quicktimer.cocolog-nifty.com/icefloe/2024/01/post-724851.html
デスクトップアプリ版
https://github.com/sindresorhus/Gifski?tab=readme-ov-file#download
AppStore版
https://apps.apple.com/us/app/gifski/id1351639930?mt=12


B:APNG (Animated png)
デスクトップ版
https://github.com/shgodoroja/APNGb



C:Animated webp
[applescript]libwebpインストール
https://quicktimer.cocolog-nifty.com/icefloe/2024/01/post-0a1a86.html
[bash]libwebpインストール
https://quicktimer.cocolog-nifty.com/icefloe/2024/01/post-84a951.html


D:Movie
Shutter Encoderからffmpegの取り出し
https://quicktimer.cocolog-nifty.com/icefloe/2024/02/post-61c3e2.html
[AppleScript]ffmpegインストール(野良)
https://quicktimer.cocolog-nifty.com/icefloe/2024/01/post-1ce12f.html
[Bash]ffmpegインストール
https://quicktimer.cocolog-nifty.com/icefloe/2023/12/post-c0e627.html


E:マルチページPNG
[Combined Merged PNG]マルチレイヤ構造のPNG画像を個別のファイルにする
https://quicktimer.cocolog-nifty.com/icefloe/2024/01/post-bf44c9.html
[Combined Merged PNG]マルチレイヤ構造のPNG画像をGIFアニメに変換する(簡易版)
https://quicktimer.cocolog-nifty.com/icefloe/2024/01/post-89705d.html


処理

1:Image to GIf
[gifski]イメージシーケンスをGIFにする
https://quicktimer.cocolog-nifty.com/icefloe/2023/12/post-2ba1ab.html
2:Image to apng
APNGbデスクトップ版
https://github.com/shgodoroja/APNGb
3:Image to webp
[img2webp]アニメーションwebpの作成
https://quicktimer.cocolog-nifty.com/icefloe/2022/12/post-aa3e08.html
4:Image to movie
[QuickTime]イメージシーケンス(複数画像)からムービーを作成する
https://quicktimer.cocolog-nifty.com/icefloe/2023/12/post-383ed1.html



A:gif
1:GIF to Image
[Gif]gifアニメーションの各コマを別ファイルに保存(イメージシーケンス保存)
https://quicktimer.cocolog-nifty.com/icefloe/2023/05/post-4c0c6b.html
2:GIF to Movie
[ffmpeg] GIFアニメーションをmp4に変換する
https://quicktimer.cocolog-nifty.com/icefloe/2023/10/post-154f42.html
3:GIF to webp
[gif2webp]GIFアニメをwebpに変換する
https://quicktimer.cocolog-nifty.com/icefloe/2022/12/post-c8af28.html


B:APNG (Animated png)
1:apng to movie
2:apng to image


C:Animated webp
1:webp to image
[webpmux] アニメーションWEBPファイルから各フレームイメージを書き出す(差分イメージ)
https://quicktimer.cocolog-nifty.com/icefloe/2023/12/post-0643c2.html
[anim_dump] アニメーションWEBPファイルから各フレームイメージを書き出す(フレームイメージ)
https://quicktimer.cocolog-nifty.com/icefloe/2024/01/post-ccfea9.html
2:webp to Movie
イメージシーケンスを書き出して[LINK]から イメージシーケンスをムービーに変換
3:webp to Gif
イメージシーケンスを書き出して[LINK]から GIFにする


D:Movie
1:Movie to Image
[ffmpeg]ムービーファイルをイメージシーケンス画像にする
https://quicktimer.cocolog-nifty.com/icefloe/2024/01/post-176cb7.html
2:Movie to Gif
[ffmpeg]ムービーファイルをGIFにする
https://quicktimer.cocolog-nifty.com/icefloe/2023/11/post-a1c3d2.html
[gifski]ムービーファイルをGIFにする
https://quicktimer.cocolog-nifty.com/icefloe/2023/12/post-555b0a.html
[gifski]デスクトップアプリ版
https://github.com/sindresorhus/Gifski?tab=readme-ov-file#download
3:Movie to webp
3−1:ムービーフレームをイメージシーケンス画像に書き出してから img2webpで変換
3−2:ムービーファイルをgifski等でGIFアニメにしてから gif2webp
3−3:ffmpegで変換
[ffmpeg]ムービーファイルをアニメーションwebpにする
https://quicktimer.cocolog-nifty.com/icefloe/2023/12/post-3519c3.html

|

[Combined Merged PNG]マルチレイヤ構造のPNG画像を個別のファイルにする


【スクリプトエディタで開く】|

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
(*
error number -128
com.cocolog-nifty.quicktimer.icefloe
*)
#
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
##自分環境がos12なので2.8にしているだけです
use AppleScript version "2.8"
use framework "Foundation"
use framework "AppKit"
use scripting additions

property refMe : a reference to current application

##########################
## ダイアログ
##########################
set appFileManager to refMe's NSFileManager's defaultManager()
set ocidUserDesktopPath to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
set aliasDefaultLocation to ocidUserDesktopPath as alias

#set listChooseFileUTI to {"com.compuserve.gif"} as list
set listChooseFileUTI to {"public.png"} as list
set strPromptText to "ファイルを選んでください" as text
set strPromptMes to "ファイルを選んでください" as text
set aliasFilePath to (choose file strPromptMes with prompt strPromptText default location (aliasDefaultLocation) of type listChooseFileUTI with invisibles and showing package contents without multiple selections allowed) as alias
##########################
## パス
##########################

set strFilePath to (POSIX path of aliasFilePath) as text
set ocidFilePathStr to refMe's NSString's stringWithString:(strFilePath)
set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
set ocidFilePathURL to refMe's NSURL's alloc()'s initFileURLWithPath:ocidFilePath isDirectory:false
###作成するフォルダ名
set ocidFileName to ocidFilePathURL's lastPathComponent()
set strBaseFileName to ocidFileName's stringByDeletingPathExtension() as text
set strSaveDirName to (strBaseFileName & "_Image Sequence") as text
####コンテナディレクトリ
set ocidContainerDirPathURL to ocidFilePathURL's URLByDeletingLastPathComponent()
###保存用ディレクトリ
set ocidSaveFileDirURL to (ocidContainerDirPathURL's URLByAppendingPathComponent:strSaveDirName)
###フォルダを作る
set listBoolMakeDir to appFileManager's createDirectoryAtURL:(ocidSaveFileDirURL) withIntermediateDirectories:true attributes:(missing value) |error|:(reference)

##########################
## 画像読み込み
##########################
set ocidGifImage to refMe's NSImage's alloc()'s initWithContentsOfURL:(ocidFilePathURL)
set ocidGifImageArray to ocidGifImage's representations()
set ocidGifImageRep to ocidGifImageArray's objectAtIndex:0
##########################
###保存時必要になるPNGオプション
##########################
####NSImageColorSyncProfileData
set ocidColorSpace to refMe's NSColorSpace's displayP3ColorSpace()
set ocidColorSpaceData to ocidColorSpace's colorSyncProfile()
####NSImageEXIFData
set ocidEXIFData to (ocidGifImageRep's valueForProperty:(refMe's NSImageEXIFData))
####ガンマ値換算 まぁ2.2入れておけば間違い無いか…しらんけど
set numGamma to (1 / 2.2) as number
####propertiesデータレコード整形(PNG用)
set ocidImageProperties to {NSImageGamma:(numGamma), NSImageEXIFData:(ocidEXIFData), NSImageInterlaced:false, NSImageColorSyncProfileData:(ocidColorSpaceData)} as record

####GIFのコマ数 フレーム数
set ocidFrameCnt to (ocidGifImageRep's valueForProperty:(refMe's NSImageFrameCount))
##駒数がmissingValue = 1フレームのみの場合
if ocidFrameCnt = (missing value) then
  set numFrameCnt to 1 as integer
else
  set numFrameCnt to ocidFrameCnt as integer
end if
### フレーム取り出し用のカウンタ
set numSetFrameNo to 0 as integer
###
repeat numFrameCnt times
  ####フレーム番号 コマ番号 をセット
ocidGifImageRep's setProperty:(refMe's NSImageCurrentFrame) withValue:(numSetFrameNo)
  ###確認用
  ## set ocidFlameRep to (ocidGifImageRep's valueForProperty:(refMe's NSImageCurrentFrame)) as integer
  ## log ocidFlameRep
  #####保存用ファイル名 連番ゼロサプレス
  set strZeroSup to "000" as text
  set strZeroSup to (strZeroSup & ((numSetFrameNo + 1) as text)) as text
  set strZeroSup to (text -3 through -1 of strZeroSup) as text
  set strSaveFileName to (strBaseFileName & "." & strZeroSup & ".png") as text
  ###保存用のパスURL
  set ocidSaveFilePathURL to (ocidSaveFileDirURL's URLByAppendingPathComponent:(strSaveFileName))
  ###PNGデータに変換
  set ocidSaveData to (ocidGifImageRep's representationUsingType:(refMe's NSBitmapImageFileTypePNG) |properties|:(ocidImageProperties))
  ###保存
  set ocidWroteToFileDone to (ocidSaveData's writeToURL:(ocidSaveFilePathURL) options:0 |error|:(reference))
  ###カウントアップ
  set numSetFrameNo to numSetFrameNo + 1 as integer
end repeat

###保存フォルダを選択して終了
set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
appSharedWorkspace's selectFile:(ocidSaveFileDirURL's |path|()) inFileViewerRootedAtPath:"/"



|

[Combined Merged PNG]マルチレイヤ構造のPNG画像をGIFアニメに変換する(簡易版)

カラーテーブルの処理だけやりかたわからなかったのでテーブル自動です

【スクリプトエディタで開く】|

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
(*
error number -128
com.cocolog-nifty.quicktimer.icefloe
*)
#
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
##自分環境がos12なので2.8にしているだけです
use AppleScript version "2.8"
use framework "Foundation"
use framework "AppKit"
use scripting additions

property refMe : a reference to current application

##########################
## ダイアログ
##########################
set appFileManager to refMe's NSFileManager's defaultManager()
set ocidUserDesktopPath to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
set aliasDefaultLocation to ocidUserDesktopPath as alias

#set listChooseFileUTI to {"com.compuserve.gif"} as list
set listChooseFileUTI to {"public.png"} as list
set strPromptText to "ファイルを選んでください" as text
set strPromptMes to "ファイルを選んでください" as text
set aliasFilePath to (choose file strPromptMes with prompt strPromptText default location (aliasDefaultLocation) of type listChooseFileUTI with invisibles and showing package contents without multiple selections allowed) as alias
##########################
## パス
##########################

set strFilePath to (POSIX path of aliasFilePath) as text
set ocidFilePathStr to refMe's NSString's stringWithString:(strFilePath)
set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
set ocidFilePathURL to refMe's NSURL's alloc()'s initFileURLWithPath:ocidFilePath isDirectory:false
set ocidFileName to ocidFilePathURL's lastPathComponent()
set strBaseFileName to ocidFileName's stringByDeletingPathExtension() as text
set ocidContainerDirPathURL to ocidFilePathURL's URLByDeletingLastPathComponent()

##########################
## 画像読み込み
##########################
set ocidGifImage to refMe's NSImage's alloc()'s initWithContentsOfURL:(ocidFilePathURL)
set ocidGifImageArray to ocidGifImage's representations()
#フレーム数取得のためImageRepを取得
set ocidGifImageRep to ocidGifImageArray's objectAtIndex:0
#####フレーム数を取得
set ocidFrameCnt to (ocidGifImageRep's valueForProperty:(refMe's NSImageFrameCount))
##保存ファイル名
set strSaveFileName to (strBaseFileName & "_F" & ocidFrameCnt & ".gif") as text
###保存用のパスURL
set ocidSaveFilePathURL to (ocidContainerDirPathURL's URLByAppendingPathComponent:(strSaveFileName))
###GIFプロパティ
set ocidPropertiesDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
#最初のフレームから表示
ocidPropertiesDict's setValue:(0) forKey:(refMe's NSImageCurrentFrame)
#秒8コマ
ocidPropertiesDict's setValue:(0.125) forKey:(refMe's NSImageCurrentFrameDuration)
#フレーム数
ocidPropertiesDict's setValue:(ocidFrameCnt) forKey:(refMe's NSImageFrameCount)
#透過
ocidPropertiesDict's setValue:(true) forKey:(refMe's NSImageDitherTransparency)
#ループ
ocidPropertiesDict's setValue:(0) forKey:(refMe's NSImageLoopCount)
#カラーテーブル
ocidPropertiesDict's setValue:(missing value) forKey:(refMe's NSImageRGBColorTable)
###GIFデータに変換
set ocidSaveData to (refMe's NSBitmapImageRep's representationOfImageRepsInArray:(ocidGifImageArray) usingType:(refMe's NSBitmapImageFileTypeGIF) |properties|:(ocidPropertiesDict))
###保存
set listDone to (ocidSaveData's writeToURL:(ocidSaveFilePathURL) options:0 |error|:(reference))

###保存フォルダを選択して終了
set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
appSharedWorkspace's selectFile:(ocidContainerDirPathURL's |path|()) inFileViewerRootedAtPath:"/"



|

[com.sindresorhus.Gifski]GifSkiのテンポラリディレクトリを開く(Gifファイルの保存先)


【スクリプトエディタで開く】|

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
#
#com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
use AppleScript version "2.8"
use framework "Foundation"
use framework "UniformTypeIdentifiers"
use framework "AppKit"
use scripting additions
property refMe : a reference to current application

###テンポラリファイルの保存先
set appFileManager to refMe's NSFileManager's defaultManager()
set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSLibraryDirectory) inDomains:(refMe's NSUserDomainMask))
set ocidLibraryDirPathURL to ocidURLsArray's firstObject()
set ocidTempDirPathURL to ocidLibraryDirPathURL's URLByAppendingPathComponent:("Containers/com.sindresorhus.Gifski/Data/tmp/TemporaryItems")
###ピクチャーフォルダにブックマーク(エイリアス)を作ります
set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSPicturesDirectory) inDomains:(refMe's NSUserDomainMask))
set ocidPicturesDirPathURL to ocidURLsArray's firstObject()
set ocidBookMarkPathURL to ocidPicturesDirPathURL's URLByAppendingPathComponent:("GifskiTemp")
##ブックマークデータを取得
set listDone to (ocidTempDirPathURL's bookmarkDataWithOptions:(refMe's NSURLBookmarkCreationSuitableForBookmarkFile) includingResourceValuesForKeys:{refMe's NSURLCustomIconKey} relativeToURL:(missing value) |error|:(reference))
set ocdiBookMarkData to (item 1 of listDone)
###リンク作成
set listResults to (refMe's NSURL's writeBookmarkData:(ocdiBookMarkData) toURL:(ocidBookMarkPathURL) options:(refMe's NSURLBookmarkCreationSuitableForBookmarkFile) |error|:(reference))
log item 1 of listResults
###
##保存先を開く
set appShardWorkspace to refMe's NSWorkspace's sharedWorkspace()

set boolResults to appShardWorkspace's activateFileViewerSelectingURLs:({ocidBookMarkPathURL})
set aliasSaveDirPath to (ocidBookMarkPathURL's absoluteURL()) as alias

tell application "Finder"
  #make new Finder window to aliasSaveDirPath
activate
end tell



|

[bash]gifskiインストール


#!/bin/bash
#com.cocolog-nifty.quicktimer.icefloe
#ユーザード $HOME/binにインストールする
########################################
### 設定項目
STR_URL="https://github.com/ImageOptim/gifski/releases/download/1.13.0/gifski-1.13.0.tar.xz"

########################################
###管理者インストールしているか?チェック
USER_WHOAMI=$(/usr/bin/whoami)
/bin/echo "実行ユーザーは:$USER_WHOAMI"
###実行しているユーザー名
CONSOLE_USER=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/ { print $3 }')
/bin/echo "コンソールユーザー:$CONSOLE_USER"
###ログイン名ユーザー名※Visual Studio Codeの出力パネルではrootになる設定がある
LOGIN_NAME=$(/usr/bin/logname)
/bin/echo "ログイン名:$LOGIN_NAME"
###UID
USER_NAME=$(/usr/bin/id -un)
/bin/echo "ユーザー名:$USER_NAME"
###SUDOUSER
/bin/echo "SUDO_USER: $SUDO_USER"
########################################
##OS
PLIST_PATH="/System/Library/CoreServices/SystemVersion.plist"
STR_OS_VER=$(/usr/bin/defaults read "$PLIST_PATH" ProductVersion)
/bin/echo "OS VERSION :" "$STR_OS_VER"
STR_MAJOR_VERSION="${STR_OS_VER%%.*}"
/bin/echo "STR_MAJOR_VERSION :" "$STR_MAJOR_VERSION"
STR_MINOR_VERSION="${STR_OS_VER#*.}"
/bin/echo "STR_MINOR_VERSION :" "$STR_MINOR_VERSION"
########################################
###ダウンロード起動時に削除する項目
USER_TEMP_DIR=$(/usr/bin/mktemp -d)
/bin/echo "起動時に削除されるディレクトリ:" "$USER_TEMP_DIR"
########################################
##デバイス
#起動ディスクの名前を取得する
/bin/mkdir -p "/Users/$CONSOLE_USER/Documents/Apple/IOPlatformUUID"
/usr/bin/touch "/Users/$CONSOLE_USER/Documents/Apple/IOPlatformUUID/diskutil.plist"
/usr/sbin/chown -R "$CONSOLE_USER" "/Users/$CONSOLE_USER/Documents/Apple/IOPlatformUUID"
/bin/chmod 700 "/Users/$CONSOLE_USER/Documents/Apple"
/usr/sbin/diskutil info -plist / >"/Users/$CONSOLE_USER/Documents/Apple/IOPlatformUUID/diskutil.plist"
STARTUPDISK_NAME=$(/usr/bin/defaults read "/Users/$CONSOLE_USER/Documents/Apple/IOPlatformUUID/diskutil.plist" VolumeName)
/bin/echo "ボリューム名:" "$STARTUPDISK_NAME"

############################################################
############################################################
###ダウンロードSTR_URL_FFMPEG
DL_FILE_NAME="GIFSKI.tar.xz"
if ! /usr/bin/curl -L -o "$USER_TEMP_DIR/$DL_FILE_NAME" "$STR_URL" --connect-timeout 20; then
/bin/echo "ファイルのダウンロードに失敗しました HTTP1.1で再トライします"
  if ! /usr/bin/curl -L -o "$USER_TEMP_DIR/$DL_FILE_NAME" "$STR_URL" --http1.1 --connect-timeout 20; then
/bin/echo "ファイルのダウンロードに失敗しました"
exit 1
  fi
fi
###BIN
/bin/mkdir -p "/Users/$CONSOLE_USER/bin/"
for ((numTimes = 1; numTimes <= 3; numTimes++)); do
sleep 1
/bin/mkdir -p "/Users/$CONSOLE_USER/bin/gifski"
/usr/bin/touch "/Users/$CONSOLE_USER/bin/gifski"
/usr/sbin/chown "$CONSOLE_USER" "/Users/$CONSOLE_USER/bin/gifski"
/bin/chmod 700 "/Users/$CONSOLE_USER/bin/gifski"
done

###旧バージョンをゴミ箱に
USER_TRASH_DIR=$(/usr/bin/mktemp -d "$HOME/.Trash/GIFSKI.XXXXXXXX")
/bin/mv "/Users/$CONSOLE_USER/bin/gifski" "$USER_TRASH_DIR"

###BIN
/bin/mkdir -p "/Users/$CONSOLE_USER/bin/"
for ((numTimes = 1; numTimes <= 3; numTimes++)); do
sleep 1
/bin/mkdir -p "/Users/$CONSOLE_USER/bin/gifski"
/usr/bin/touch "/Users/$CONSOLE_USER/bin/gifski"
/usr/sbin/chown "$CONSOLE_USER" "/Users/$CONSOLE_USER/bin/gifski"
/bin/chmod 700 "/Users/$CONSOLE_USER/bin/gifski"
done
##解凍
/usr/bin/bsdtar -xJf "$USER_TEMP_DIR/$DL_FILE_NAME" -C "/Users/$CONSOLE_USER/bin/gifski"
##シンボリックリンクつけて
/bin/ln -s "/Users/$CONSOLE_USER/bin/gifski/mac/gifski" "/Users/$CONSOLE_USER/bin/gifski/gifski"
##保存先を開く
/usr/bin/open "/Users/$CONSOLE_USER/bin/gifski"

exit 0


|

[gifski]イメージシーケンスをGIFにする


【スクリプトエディタで開く】|

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
# ###FFMPEGのインストールが別途必要です
# https://ffmpeg.org/
# ###gifskiのインストールが別途必要です
# https://github.com/ImageOptim/gifski
#
# com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
use AppleScript version "2.8"
use framework "Foundation"
use framework "AVFoundation"
use scripting additions
property refMe : a reference to current application
set appFileManager to refMe's NSFileManager's defaultManager()
##############################
###設定項目
###FFMPEGのパス
###通常はこちらかな?
# set strBinPath to ("/usr/local/bin/ffmpeg") as text
set strBinPath to ("$HOME/bin/ffmpeg.6/ffmpeg") as text

###gifskiのパス
set strGifskiBinPath to ("$HOME/bin/gifski/gifski") as text

###仕上がり縦横サイズ
set strWpx to ("360") as text
set strHpx to ("360") as text
### 1-100
set strQuality to ("70") as text
###FPS
set strFPS to ("16") as text

#############################
###ダイアログ
tell current application
  set strName to name as text
end tell
####スクリプトメニューから実行したら
if strName is "osascript" then
  tell application "Finder" to activate
else
  tell current application to activate
end if
############ デフォルトロケーション
set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
set ocidDesktopDirPathURL to ocidURLsArray's firstObject()
set aliasDefaultLocation to (ocidDesktopDirPathURL's absoluteURL()) as alias
############
set strMes to "イメージシーケンスの入っているフォルダを選んでください" as text
set strPrompt to "イメージシーケンスの入っているフォルダを選んでください" as text
try
  set aliasResponse to (choose folder strMes with prompt strPrompt default location aliasDefaultLocation with invisibles and showing package contents without multiple selections allowed) as alias
on error
log "エラーしました"
return "エラーしました"
end try
###
set strDirPath to (POSIX path of aliasResponse) as text
set ocidDirPathStr to refMe's NSString's stringWithString:(strDirPath)
set ocidDirPath to ocidDirPathStr's stringByStandardizingPath()
set ocidDirPathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidDirPath) isDirectory:false)
set strFileName to (ocidDirPathURL's lastPathComponent()) as text
set ocidContainerDirPathURL to ocidDirPathURL's URLByDeletingLastPathComponent()
set strGifFileName to (strFileName & ".gif")
set ocidSaveGifFilePathURL to ocidContainerDirPathURL's URLByAppendingPathComponent:(strGifFileName)
##
set strDirPath to (ocidDirPathURL's |path|()) as text
set strGifFilePath to (ocidSaveGifFilePathURL's |path|()) as text
delay 3
##
##
set strCommandText to ("pushd \"" & strDirPath & "/\" && " & strGifskiBinPath & " -o \"" & strGifFilePath & "\" --fps " & strFPS & " --width " & strWpx & " --height " & strHpx & " --quality " & strQuality & " *") as text

do shell script strCommandText


return

##FPS指定
set strCommandText to ("pushd \"" & strDirPath & "/\" && " & strGifskiBinPath & " -o \"" & strGifFilePath & "\" --fps 50 *") as text
##サイズ指定
set strCommandText to ("pushd \"" & strDirPath & "/\" && " & strGifskiBinPath & " -o \"" & strGifFilePath & "\" --fps 50 --width 360 --height 360 *") as text
##クオリティ指定 1−100
set strCommandText to ("pushd \"" & strDirPath & "/\" && " & strGifskiBinPath & " -o \"" & strGifFilePath & "\" --fps 50 --width 360 --height 360 --quality " & strQuality & " *") as text
##他オプション
(*

-o, --output <a.gif> Destination file to write to; "-" means stdout
-r, --fps <num> Frame rate of animation. If using PNG files as input, this means the speed, as all frames are kept. If video is used, it will be resampled to this constant rate by dropping and/or duplicating frames [default: 20]
--fast-forward <x> Multiply speed of video by a factor
(no effect when using images as input) [default: 1]
--fast 50% faster encoding, but 10% worse quality and larger file size
--extra 50% slower encoding, but 1% better quality
-Q, --quality <1-100> Lower quality may give smaller file [default: 90]
--motion-quality <1-100> Lower values reduce motion
--lossy-quality <1-100> Lower values introduce noise and streaks
-W, --width <px> Maximum width.
By default anims are limited to about 800x600
-H, --height <px> Maximum height (stretches if the width is also set)
--no-sort Use files exactly in the order given, rather than sorted
-q, --quiet Do not display anything on standard output/console
--repeat <num> Number of times the animation is repeated (-1 none, 0 forever or <value> repetitions
--fixed-color <RGBHEX> Always include this color in the palette
--matte <RGBHEX> Background color for semitransparent pixels
-h, --help Print help
-V, --version Print version


*)




|

[gifski]ムービーファイルをGIFにする


【スクリプトエディタで開く】|

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
# ###FFMPEGのインストールが別途必要です
# https://ffmpeg.org/
# ###gifskiのインストールが別途必要です
# https://github.com/ImageOptim/gifski
#
# com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
use AppleScript version "2.8"
use framework "Foundation"
use framework "AVFoundation"
use scripting additions
property refMe : a reference to current application
set appFileManager to refMe's NSFileManager's defaultManager()
##############################
###設定項目
###FFMPEGのパス
###通常はこちらかな?
# set strBinPath to ("/usr/local/bin/ffmpeg") as text
set strBinPath to ("$HOME/bin/ffmpeg.6/ffmpeg") as text

###gifskiのパス
set strGifskiBinPath to ("$HOME/bin/gifski/gifski") as text

#############################
###ダイアログ
tell current application
  set strName to name as text
end tell
####スクリプトメニューから実行したら
if strName is "osascript" then
  tell application "Finder" to activate
else
  tell current application to activate
end if
############ デフォルトロケーション
set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
set ocidDesktopDirPathURL to ocidURLsArray's firstObject()
set aliasDefaultLocation to (ocidDesktopDirPathURL's absoluteURL()) as alias
############UTIリスト
set listUTI to {"public.movie"}

set strMes to ("ムービー・ファイルを選んでください") as text
set strPrompt to ("ムービー・ファイルを選んでください") as text
try
  ### ファイル選択時
  set aliasFilePath to (choose file strMes with prompt strPrompt default location (aliasDefaultLocation) of type listUTI with invisibles and showing package contents without multiple selections allowed) as alias
on error
log "エラーしました"
return "エラーしました"
end try

###
set strFilePath to (POSIX path of aliasFilePath) as text
set ocidFilePathStr to refMe's NSString's stringWithString:(strFilePath)
set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
set ocidFilePathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:false)
set strFilePathURL to (ocidFilePathURL's |path|()) as text
set ocidBaseFilePathURL to ocidFilePathURL's URLByDeletingPathExtension()
set strFileName to (ocidBaseFilePathURL's lastPathComponent()) as text
###デスクトップにファイル名のフォルダ作って
set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
set ocidDesktopDirPathURL to ocidURLsArray's firstObject()
set ocidSaveDirPathURL to ocidDesktopDirPathURL's URLByAppendingPathComponent:(strFileName)
set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
ocidAttrDict's setValue:(511) forKey:(refMe's NSFilePosixPermissions)
set listBoolMakeDir to appFileManager's createDirectoryAtURL:(ocidSaveDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error|:(reference)
###↑のフォルダの中にイメージシーケンス書き出し用のフォルダを作る
set ocidSaveSequenceDirPathURL to ocidSaveDirPathURL's URLByAppendingPathComponent:("sequence") isDirectory:true
set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
ocidAttrDict's setValue:(511) forKey:(refMe's NSFilePosixPermissions)
set listBoolMakeDir to appFileManager's createDirectoryAtURL:(ocidSaveSequenceDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error|:(reference)
set strSaveSequenceDirPathURL to (ocidSaveSequenceDirPathURL's |path|()) as text
###出力用のGIFアニメ用のパス
set strGifFileName to (strFileName & ".gif") as text
set ocidGifFilePath to ocidSaveDirPathURL's URLByAppendingPathComponent:(strGifFileName) isDirectory:false
set strGifFilePath to (ocidGifFilePath's |path|()) as text

##イメージシーケンス生成
set strCommandText to ("pushd \"" & strSaveSequenceDirPathURL & "\" && " & strBinPath & " -i \"" & strFilePathURL & "\" frame%04d.png") as text
do shell script strCommandText
##
delay 3
##
set strCommandText to ("pushd \"" & strSaveSequenceDirPathURL & "/\" && " & strGifskiBinPath & " -o \"" & strGifFilePath & "\" frame*.png") as text
do shell script strCommandText


|

[GIF]シーケンス用の画像の間隔を間引く


【スクリプトエディタで開く】|

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
use AppleScript version "2.8"
use framework "Foundation"
use framework "UniformTypeIdentifiers"
use framework "AppKit"
use scripting additions

property refMe : a reference to current application


###設定項目画像を間引く間隔
set numCntIntNo to 3 as integer


set strOpenAppBundleID to "com.apple.Preview"

###################################
#####対象アプリの対応ContentTypesを取得
###################################
set appFileManager to refMe's NSFileManager's defaultManager()
set ocidAppBundle to refMe's NSBundle's bundleWithIdentifier:(strOpenAppBundleID)
if ocidAppBundle is not (missing value) then
  set ocidAppPathURL to ocidAppBundle's bundleURL()
else
  set appNSWorkspace to refMe's NSWorkspace's sharedWorkspace()
  set ocidAppPathURL to appNSWorkspace's URLForApplicationWithBundleIdentifier:(strOpenAppBundleID)
end if
set ocidPlistPathURL to ocidAppPathURL's URLByAppendingPathComponent:("Contents/Info.plist") isDirectory:false
#####CFBundleDocumentTypesの取得
set ocidPlistDict to refMe's NSMutableDictionary's alloc()'s initWithContentsOfURL:(ocidPlistPathURL)
set ocidDocTypeArray to ocidPlistDict's objectForKey:"CFBundleDocumentTypes"
####リストにする
set listUTl to {} as list
repeat with itemDocTypeArray in ocidDocTypeArray
  set listContentTypes to (itemDocTypeArray's objectForKey:"LSItemContentTypes")
  if listContentTypes = (missing value) then
    set strExtension to (itemDocTypeArray's objectForKey:"CFBundleTypeExtensions") as text
    set ocidContentTypes to (refMe's UTType's typeWithFilenameExtension:strExtension)
    set strContentTypes to ocidContentTypes's identifier() as text
    set strContentTypes to ("" & strContentTypes & "") as text
    set end of listUTl to (strContentTypes)
  else
    repeat with itemContentTypes in listContentTypes
      set strContentTypes to ("" & itemContentTypes & "") as text
      set end of listUTl to (strContentTypes)
    end repeat
  end if
end repeat

###################################
#####入力ダイアログ
###################################
#####ダイアログを前面に
tell current application
  set strName to name as text
end tell
####スクリプトメニューから実行したら
if strName is "osascript" then
  tell application "Finder" to activate
else
  tell current application to activate
end if
set ocidUserDesktopPathURLArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
set ocidUserDesktopPathURL to ocidUserDesktopPathURLArray's firstObject()
set aliasDefaultLocation to (ocidUserDesktopPathURL's absoluteURL()) as alias
### set listUTI to {"public.png", "public.jpeg"}
set strPromptText to "ファイルを選んでください" as text
set strMesText to "ファイルを選んでください" as text
set listAliasFilePath to (choose file strMesText with prompt strPromptText default location (aliasDefaultLocation) of type listUTl with invisibles and multiple selections allowed without showing package contents) as list

###################################
#####出力先フォルダ
###################################
set aliasFilePath to (item 1 of listAliasFilePath) as alias
set strFilePath to (POSIX path of aliasFilePath) as text
set ocidFilePathStr to refMe's NSString's stringWithString:(strFilePath)
set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
set ocidContainerDirPath to (ocidFilePath's stringByDeletingLastPathComponent)
set strContainerDirPath to (ocidContainerDirPath's stringByDeletingLastPathComponent) as text
set aliasDefaultLocation to (POSIX file strContainerDirPath) as alias
set strPromptText to "保存先フォルダを選んでください" as text
set strMesText to "保存先フォルダを選んでください" as text
set aliasDistDirPath to (choose folder strMesText with prompt strPromptText default location aliasDefaultLocation with invisibles without multiple selections allowed and showing package contents) as alias
set strDistDirPath to (POSIX path of aliasDistDirPath) as text
set ocidDistDirPathStr to refMe's NSString's stringWithString:(strDistDirPath)
set ocidDistDirPath to ocidDistDirPathStr's stringByStandardizingPath()
set ocidDistDirPathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidDistDirPath) isDirectory:true)
###################################
#####入力ファイル並び替え(ファイル名順)
###################################
set ocidFileURLArrayM to refMe's NSMutableArray's alloc()'s initWithCapacity:(0)
###URLのリストにする
repeat with itemAliasFilePath in listAliasFilePath
  set strFilePath to (POSIX path of itemAliasFilePath) as text
  set ocidFilePath to (refMe's NSString's stringWithString:strFilePath)
  set ocidFilePathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:ocidFilePath)
(ocidFileURLArrayM's addObject:ocidFilePathURL)
end repeat
###並び替え
set ocidSortDescriptor to (refMe's NSSortDescriptor's sortDescriptorWithKey:("absoluteString") ascending:(true) selector:"localizedStandardCompare:")
set ocidDescriptorArray to refMe's NSArray's arrayWithObject:(ocidSortDescriptor)
set ocidSortedArray to ocidFileURLArrayM's sortedArrayUsingDescriptors:(ocidDescriptorArray)
###################################
#####ファイルのコピー
###################################

set numCnkCnt to 1 as integer
repeat with itemSortedArray in ocidSortedArray
  if numCnkCnt = 1 then
    set ocidFilePathURL to itemSortedArray
    set ocidFileName to ocidFilePathURL's lastPathComponent()
    set ocidDistFilePathURL to (ocidDistDirPathURL's URLByAppendingPathComponent:(ocidFileName))
    set listDone to (appFileManager's copyItemAtURL:(ocidFilePathURL) toURL:(ocidDistFilePathURL) |error|:(reference))
  end if
  if numCnkCnt = numCntIntNo then
    set numCnkCnt to 1 as integer
  else
    set numCnkCnt to numCnkCnt + 1 as integer
  end if
end repeat



|

[Gif]gifアニメーションの各コマを別ファイルに保存(イメージシーケンス保存)


【スクリプトエディタで開く】|

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
(*
error number -128
com.cocolog-nifty.quicktimer.icefloe
*)
#
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
##自分環境がos12なので2.8にしているだけです
use AppleScript version "2.8"
use framework "Foundation"
use framework "AppKit"
use scripting additions

property refMe : a reference to current application

##########################
## ダイアログ
##########################
set appFileManager to refMe's NSFileManager's defaultManager()
set ocidUserDesktopPath to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
set aliasDefaultLocation to ocidUserDesktopPath as alias

set listChooseFileUTI to {"com.compuserve.gif"}
set strPromptText to "ファイルを選んでください" as text
set strPromptMes to "ファイルを選んでください" as text
set aliasFilePath to (choose file strPromptMes with prompt strPromptText default location (aliasDefaultLocation) of type listChooseFileUTI with invisibles and showing package contents without multiple selections allowed) as alias
##########################
## パス
##########################

set strFilePath to (POSIX path of aliasFilePath) as text
set ocidFilePathStr to refMe's NSString's stringWithString:(strFilePath)
set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
set ocidFilePathURL to refMe's NSURL's alloc()'s initFileURLWithPath:ocidFilePath isDirectory:false
###作成するフォルダ名
set ocidFileName to ocidFilePathURL's lastPathComponent()
set strBaseFileName to ocidFileName's stringByDeletingPathExtension() as text
set strSaveDirName to (strBaseFileName & "_Image Sequence") as text
####コンテナディレクトリ
set ocidContainerDirPathURL to ocidFilePathURL's URLByDeletingLastPathComponent()
###保存用ディレクトリ
set ocidSaveFileDirURL to (ocidContainerDirPathURL's URLByAppendingPathComponent:strSaveDirName)
###フォルダを作る
set listBoolMakeDir to appFileManager's createDirectoryAtURL:(ocidSaveFileDirURL) withIntermediateDirectories:true attributes:(missing value) |error|:(reference)

##########################
## 画像読み込み
##########################
set ocidGifImage to refMe's NSImage's alloc()'s initWithContentsOfURL:(ocidFilePathURL)
set ocidGifImageArray to ocidGifImage's representations()
set ocidGifImageRep to ocidGifImageArray's objectAtIndex:0
##########################
###保存時必要になるPNGオプション
##########################
####NSImageColorSyncProfileData
set ocidColorSpace to refMe's NSColorSpace's displayP3ColorSpace()
set ocidColorSpaceData to ocidColorSpace's colorSyncProfile()
####NSImageEXIFData
set ocidEXIFData to (ocidGifImageRep's valueForProperty:(refMe's NSImageEXIFData))
####ガンマ値換算 まぁ2.2入れておけば間違い無いか…しらんけど
set numGamma to (1 / 2.2) as number
####propertiesデータレコード整形(PNG用)
set ocidImageProperties to {NSImageGamma:(numGamma), NSImageEXIFData:(ocidEXIFData), NSImageInterlaced:false, NSImageColorSyncProfileData:(ocidColorSpaceData)} as record

####GIFのコマ数 フレーム数
set numFrameCnt to (ocidGifImageRep's valueForProperty:(refMe's NSImageFrameCount)) as integer
log numFrameCnt
###フレーム取り出し用のカウンタ
set numSetFrameNo to 0 as integer

repeat numFrameCnt times
  ####フレーム番号 コマ番号 をセット
ocidGifImageRep's setProperty:(refMe's NSImageCurrentFrame) withValue:(numSetFrameNo)
  ###確認用
  ## set ocidFlameRep to (ocidGifImageRep's valueForProperty:(refMe's NSImageCurrentFrame)) as integer
  ## log ocidFlameRep
  #####保存用ファイル名 連番ゼロサプレス
  set strZeroSup to "000" as text
  set strZeroSup to (strZeroSup & ((numSetFrameNo + 1) as text)) as text
  set strZeroSup to (text -3 through -1 of strZeroSup) as text
  set strSaveFileName to (strBaseFileName & "." & strZeroSup & ".png") as text
  ###保存用のパスURL
  set ocidSaveFilePathURL to (ocidSaveFileDirURL's URLByAppendingPathComponent:(strSaveFileName))
  ###PNGデータに変換
  set ocidSaveData to (ocidGifImageRep's representationUsingType:(refMe's NSBitmapImageFileTypePNG) |properties|:(ocidImageProperties))
  ###保存
  set ocidWroteToFileDone to (ocidSaveData's writeToURL:(ocidSaveFilePathURL) options:0 |error|:(reference))
  ###カウントアップ
  set numSetFrameNo to numSetFrameNo + 1 as integer
end repeat

###保存フォルダを選択して終了
set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
appSharedWorkspace's selectFile:(ocidSaveFileDirURL's |path|()) inFileViewerRootedAtPath:"/"









|

[gif2webp]GIFアニメをwebpに変換する


【スクリプトエディタで開く】|

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
(* 別途 gif2webpが必要です
[applescript]libwebpインストール
https://quicktimer.cocolog-nifty.com/icefloe/2024/01/post-0a1a86.html
実行してから利用してください
*)
# com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
use AppleScript version "2.8"
use framework "Foundation"
use scripting additions

property refMe : a reference to current application

###設定項目
set strBinPath to ("~/bin/libwebp/bin/gif2webp") as text

##バイナリのパス
set strBinPathStr to refMe's NSString's stringWithString:(strBinPath)
set ocidFilePath to strBinPathStr's stringByStandardizingPath()
set strBinPath to ocidFilePath as string
##デフォルトロケーション
tell application "Finder"
  set aliasDefaultLocation to container of (path to me) as alias
  set aliasDesktopFolder to (path to desktop folder from user domain) as alias
end tell
###ダイアログを前面に
tell current application
  set strName to name as text
end tell
####スクリプトメニューから実行したら
if strName is "osascript" then
  tell application "Finder" to activate
else
  tell current application to activate
end if
##ダイアログ
set listAliasFilePath to (choose file with prompt "GIFファイルを選んでください" default location aliasDefaultLocation of type {"com.compuserve.gif"} with invisibles and multiple selections allowed without showing package contents) as list

##選んだファイルの数だけ実行
repeat with itemAliasFilePath in listAliasFilePath
  tell application "Finder"
    set aliasFilePath to itemAliasFilePath as alias
    ###ファイルパスを取得
    set strFilePath to (POSIX path of aliasFilePath) as text
  end tell
  ###コマンド整形
  set strCommandText to ("\"" & strBinPath & "\" \"" & strFilePath & "\" -q 100 -o \"" & strFilePath & ".webp\"") as text
  ####実行
  tell application "Terminal"
launch
activate
    set objWindowID to (do script "\n\n")
delay 2
do script strCommandText in objWindowID
  end tell
  
  ####処理が終わるのをまってから次にかかる
  repeat
    tell application "Terminal"
      tell front window
        set boolTabStatus to busy
      end tell
    end tell
    if boolTabStatus is false then
      exit repeat
      --->このリピートを抜けて次の処理へ
    else if boolTabStatus is true then
delay 3
      --->busyなのであと3秒まつ
    end if
  end repeat
  
  
end repeat

|

その他のカテゴリー

Acrobat Acrobat Annotation Acrobat Dialog Acrobat Form Acrobat JS Acrobat Open Acrobat Plugin Acrobat python Acrobat Reader Acrobat Sequ Acrobat Stamps Admin Admin Account Admin Apachectl Admin configCode Admin Device Management Admin LaunchServices Admin Locationd Admin loginitem Admin Maintenance Admin Permission Admin Pkg Admin Power Management Admin Printer Admin SetUp Admin SMB Admin System Information Admin Tools Admin Users Admin Volumes Adobe Apple AppleScript AppleScript Guide AppleScript Accessibility AppleScript AppKit AppleScript Applications AppleScript AppStore AppleScript Archive AppleScript Attributes AppleScript Automator AppleScript AVAsset AppleScript AVconvert AppleScript AVFoundation AppleScript AVURLAsset AppleScript BackUp AppleScript Barcode AppleScript Bash AppleScript Basic AppleScript Basic Path AppleScript Bluetooth AppleScript BOX AppleScript Browser AppleScript Calendar AppleScript CD/DVD AppleScript Choose AppleScript Chrome AppleScript CIImage AppleScript CloudStorage AppleScript Color AppleScript com.apple.LaunchServices.OpenWith AppleScript Console AppleScript Contacts AppleScript CotEditor AppleScript CURL AppleScript current application AppleScript Date&Time AppleScript delimiters AppleScript Desktop AppleScript Device AppleScript Disk AppleScript do shell script AppleScript Dock AppleScript DropBox AppleScript eMail AppleScript Encode Decode AppleScript Error AppleScript EXIFData AppleScript ffmpeg AppleScript File AppleScript Finder AppleScript Firefox AppleScript Folder AppleScript Fonts AppleScript GIF AppleScript HTML AppleScript Icon AppleScript Illustrator AppleScript Image Events AppleScript Image2PDF AppleScript ImageOptim Applescript iWork AppleScript Javascript AppleScript Jedit AppleScript Json AppleScript Label AppleScript List AppleScript locationd AppleScript LRC AppleScript LSSharedFileList AppleScript m3u8 AppleScript MakePDF AppleScript Map AppleScript Math AppleScript Microsoft AppleScript Microsoft Edge AppleScript Microsoft Excel AppleScript Mobileconfig AppleScript Mouse AppleScript Movie AppleScript Music AppleScript NetWork AppleScript Notes AppleScript NSArray AppleScript NSBitmapImageRep AppleScript NSBundle AppleScript NSCFBoolean AppleScript NSCharacterSet AppleScript NSColor AppleScript NSColorList AppleScript NSData AppleScript NSDictionary AppleScript NSError AppleScript NSEvent AppleScript NSFileAttributes AppleScript NSFileManager AppleScript NSFont AppleScript NSFontManager AppleScript NSImage AppleScript NSIndex AppleScript NSKeyedArchiver AppleScript NSKeyedUnarchiver AppleScript NSLocale AppleScript NSMutableArray AppleScript NSMutableDictionary AppleScript NSMutableString AppleScript NSNotFound AppleScript NSNumber AppleScript NSOpenPanel AppleScript NSPasteboard AppleScript NSPDFImageRep AppleScript NSpoint AppleScript NSPredicate AppleScript NSRange AppleScript NSRegularExpression AppleScript NSRunningApplication AppleScript NSScreen AppleScript NSSize AppleScript NSString AppleScript NSStringCompareOptions AppleScript NSTask AppleScript NSTimeZone AppleScript NSURL AppleScript NSURL File AppleScript NSURLBookmark AppleScript NSURLComponents AppleScript NSURLResourceKey AppleScript NSUserDefaults AppleScript NSUUID AppleScript NSView AppleScript NSWorkspace AppleScript Numbers AppleScript OAuth AppleScript ObjC AppleScript OneDrive AppleScript Osax AppleScript PDF AppleScript PDFAnnotationWidget AppleScript PDFContext AppleScript PDFDisplayBox AppleScript PDFDocumentPermissions AppleScript PDFKit AppleScript PDFnUP AppleScript PDFOutline AppleScript Photos AppleScript Photoshop AppleScript Plist System Events AppleScript PostScript AppleScript prefPane AppleScript Preview AppleScript Python AppleScript QR AppleScript QR Decode AppleScript QuickLook AppleScript QuickTime AppleScript record AppleScript Regular Expression AppleScript Reminders AppleScript ReName AppleScript Repeat AppleScript RTF AppleScript Safari AppleScript SaveFile AppleScript ScreenCapture AppleScript ScreenSaver AppleScript Script Editor AppleScript Script Menu AppleScript Shortcuts AppleScript Shortcuts Events AppleScript Sort AppleScript Sound AppleScript Spotlight AppleScript SRT AppleScript StandardAdditions AppleScript stringByApplyingTransform AppleScript System Events AppleScript System Settings AppleScript TemporaryItems AppleScript Terminal AppleScript Text AppleScript Text CSV AppleScript Text TSV AppleScript TextEdit AppleScript Translate AppleScript Trash AppleScript Twitter AppleScript UI AppleScript Unit Conversion AppleScript UTType AppleScript valueForKeyPath AppleScript Video AppleScript VisionKit AppleScript Visual Studio Code AppleScript webarchive AppleScript webp AppleScript Wifi AppleScript XML AppleScript XML EPUB AppleScript XML OPML AppleScript XML Plist AppleScript XML RSS AppleScript XML SVG AppleScript XML TTML AppleScript XML webloc AppleScript YouTube AppleScript Zero Suppress Applications Barcode OnLine Tools CityCode Design iPhone List Logs lsappinfo Memo Music perl PlistBuddy pluginkit postalcode ReadMe SF Symbols character id SF Symbols Entity sips Skype Slack sqlite TCC Tools Typography Video Wacom zoom