Kindle Unlimited フィルタ
by
furyu-tei
2020-04-14 [2020/04/14 22:43:14]
今後は https://greasyfork.org/ja/scripts/398038-kindle-unlimited-filter を参照 (Amazon Kindle検索時にKindle Unlimitedの「□ 読み放題対象タイトル」が出ないケースでもフィルタできるようにする)
-
/*
* @title Kindle Unlimited フィルタ
* @description 今後は https://greasyfork.org/ja/scripts/398038-kindle-unlimited-filter を参照 (Amazon Kindle検索時にKindle Unlimitedの「□ 読み放題対象タイトル」が出ないケースでもフィルタできるようにする)
* @include https://www.amazon.co.jp/*
* @license MIT License
* @javascript_url
*/
( () => {
let unlimited_checkbox = document.querySelector( 'input[name="s-ref-checkbox-3169286051"]' );
// [Kindle本トップページ](https://www.amazon.co.jp/gp/browse.html?node=2275256051)等に存在するチェックボックス
if ( unlimited_checkbox && ( ! unlimited_checkbox.checked ) ) {
unlimited_checkbox.click();
return;
}
let unlimited_item = document.querySelector( '[id="p_n_feature_nineteen_browse-bin/3169286051"]' );
if ( unlimited_item ) {
unlimited_checkbox = unlimited_item.querySelector( 'input[type="checkbox"]' );
if ( unlimited_checkbox.checked ) {
return;
}
let unlimited_link = unlimited_item.querySelector( 'a[data-routing]' );
if ( unlimited_link ) {
location.href = unlimited_link.href;
return;
}
}
let category_link = document.querySelector( '[cel_widget_id="RESULT_INFO_BAR-RESULT_INFO_BAR"] a[data-routing]' );
if ( ! ( category_link && /[?&]i=digital-text(?:&|$)/.test( category_link.href ) ) ) {
// Kindleストア以外
return;
}
let query_map = [ ... new URL( location.href ).searchParams.entries() ].reduce( ( acc, cur ) => ( { ... acc, [ cur[ 0 ] ] : cur[ 1 ] } ), {} );
const
rh_unlimited = 'p_n_feature_nineteen_browse-bin:3169286051';
let rh_list = ( 'rh' in query_map ) ? query_map.rh.split( ',' ) : [];
if ( rh_list.includes( rh_unlimited ) ) {
return;
}
rh_list.push( rh_unlimited );
query_map.rh = rh_list.join( ',' );
let unlimited_url = location.href.replace( /\?.*$/, '' ) + '?' + Object.entries( query_map ).map( q => q[ 0 ] + '=' + encodeURIComponent( q[ 1 ] ) ).join( '&' );
location.href = unlimited_url;
} )();
-
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。