見出し画像

AppleScriptを用いて、KIndleのスクショを自動的に作成するコード

Kindleで教科書を買った際などに使用すると便利なコード。
(あくまで私的複製のみに)


全体の流れ

  1. 初期設定を行い、指定のページ数、保存先フォルダ、ページめくり方向、切り抜きサイズ、リサイズ幅を設定。

  2. Kindleアプリをアクティブにして、ページめくりとスクリーンショット撮影を繰り返し実行。

  3. スクリーンショットを指定のフォルダに保存し、必要に応じて切り抜きやリサイズを行う。

  1. 変数の設定:

    • pages:スクリーンショットを撮るページ数を設定しています(ここでは320ページ)。

    • target:対象アプリケーションを設定しています(ここではKindle)。

    • savepath:スクリーンショットを保存するフォルダのパスを設定しています(ここでは"~/Pictures/フォルダの名前/")。

    • spage:スクリーンショットを撮り始めるページ番号を設定しています(ここでは1ページ目から)。

    • pagedir:ページめくりの方向を設定しています(1は左、2は右)。

    • pausetime:ページめくりとスクリーンショット撮影の間に待機する時間を設定しています(ここでは2秒)。

    • cropx、cropy:スクリーンショットの切り抜きサイズを設定しています(0は切り抜きをしない)。

    • resizew:リサイズの幅を設定しています(0はリサイズをしない)。

  2. ページめくりのキー設定:

    • keychar:ページめくりの方向に応じて、左矢印キー(ASCII 28)または右矢印キー(ASCII 29)を設定しています。

  3. 対象アプリのアクティベート:

    • tell application targetとactivate:設定されたターゲットアプリケーション(Kindle)をアクティブにします。

  4. スクリーンショットのループ処理:

    • repeat with i from spage to pages:指定されたページ数分、繰り返し処理を行います。

      • dp:ページ番号に応じた3桁のファイル名を生成します。

      • spath:保存パスとファイル名を結合して保存先のパスを作成します。

      • do shell script "screencapture " & spath:指定のファイル名でスクリーンショットを撮影し、保存します。

      • 切り抜きとリサイズの処理:

        • if cropx is not 0 and cropy is not 0 then:切り抜きサイズが設定されている場合、sipsコマンドで切り抜きとリサイズを実行します。

      • tell application "System Events" keystroke keychar:設定された方向にページをめくります。

      • delay pausetime:次のスクリーンショットを撮る前に指定された秒数だけ待機します。

このスクリプトを実行することで、Kindleアプリ内の指定されたページ数分のスクリーンショットを自動的に取得し、保存することができます。

-- ページ数
set pages to 320
-- 対象アプリ
set target to "Kindle"
-- 保存フォルダ
set savepath to "/Users/~/"
-- 開始ファイル番号
set spage to 1
-- めくり方向(1=左 2=右)
set pagedir to 1
-- ページめくりウエイト(秒)
set pausetime to 0.2
-- 切り抜きサイズ(画面中心から)(画面にフィットさせて)
set cropx to 1100
set cropy to 1600
-- リサイズ横(切り抜く前のサイズ換算=画面横/切り抜き横*仕上がり横)
set resizew to 0
if pagedir = 1 then
set keychar to (ASCII character 28)
else
set keychar to (ASCII character 29)
end if
if target is not "" then
tell application target
activate
end tell
end if
delay pausetime
repeat with i from spage to pages
if i < 10 then
set dp to "00" & i
else if i < 100 then
set dp to "0" & i
else if i < 1000 then
set dp to "" & i
end if
set spath to (savepath & "p" & dp & ".png")
do shell script "screencapture " & spath
if cropx is not 0 and cropy is not 0 then
if resizew is not 0 then
do shell script "sips -c " & cropy & " " & cropx & " --resampleWidth " & resizew & " " & spath & " --out " & spath
else
do shell script "sips -c " & cropy & " " & cropx & " " & spath & " --out " & spath
end if
end if
tell application "System Events"
keystroke keychar
end tell
delay pausetime
end repeat
activate



この記事が気に入ったらサポートをしてみませんか?