LoginSignup
14
20

More than 3 years have passed since last update.

Kindleの自動スクショ保存プログラム

Last updated at Posted at 2020-07-08

初めに

Kindle本を購入したけどアカウントが消えて今までの本が見れなくなった、、
保存しておけばよかった、、
となったので、Kindle本を保存しておくためのプログラムを作成しました。

MacにおけるKindleAppの、全ページの画面のスクリーンショットを自動で撮ることを目的としています。

今回は簡単のため、ページの大きさにフィットさせるのではなく、画面全体をスクリーンショットすることで実装しています。

保存した画像ファイルをpdf化する方法は以下の記事に書きました。
Kindleの自動スクショ保存プログラム 〜PDF化編〜

使用方法

プログラムをインストールしましょう。

git clone https://github.com/yassyyuki/save_kindle_book.git

インストールできない方は、以下のコードをコピペして、save_kindle_screen.pyファイルを作成してペーストしましょう。

import pyautogui
import time
import os
import datetime


# ページ数
page = 5
# スクショ間隔(秒)
span = 1
# 出力フォルダ頭文字
h_foldername = "output"
# 出力ファイル頭文字
h_filename = "picture"


# 5秒の間に、スクショしたいkindleの画面に移動
time.sleep(5)

# 出力フォルダ作成(フォルダ名:頭文字_年月日時分秒)
folder_name = h_foldername + "_" + str(datetime.datetime.now().strftime("%Y%m%d%H%M%S"))
os.mkdir(folder_name)

# スクショ処理
for p in range(page):
    # 出力ファイル名(頭文字_連番.png)
    out_filename = h_filename + "_" + str(p+1).zfill(4) + '.png'
    # 画面全体のスクリーンショット
    s = pyautogui.screenshot()
    # 出力パス: 出力フォルダ名 / 出力ファイル名
    s.save(folder_name + "/" + out_filename)
    # 次のページ
    pyautogui.keyDown('left')
    # 画面の動作待ち
    time.sleep(span)

使用するライブラリが実行環境にない方は以下のようにしてライブラリをインストールしましょう。

pip install pyautogui
pip install time
pip install os
pip install datetime

次に、保存しておきたいKindle本を選び、フルスクリーンで1ページ目を開いておきましょう。

次に、save_kindle_book.pyファイルの上の方にある、

page = 5 # ここをページ数に設定し直す

の部分の数値を、自分の保存しておきたいKindle本のページ数に設定し直しましょう。
このページ数は、どれだけ範囲を1ページ分として開いているかが人によって様々なので、大きめに設定しておいて、余分な分はあとで削除するのが楽です。

設定し終えたら、ターミナル上で実行しましょう。

python save_kindle_book.py

実行したら、5秒以内にKindle本を開いた画面に移動し、後はそのまま放置です。

実行し終えると、新しくディレクトリが作成され、その中にスクリーンショットが保存されています。

1秒×ページ数が目安の時間がかかります。

注意

Kindle画面をスクリーンショットし、個人で楽しむのは問題ありませんが、他人に譲渡することは違法ですのでご注意ください。

最後に

最後までご覧いただきありがとうございました。

14
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
20