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 です。

History

  1. 2020/04/14 22:43:14 - 2020-04-14
  2. 2020/03/14 02:14:52 - 2020-03-14
  3. 2020/03/07 05:47:22 - 2020-03-07
  4. 2020/03/07 05:29:28 - 2020-03-07
  5. 2020/03/07 05:28:14 - 2020-03-07