Kindle ツール

Kindle自動スクロール【写真集とか写真集とか】APPnium

2019年8月14日

kindle

Kindle写真集を自動スクロールさせたいときがある。
仕事をしながらサブディスプレイにグラビアアイドルさんの写真集を表示して
一定時間で次ページに進められると仕事の効率が上がる。
この記事を読むと以下の事が出来るようになる。

ココがポイント

  • Kindle写真集を自動スクロールして素早く記憶に焼きるける方法を解説。
  • 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

 

 

参考ページ

https://forest.watch.impress.co.jp/docs/news/1128952.html

これで順番にインストールしていけば大丈夫だろう。

 

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モニターを持っているのならナイスだ 😆

kindle

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++;

}

 

課題

できれば本の最大ページ数をなんとか読み込ませ、毎回プログラムをて修正しないで良いようにしたい。また、読み終わった本を自動で閉じ、返却処理まで自動化してくれると良いだろう。もうちょっと調査が必要である。

-Kindle, ツール
-, ,

Copyright© ビジネス中学 , 2019 All Rights Reserved.