kindle unlimited検索を作ってみた
kindle unlimited検索を作ってみた:
月額980円で対象電子書籍が読み放題になるkindle unlimited。サービスが発表された当初、私はkindle paperwhite端末しか持っておらず、あまりピンときていなかったのですが、先日iPad(2018年度版)を購入したことをきっかけに電子書籍熱が再発。なかでも感動してしまったのは「ナショナルジオグラフィック 日本版」でした。
iPadでみると写真が実に美しい。最新号の1つ前からだいたい半年分くらいの号は「kindle unlimited」マークがついていて、読み放題の対象となっていました。これはすばらしい。さっそく契約し、目についた気になる書籍をダウンロード。他にも、他にも! と思い、Amazon公式サイトで検索し、本を漁りはじめました。
そして問題にぶち当たりました。
検索しづらい!
まずは適当なワードで対象書籍を探してみます。
上は検索ボックスの左で「kindkeストア」を選択し、キーワード「PHPサイエンス」として検索した結果です。検索結果の左枠に「kindle Unlimited 読み放題」チェックボックスが現れました。ここにチェックをつけると、読み放題対象の本だけに絞り込んで検索できることがわかります。
さて、この画面からキーワードを「手塚治虫」に変えてみましょう。
さっきまで「読み放題」の条件で検索していたのに、読み放題対象でない本が現れてしまっています。しかも、左枠で「kindle Unlimited 読み放題」チェックボックスも消えてしまっているではないですか。なぜなのでしょうか。
検索ワードをいくつか試してみると、ワードによって左枠の「読み放題対象タイトル」チェックボックスが出たり出なかったりすることが判明しました。
どういった法則でチェックボックスが出るのか、分かりません。
とはいえ、せっかくサービスを契約したのですから、効率よく無料の本を探したいのです。
そんなわけで、作ってみることにしました。
さきほどの検索ワード「PHPサイエンス」検索では無事私の欲しい情報がページに表示されていました。このときのURLは
でした。
ここにはもしかしたら私が意図しない余計な情報が入っているかもしれません。
ここから「不要かもしれないパラメータ」を削ってみて、ページを確認。動作に問題がないぎりぎりの短いURLを探してみましょう。
→上記URLをブラウザで開くと、さきほどの検索結果画面と変わっていません。rnidパラメータはつけなくても問題なさそうです。Amazonサイト側の都合からすれば何か不都合があるかもしれませんが、私が検索で使うぶんには問題なさそうでした。
→これもOK。問題なさそうです。
→OK。ieはおそらく "input encoding"の略でしょう。
→OKでした。keywordは検索キーワードを表しているはずなので、検索結果が変わるはずだと予想していましたが、問題なく検索結果が表示されました。
→NG。検索結果が表示されず、Amazonトップページに飛ばされました。
このパラメータについては、後ほど詳しくみてみます。
→OK。もしかしたら画面のどこか見つけにくい部分が変わってしまっている可能性もありますが、検索結果エリアは問題なさそうです。
さきほど諦めたrhパラメータは
これはURLエンコードされています。デコードすると以下のような文字列になります。
上の文字列をよくみると、[n:〜], [k:〜], [p_n_feature_nineteen_browse-bin:〜]の3つの部分に分けられそうなことが予想できます。
これをひとつづつ削ってみましょう。
デコード後の文字列からp_n_feature_nineteen_browse-bin以降の文字列を削ると
これをURLエンコードすると
上記をrhパラメータの値と置き換えると
一見いけそうですが、検索結果の件数が変わってしまいました。左枠の「読み放題対象タイトル」チェックボックスが表示されていません。どうやら「p_n_feature_nineteen_browse-bin:3169286051」という文字列が「読み放題対象タイトル」かどうかの制御に使われているようです。
だめ元で k を削ってみましょう。
(デコード後)
URLエンコードすると
rhの値を上記で置き換えて
やはり予想通り検索キーワード「PHPサイエンス」は消えてしまいました。k:は検索ワードとして必要な文字列のようです。
n を削ってみましょう。デコード後の文字列は
URLエンコードすると
URLに当てはめて
結果が1列の表示ではなく4列になっていますね。結果件数も変わっています。画面上の検索ワードを入力するテキストボックスの左側エリアは、「kindleストア」ではなく「すべて」に変わりました。
n:2250738051 という文字列が「kindleストアを対象とする検索」という意味を持っているようです。
kindle以外の検索結果URLには s/s/ ではなく、 s/ がひとつしかありません。直感で上記URLから s/ をひとつ抜いても問題ありませんでした。
以上を踏まえて、
https://yoshihisamurakami.github.io/kindleunlimited-search/
ソースはこちらに置いています。
https://github.com/yoshihisamurakami/kindleunlimited-search
はじめに(なぜ作ったか?)
月額980円で対象電子書籍が読み放題になるkindle unlimited。サービスが発表された当初、私はkindle paperwhite端末しか持っておらず、あまりピンときていなかったのですが、先日iPad(2018年度版)を購入したことをきっかけに電子書籍熱が再発。なかでも感動してしまったのは「ナショナルジオグラフィック 日本版」でした。iPadでみると写真が実に美しい。最新号の1つ前からだいたい半年分くらいの号は「kindle unlimited」マークがついていて、読み放題の対象となっていました。これはすばらしい。さっそく契約し、目についた気になる書籍をダウンロード。他にも、他にも! と思い、Amazon公式サイトで検索し、本を漁りはじめました。
そして問題にぶち当たりました。
検索しづらい!
まずは適当なワードで対象書籍を探してみます。
上は検索ボックスの左で「kindkeストア」を選択し、キーワード「PHPサイエンス」として検索した結果です。検索結果の左枠に「kindle Unlimited 読み放題」チェックボックスが現れました。ここにチェックをつけると、読み放題対象の本だけに絞り込んで検索できることがわかります。
さて、この画面からキーワードを「手塚治虫」に変えてみましょう。
さっきまで「読み放題」の条件で検索していたのに、読み放題対象でない本が現れてしまっています。しかも、左枠で「kindle Unlimited 読み放題」チェックボックスも消えてしまっているではないですか。なぜなのでしょうか。
検索ワードをいくつか試してみると、ワードによって左枠の「読み放題対象タイトル」チェックボックスが出たり出なかったりすることが判明しました。
どういった法則でチェックボックスが出るのか、分かりません。
とはいえ、せっかくサービスを契約したのですから、効率よく無料の本を探したいのです。
そんなわけで、作ってみることにしました。
作成の方針(どのように作るか?)
さきほどの検索ワード「PHPサイエンス」検索では無事私の欲しい情報がページに表示されていました。このときのURLはhttps://www.amazon.co.jp/s/s/ref=sr_nr_p_n_feature_nineteen_0?fst=as%3Aoff&rh=n%3A2250738051%2Ck%3APHP%E3%82%B5%E3%82%A4%E3%82%A8%E3%83%B3%E3%82%B9%2Cp_n_feature_nineteen_browse-bin%3A3169286051&keywords=PHP%E3%82%B5%E3%82%A4%E3%82%A8%E3%83%B3%E3%82%B9&ie=UTF8&qid=1541941124&rnid=3169285051
でした。
ここにはもしかしたら私が意図しない余計な情報が入っているかもしれません。
ここから「不要かもしれないパラメータ」を削ってみて、ページを確認。動作に問題がないぎりぎりの短いURLを探してみましょう。
作業記録
step1. rnid(パラメータを削る)
https://www.amazon.co.jp/s/s/ref=sr_nr_p_n_feature_nineteen_0?fst=as%3Aoff&rh=n%3A2250738051%2Ck%3APHP%E3%82%B5%E3%82%A4%E3%82%A8%E3%83%B3%E3%82%B9%2Cp_n_feature_nineteen_browse-bin%3A3169286051&keywords=PHP%E3%82%B5%E3%82%A4%E3%82%A8%E3%83%B3%E3%82%B9&ie=UTF8&qid=1541941124
→上記URLをブラウザで開くと、さきほどの検索結果画面と変わっていません。rnidパラメータはつけなくても問題なさそうです。Amazonサイト側の都合からすれば何か不都合があるかもしれませんが、私が検索で使うぶんには問題なさそうでした。
step2. qid
https://www.amazon.co.jp/s/s/ref=sr_nr_p_n_feature_nineteen_0?fst=as%3Aoff&rh=n%3A2250738051%2Ck%3APHP%E3%82%B5%E3%82%A4%E3%82%A8%E3%83%B3%E3%82%B9%2Cp_n_feature_nineteen_browse-bin%3A3169286051&keywords=PHP%E3%82%B5%E3%82%A4%E3%82%A8%E3%83%B3%E3%82%B9&ie=UTF8
→これもOK。問題なさそうです。
step3. ie
https://www.amazon.co.jp/s/s/ref=sr_nr_p_n_feature_nineteen_0?fst=as%3Aoff&rh=n%3A2250738051%2Ck%3APHP%E3%82%B5%E3%82%A4%E3%82%A8%E3%83%B3%E3%82%B9%2Cp_n_feature_nineteen_browse-bin%3A3169286051&keywords=PHP%E3%82%B5%E3%82%A4%E3%82%A8%E3%83%B3%E3%82%B9
→OK。ieはおそらく "input encoding"の略でしょう。
step4. keyword
https://www.amazon.co.jp/s/s/ref=sr_nr_p_n_feature_nineteen_0?fst=as%3Aoff&rh=n%3A2250738051%2Ck%3APHP%E3%82%B5%E3%82%A4%E3%82%A8%E3%83%B3%E3%82%B9%2Cp_n_feature_nineteen_browse-bin%3A3169286051
→OKでした。keywordは検索キーワードを表しているはずなので、検索結果が変わるはずだと予想していましたが、問題なく検索結果が表示されました。
step5. rh
https://www.amazon.co.jp/s/s/ref=sr_nr_p_n_feature_nineteen_0?fst=as%3Aoff
→NG。検索結果が表示されず、Amazonトップページに飛ばされました。
このパラメータについては、後ほど詳しくみてみます。
step6. fst
https://www.amazon.co.jp/s/s/ref=sr_nr_p_n_feature_nineteen_0?rh=n%3A2250738051%2Ck%3APHP%E3%82%B5%E3%82%A4%E3%82%A8%E3%83%B3%E3%82%B9%2Cp_n_feature_nineteen_browse-bin%3A3169286051
→OK。もしかしたら画面のどこか見つけにくい部分が変わってしまっている可能性もありますが、検索結果エリアは問題なさそうです。
rhパラメータについて詳しく
さきほど諦めたrhパラメータはn%3A2250738051%2Ck%3APHP%E3%82%B5%E3%82%A4%E3%82%A8%E3%83%B3%E3%82%B9%2Cp_n_feature_nineteen_browse-bin%3A3169286051
n:2250738051,k:PHPサイエンス,p_n_feature_nineteen_browse-bin:3169286051
これをひとつづつ削ってみましょう。
step1. p_n_feature_nineteen_browse-bin
デコード後の文字列からp_n_feature_nineteen_browse-bin以降の文字列を削るとn:2250738051,k:PHPサイエンス
n%3A2250738051%2Ck%3APHP%E3%82%B5%E3%82%A4%E3%82%A8%E3%83%B3%E3%82%B9
https://www.amazon.co.jp/s/s/ref=sr_nr_p_n_feature_nineteen_0?rh=n%3A2250738051%2Ck%3APHP%E3%82%B5%E3%82%A4%E3%82%A8%E3%83%B3%E3%82%B9
一見いけそうですが、検索結果の件数が変わってしまいました。左枠の「読み放題対象タイトル」チェックボックスが表示されていません。どうやら「p_n_feature_nineteen_browse-bin:3169286051」という文字列が「読み放題対象タイトル」かどうかの制御に使われているようです。
step2. k
だめ元で k を削ってみましょう。(デコード後)
n:2250738051,p_n_feature_nineteen_browse-bin:3169286051
n%3A2250738051%2Cp_n_feature_nineteen_browse-bin%3A3169286051
https://www.amazon.co.jp/s/s/ref=sr_nr_p_n_feature_nineteen_0?rh=n%3A2250738051%2Cp_n_feature_nineteen_browse-bin%3A3169286051
やはり予想通り検索キーワード「PHPサイエンス」は消えてしまいました。k:は検索ワードとして必要な文字列のようです。
step3. n
n を削ってみましょう。デコード後の文字列はk:PHPサイエンス,p_n_feature_nineteen_browse-bin:3169286051
k%3APHP%E3%82%B5%E3%82%A4%E3%82%A8%E3%83%B3%E3%82%B9%2Cp_n_feature_nineteen_browse-bin%3A3169286051
https://www.amazon.co.jp/s/s/ref=sr_nr_p_n_feature_nineteen_0?rh=k%3APHP%E3%82%B5%E3%82%A4%E3%82%A8%E3%83%B3%E3%82%B9%2Cp_n_feature_nineteen_browse-bin%3A3169286051
結果が1列の表示ではなく4列になっていますね。結果件数も変わっています。画面上の検索ワードを入力するテキストボックスの左側エリアは、「kindleストア」ではなく「すべて」に変わりました。
n:2250738051 という文字列が「kindleストアを対象とする検索」という意味を持っているようです。
その他
kindle以外の検索結果URLには s/s/ ではなく、 s/ がひとつしかありません。直感で上記URLから s/ をひとつ抜いても問題ありませんでした。
結果
以上を踏まえて、- kindleストアで検索
- 「読み放題対象タイトル」にチェック
- 検索キーワード「PHPサイエンス」を含めた検索
https://www.amazon.co.jp/s/ref=sr_nr_p_n_feature_nineteen_0?rh=n%3A2250738051%2Ck%3APHP%E3%82%B5%E3%82%A4%E3%82%A8%E3%83%B3%E3%82%B9%2Cp_n_feature_nineteen_browse-bin%3A3169286051
成果物
https://yoshihisamurakami.github.io/kindleunlimited-search/ソースはこちらに置いています。
https://github.com/yoshihisamurakami/kindleunlimited-search
蛇足(私のおすすめ)
- 山田 祥寛 (javascript本を多数出版されています。お世話になります。)
- PHPサイエンス・ワールド新書 (もう新作は出版されていないらしいく残念なのですが、サイエンス系の良書が多数出版されています。)
- 光文社新書 (科学系、美術系の読み物に良書が埋もれています)
コメント
コメントを投稿