<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Pyautogui &#8211; dr-harv-blog</title>
	<atom:link href="https://www.dr-harv.com/tag/pyautogui/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.dr-harv.com</link>
	<description></description>
	<lastBuildDate>Tue, 22 Jul 2025 03:39:41 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.2</generator>

<image>
	<url>https://www.dr-harv.com/wp-content/uploads/2022/11/cropped-shutterstock_1897171960-32x32.jpg</url>
	<title>Pyautogui &#8211; dr-harv-blog</title>
	<link>https://www.dr-harv.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Kindleのスクリーンショットを、Pyautoguiで自動化する、技術的考察</title>
		<link>https://www.dr-harv.com/archive-post10532/</link>
		
		<dc:creator><![CDATA[drｰharv]]></dc:creator>
		<pubDate>Wed, 31 Jul 2024 05:29:13 +0000</pubDate>
				<category><![CDATA[医学研究とデータサイエンス]]></category>
		<category><![CDATA[Kindle]]></category>
		<category><![CDATA[Pyautogui]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[スクリーンショット]]></category>
		<category><![CDATA[医師]]></category>
		<category><![CDATA[業務効率化]]></category>
		<category><![CDATA[研究DX]]></category>
		<category><![CDATA[研究者]]></category>
		<category><![CDATA[自動化]]></category>
		<category><![CDATA[論文]]></category>
		<guid isPermaLink="false">https://www.dr-harv.com/?p=12040</guid>

					<description><![CDATA[<p><img src="https://www.dr-harv.com/wp-content/uploads/2022/05/kindle-g1c916b019_640.jpg" class="webfeedsFeaturedVisual" /></p>Kindleのスクショは個人利用でかつ非営利の場合問題ありません この記事では、Pyautoguiを使ってKindleのスクリーンショットを自動化する方法を紹介します。これで手間を省き、効率的にスクリーンショットを撮るこ [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://www.dr-harv.com/wp-content/uploads/2022/05/kindle-g1c916b019_640.jpg" class="webfeedsFeaturedVisual" /></p>
<p>Kindleのスクショは個人利用でかつ非営利の場合問題ありません</p>



<p>この記事では、Pyautoguiを使ってKindleのスクリーンショットを自動化する方法を紹介します。これで手間を省き、効率的にスクリーンショットを撮ることができます。</p>



<p><strong>【最重要：警告】</strong> <strong>この記事で紹介する技術は、著作権法に抵触するリスクを伴う、極めてデリケートなものです。その法的・倫理的なリスクを完全に理解し、そして、全ての法的結果を、自己責任で引き受ける覚悟のある、上級者の方のみ、お読みください。</strong></p>



<h2 class="wp-block-heading">スクリーンショットの自動化</h2>



<p>手動で一枚一枚スクリーンショットを撮るのは時間がかかり、非常に面倒です。この悩みを解決する方法があれば、良いと思ったことはあるかと思います。</p>



<p>なによりも、手動でのスクリーンショット撮影を続けると、貴重な時間が浪費されるだけでなく、誤って重要な部分を撮り忘れることもおこってしまいかねません。</p>



<h2 class="wp-block-heading">pyautoguiの利用</h2>



<p>そんな悩みを解決するのが、Pyautoguiを使った自動スクリーンショット撮影です。</p>



<p>pyautoguiは、PythonでGUIオートメーションライブラリです。</p>



<p>Pyautoguiを使えば、以下の操作が可能です：</p>



<ul class="wp-block-list is-style-good_list has-swl-pale-03-background-color has-background">
<li>画面全体や指定範囲のスクリーンショットを撮影</li>



<li>Kindleアプリを自動で操作してページ送り</li>



<li>画像を指定フォルダに自動保存 具体的なコードも提供されているため、初心者でも簡単に始められます。</li>
</ul>



<p>自動テスト、デスクトップの自動化タスクなどに使用することが出来ます。</p>



<p>実装は無料で利用できる<a href="https://code.visualstudio.com/download" data-type="link" data-id="https://code.visualstudio.com/download">Visual Studio Code</a>がオススメです</p>


<p><!-- START MoshimoAffiliateEasyLink --><br />
<script type="text/javascript">
(function(b,c,f,g,a,d,e){b.MoshimoAffiliateObject=a;
b[a]=b[a]||function(){arguments.currentScript=c.currentScript
||c.scripts[c.scripts.length-2];(b[a].q=b[a].q||[]).push(arguments)};
c.getElementById(a)||(d=c.createElement(f),d.src=g,
d.id=a,e=c.getElementsByTagName("body")[0],e.appendChild(d))})
(window,document,"script","//dn.msmstatic.com/site/cardlink/bundle.js?20220329","msmaflink");
msmaflink({"n":"Visual Studio Code完全入門　Webクリエイター\u0026エンジニアの作業がはかどる新世代エディターの操り方","b":"","t":"","d":"https:\/\/m.media-amazon.com","c_p":"","p":["\/images\/I\/512efZlVCaL._SL500_.jpg"],"u":{"u":"https:\/\/www.amazon.co.jp\/dp\/B09TDNXKL4","t":"amazon","r_v":""},"v":"2.1","b_l":[{"id":1,"u_tx":"Amazonで見る","u_bc":"#f79256","u_url":"https:\/\/www.amazon.co.jp\/dp\/B09TDNXKL4","a_id":3139217,"p_id":170,"pl_id":27060,"pc_id":185,"s_n":"amazon","u_so":1},{"id":2,"u_tx":"楽天市場で見る","u_bc":"#f76956","u_url":"https:\/\/search.rakuten.co.jp\/search\/mall\/Visual%20Studio%20Code%E5%AE%8C%E5%85%A8%E5%85%A5%E9%96%80%E3%80%80Web%E3%82%AF%E3%83%AA%E3%82%A8%E3%82%A4%E3%82%BF%E3%83%BC%26%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%81%AE%E4%BD%9C%E6%A5%AD%E3%81%8C%E3%81%AF%E3%81%8B%E3%81%A9%E3%82%8B%E6%96%B0%E4%B8%96%E4%BB%A3%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF%E3%83%BC%E3%81%AE%E6%93%8D%E3%82%8A%E6%96%B9\/","a_id":3052701,"p_id":54,"pl_id":27059,"pc_id":54,"s_n":"rakuten","u_so":2},{"id":3,"u_tx":"Yahoo!ショッピングで見る","u_bc":"#66a7ff","u_url":"https:\/\/shopping.yahoo.co.jp\/search?first=1\u0026p=Visual%20Studio%20Code%E5%AE%8C%E5%85%A8%E5%85%A5%E9%96%80%E3%80%80Web%E3%82%AF%E3%83%AA%E3%82%A8%E3%82%A4%E3%82%BF%E3%83%BC%26%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%81%AE%E4%BD%9C%E6%A5%AD%E3%81%8C%E3%81%AF%E3%81%8B%E3%81%A9%E3%82%8B%E6%96%B0%E4%B8%96%E4%BB%A3%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF%E3%83%BC%E3%81%AE%E6%93%8D%E3%82%8A%E6%96%B9","a_id":3163784,"p_id":1225,"pl_id":27061,"pc_id":1925,"s_n":"yahoo","u_so":3}],"eid":"JqWNh","s":"s"});
</script></p>
<div id="msmaflink-JqWNh">リンク</div>
<p><!-- MoshimoAffiliateEasyLink END --></p>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p><strong>Python環境でPyautogui</strong>をインストールします</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>$ pip install pyautogui</code></pre></div>



<h2 class="wp-block-heading">スクリーンショットをとる</h2>



<p>基本的なデスクトップのスクリーンショットはこちら</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>import pyautogui
# 全画面のスクリーンショットを撮る場合
img1 = pyautogui.screenshot(&#39;my_screenshot_all.png&#39;)
# 範囲を指定する場合
img2 = pyautogui.screenshot(&#39;my_screenshot_region.png&#39;, region=(left,top,width,height))
</code></pre></div>



<p>これでデスクトップのスクリーンショットを保存することが出来ます</p>



<p>では、<span class="st-mymarker-s-b">続いてPyatutoguiを使ってKindleのスクショをとります</span></p>



<h2 class="wp-block-heading">pyatutoguiでKindleのスクショをとる</h2>



<p>コードが動作するためには以下の条件が必要です</p>



<div class="wp-block-group is-style-big_icon_good"><div class="wp-block-group__inner-container">
<ul class="wp-block-list">
<li><span class="st-mymarker-s-b">Kindleアプリケーションが起動している</span></li>



<li><span class="st-mymarker-s-b">スクリーンショットをとりたいライブラリが開いている</span></li>



<li><span class="st-mymarker-s-b">アプリを最前面に開いておく</span></li>
</ul>
</div></div>



<p><span class="st-mymarker-s-b"></span></p>



<p>最前面にアプリを開く必要があるのですが面倒なので</p>



<p><strong>スクリーンショットをとるアプリを指定するためにコードを改良</strong>します</p>



<p><strong>pygetwindow</strong>ライブラリを使用します</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>pip install pyautogui pygetwindow</code></pre></div>



<p>次にコードを示します。コピペでOKですが、調整を要するところがあります</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>import pyautogui
import pygetwindow as gw
import time
import os
import datetime

#########################
# 変数定義
#########################

page = 5
span = 1
h_foldername = &quot;output&quot;
h_filename = &quot;picture&quot;
window_title_contains = &quot;kindle&quot;  # kindleを含むウインドウを開く

#########################
# スクリーンショット取得処理
#########################

time.sleep(5)

desktop_path = os.path.join(os.path.join(os.environ[&#39;USERPROFILE&#39;]), &#39;Desktop&#39;)

folder_name = h_foldername + &quot;_&quot; + str(datetime.datetime.now().strftime(&quot;%Y%m%d%H%M%S&quot;))
os.mkdir(os.path.join(desktop_path, folder_name))

for p in range(page):
    out_filename = h_filename + &quot;_&quot; + str(p+1).zfill(4) + &#39;.png&#39;

    windows = gw.getWindowsWithTitle(window_title_contains)
    if windows:
        window = windows[0]
        window.activate()
        window.moveTo(0,0)
        time.sleep(1)
        s = pyautogui.screenshot(region=(window.left, window.top, window.width, window.height))
        s.save(os.path.join(desktop_path, folder_name, out_filename))
    else:
        print(f&quot;No window containing &#39;{window_title_contains}&#39; in the title was found.&quot;)
        break

    pyautogui.keyDown(&#39;right&#39;)
    time.sleep(span)
</code></pre></div>



<p>デスクトップに保存していますが、保存先のパスを変更できます</p>



<p>このコードは右で進むタイプの書籍でWorkします</p>



<h2 class="wp-block-heading">左で進む作品の対応</h2>



<p>漫画などの左で進む作品はこちらのコードがWorkします。このコードではキャプチャ範囲を指定しています。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>import pyautogui
import pygetwindow as gw
import time
import os
import datetime

#########################
# 変数定義
#########################

page = 5
span = 1
h_foldername = &quot;output&quot;
h_filename = &quot;picture&quot;
window_title_contains = &quot;kindle&quot;  # ウィンドウタイトルに含まれるべき文字列

#########################
# スクリーンショット取得処理
#########################

time.sleep(5)

desktop_path = os.path.join(os.path.join(os.environ[&#39;USERPROFILE&#39;]), &#39;Desktop&#39;)

folder_name = h_foldername + &quot;_&quot; + str(datetime.datetime.now().strftime(&quot;%Y%m%d%H%M%S&quot;))
os.mkdir(os.path.join(desktop_path, folder_name))

for p in range(page):
    out_filename = h_filename + &quot;_&quot; + str(p+1).zfill(4) + &#39;.png&#39;

    windows = gw.getWindowsWithTitle(window_title_contains)
    if windows:
        window = windows[0]
        window.activate()  # ウィンドウをアクティブにする
        time.sleep(1)  # アクティブ化後の安定化のために少し待つ
        # 左上の座標
        x1, y1 = 573, 236

        #右下の座標
        x2, y2 = 3383, 2173

        s = pyautogui.screenshot(region=(x1, y1, x2-x1, y2-y1))
        s.save(os.path.join(desktop_path, folder_name, out_filename))
        pyautogui.press(&#39;left&#39;)
        time.sleep(span)

    else:
        print(f&quot;No window containing &#39;{window_title_contains}&#39; in the title was found.&quot;)
        break
</code></pre></div>



<h2 class="wp-block-heading">スクリーンショットの範囲を指定する</h2>



<p>さて、これで写真がとれていることが確認されたら</p>



<p>トリミングも行いたいですよね。トリミングはディスプレイの解像度やウインドウの大きさで変わってしまうので、ウインドウを最大化した状態で環境に合わせて変更されることをオススメします。</p>



<p>画面には座標が設定されているので以下のコードを用いることで左上と右下の座標を得ることが出来ます。ここであわせた座標を上のコードに調整することで画面キャプチャの場所を合わせることが出来ます</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>import pyautogui
import time

print(&quot;3秒後に座標を取得します...&quot;)
time.sleep(3)
position1 = pyautogui.position()
print(&quot;左上の座標：&quot;, position1)

print(&quot;次の座標を取得するまで3秒待ちます...&quot;)
time.sleep(3)
position2 = pyautogui.position()
print(&quot;右下の座標：&quot;, position2)
</code></pre></div>


<p><!-- START MoshimoAffiliateEasyLink --><script type="text/javascript">(function(b,c,f,g,a,d,e){b.MoshimoAffiliateObject=a;b[a]=b[a]||function(){arguments.currentScript=c.currentScript||c.scripts[c.scripts.length-2];(b[a].q=b[a].q||[]).push(arguments)};c.getElementById(a)||(d=c.createElement(f),d.src=g,d.id=a,e=c.getElementsByTagName("body")[0],e.appendChild(d))})(window,document,"script","//dn.msmstatic.com/site/cardlink/bundle.js?20220329","msmaflink");msmaflink({"n":"Python業務自動化マスタリングハンドブック (Python定番セレクション)","b":"秀和システム","t":"","d":"https:\/\/m.media-amazon.com","c_p":"\/images\/I","p":["\/51EuQbK88qL._SL500_.jpg","\/41Ue8Cl3bZL._SL500_.jpg","\/41l7eS0CyeL._SL500_.jpg","\/41xdK-e9-NL._SL500_.jpg","\/41BXplOobpL._SL500_.jpg","\/41dvcHSUzXL._SL500_.jpg","\/41u6cbj-efL._SL500_.jpg","\/41odGpHEjIL._SL500_.jpg","\/41TCY5SL4GL._SL500_.jpg","\/41aYlEuAXGL._SL500_.jpg","\/41CDqu4Bl3L._SL500_.jpg","\/41gRBET64NL._SL500_.jpg"],"u":{"u":"https:\/\/www.amazon.co.jp\/dp\/4798068063","t":"amazon","r_v":""},"v":"2.1","b_l":[{"id":1,"u_tx":"Amazonで見る","u_bc":"#f79256","u_url":"https:\/\/www.amazon.co.jp\/dp\/4798068063","a_id":3139217,"p_id":170,"pl_id":27060,"pc_id":185,"s_n":"amazon","u_so":1},{"id":2,"u_tx":"楽天市場で見る","u_bc":"#f76956","u_url":"https:\/\/search.rakuten.co.jp\/search\/mall\/Python%E6%A5%AD%E5%8B%99%E8%87%AA%E5%8B%95%E5%8C%96%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%8F%E3%83%B3%E3%83%89%E3%83%96%E3%83%83%E3%82%AF%20(Python%E5%AE%9A%E7%95%AA%E3%82%BB%E3%83%AC%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3)\/","a_id":3052701,"p_id":54,"pl_id":27059,"pc_id":54,"s_n":"rakuten","u_so":2},{"id":3,"u_tx":"Yahoo!ショッピングで見る","u_bc":"#66a7ff","u_url":"https:\/\/shopping.yahoo.co.jp\/search?first=1\u0026p=Python%E6%A5%AD%E5%8B%99%E8%87%AA%E5%8B%95%E5%8C%96%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%8F%E3%83%B3%E3%83%89%E3%83%96%E3%83%83%E3%82%AF%20(Python%E5%AE%9A%E7%95%AA%E3%82%BB%E3%83%AC%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3)","a_id":3163784,"p_id":1225,"pl_id":27061,"pc_id":1925,"s_n":"yahoo","u_so":3}],"eid":"toup2","s":"l"});</script></p>
<div id="msmaflink-toup2">リンク</div>
<p><!-- MoshimoAffiliateEasyLink END --></p>



<h2 class="wp-block-heading">関連記事</h2>



<p><a href="https://www.dr-harv.com/post10524/" data-type="link" data-id="https://www.dr-harv.com/post10524/"><strong>Kindleのスクショって違法なのか？【法的リスクと利用ガイド】</strong></a></p>



<p><a href="https://www.dr-harv.com/post10599/" data-type="link" data-id="https://www.dr-harv.com/post10599/"><strong>PyautoguiでClickしてPCの画面操作を行う</strong></a></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
