Kindle写真集を自動スクロールさせたいときがある。
仕事をしながらサブディスプレイにグラビアアイドルさんの写真集を表示して
一定時間で次ページに進められると仕事の効率が上がる。
この記事を読むと以下の事が出来るようになる。
ココがポイント
- Kindle写真集を自動スクロールして素早く記憶に焼きるける方法を解説。
- Kindle写真集ではなく、仕事で使う場合「君たちはどう画面キャプチャを取るべきか」
目次【本記事の内容】
- 1.Kindle写真集を自動スクロールをして素早く記憶に焼きるける方法を解説。
- 1-1.Kindle写真集自動スクロールに必要なソフトウェアを準備する。
- 1-2.Kindle写真集ページめくりに必要なソースコード
- 1-3.Kindle写真集ページめくりを実行
- 2.Kindle写真集ではなく、仕事で使う場合「君たちはどう画面キャプチャを取るべきか」
- 2-1.Kindleではなく、システム開発のテストの時に使いたい
1.Kindle写真集を自動スクロールをして素早く記憶に焼きるける方法を解説。
1-1.Kindle写真集自動スクロールに必要なソフトウェアを準備する。
参考サイト
必要なソフトウェア一覧
1. Appium
http://appium.io/index.html?lang=ja
2. Microsoft WinAppDriver
https://github.com/Microsoft/WinAppDriver/releases
3. Visual Studio 2017
仕事で使わないのであればフリーのCommunity Editionで十分。
https://visualstudio.microsoft.com/ja/vs/community/
4. UIレコーダー
アプリケーションを操作した記録をC#でテストコードとして生成してくれるようだ。
しかし私が試したところKindleでは記録したソースでは正常に動作しなかった。
仕事では.Net Frameworkを使用しているので備忘として記録しておく。
https://github.com/Microsoft/WinAppDriver/tree/master/Tools/UIRecorder
参考ページ
5. Kindle for PC
これはあまりバージョンに影響しないと思うが、念の為この時点での最新バージョン1.25.1を使用していることを記載しておく。
https://www.amazon.co.jp/gp/digital/fiona/kcp-landing-page/ref=amb_link_11
動作環境
自分の動作環境はWindows10 Pro 1809
ココに注意
Windows10以外はMicrosoft WinAppDriverがサポートしていないとのことで注意されたし。
1-2.Kindle写真集ページめくりに必要なソースコード
using System; using System.Diagnostics; using OpenQA.Selenium; using OpenQA.Selenium.Appium.Windows; using OpenQA.Selenium.Remote; namespace AppiumSample { class Program { public static void Main(string[] args) { //Windows Application Driver実行 string serverPath = System.IO.Path.Combine( System.Environment.GetFolderPath( System.Environment.SpecialFolder.ProgramFilesX86 ), @"Windows Application Driver", "WinAppDriver.exe" ); System.Diagnostics.Process.Start(serverPath); DesiredCapabilities appCapabilities = new DesiredCapabilities(); appCapabilities.SetCapability("app", "C:\Users\norihiko\AppData\Local\Amazon\Kindle\application\Kindle.exe"); RemoteWebDriver driver = new RemoteWebDriver(new Uri(@"http://127.0.0.1:4723"), appCapabilities); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(3)); driver.FindElementByName("フルスクリーン").Click(); //TODO:Kindleで最大ページ数を取ることが出来ず、ここは毎回手で書き直している。 for (int i = 1; i <= 100; i ++) { driver.FindElementByName("Turn Page").Click(); } driver.Dispose(); driver = null; Console.Write("Press any key to continue . . . "); Console.ReadKey(true); } }
1-3.Kindle写真集ページめくりを実行
Kindleの自動スクロールをする前に確認しなければならないことがある。順番に確認していこう。
step
1
写真集が何ページあるか確認しよう。
ソースコードの29行目でFor分を何回ループするかに影響する。
step
2
全画面表示したときに2ページ分表示されるか1ページ分しか表示されないかを確認する。
これも何回ループするかに影響する。2ページ分表示されるならステップ1で求めた全体ページ数÷2(端数切り上げ)でループの上限を書き換える。
なんで全画面表示にするかというと、せっかくの写真なのだから最高画質でみたいだろう。もし君が4Kモニターを持っているのならナイスだ 😆
step
3
本が左めくりか右めくりか確認する。
残念ながら本プログラムは左めくりにしか対応していない。理由としてはページをスクロールするボタンが左右に2つある。
これらボタンのコントロール名が同じため、1つ目にヒットするのが必ず左のページに進むボタンの為だ。
だから右にページがスクロールするタイプの写真集であれば最終ページに移動してからVisual Studioからプログラムを実行する必要がある。
左めくりだったら1ページ目を表示しておいて実行。
step
4
Visual Studioからプログラムを実行する。
さあ、何も悩むことはない。あとは実行あるのみだ。
2.Kindle写真集ではなく、仕事で使う場合「君たちはどう画面キャプチャを取るべきか」
2-1.Kindleではなく、システム開発のテストの時に使いたい
もともと私もシステム開発の仕事をしていて、テストを自動化することを考えていた副産物としてこのアイデアを思いついた。
アプリケーションの自動化を求めてこのページに来てしまった人には申し訳ないので念の為画面キャプチャの撮り方を書いておこう。
システム開発を仕事としている人だったら以下のソースを組み込むのはたやすいだろう。
driver.FindElementByName("Turn Page").Click(); Screenshot screenshot = driver.GetScreenshot(); string fileName = "c:\Pictures\test01\" + j + ".jpg"; //念の為ファイルが既にある場合は上書きしないようにする。 if (System.IO.File.Exists(fileName)) { return; } else { screenshot.SaveAsFile(fileName, System.Drawing.Imaging.ImageFormat.Jpeg); j++; }
課題
できれば本の最大ページ数をなんとか読み込ませ、毎回プログラムをて修正しないで良いようにしたい。また、読み終わった本を自動で閉じ、返却処理まで自動化してくれると良いだろう。もうちょっと調査が必要である。