記事の選択操作を拡張

検索結果のリストページ内で、

 

 ➔ 「⇧」「⇩」キーで記事を選択を

 ➔ 「Enter」キーで選択した記事を開く

 

というキー操作を実現しましたが、リストページから選択した記事ページへ画面が遷移するので、それまでの検索結果やチェックした経過が見えなくなります。

 

Alt+ ⇦」のショートカットで、遷移前の画面に戻れますが、単に記事を見つけるだけではない作業で「遷移」は困るので、別タブに開きたい場合は多いものです。

 

そこで、「Ctrl+Enter」で「別タブ」に記事を開く様にしました。 この操作で開いた別タブの記事を見るには「Ctrl+Tab」のショートカットが使えます。

 

ここまでの操作は、全てマウスに手を触れずにキーボードの操作で行えます。 大量の記事をチェックする作業では、キー操作に慣れると時間を節約できます。

 

 

 

「Ameba Search Tools」を利用するには

このツールは Chrome / Edge / Firefox版の拡張機能「Tampermonkey」上で動作します。 以下に、このツールの導入手順を簡単に説明します。

 

❶「Tampermonkey」を導入します

◎ 使用しているブラウザに拡張機能「Tampermonkey」を導入する事が必要です。

既に「Tampermonkey」を導入している場合は、この手順 ❶ は不要です。 

拡張機能の導入については、以下のページに簡単な説明があるので参照ください。

 

 

❷「Tampermonkey」にスクリプトを登録します

◎「Tampermonkey」の「」マークの「新規スクリプト」タブを開きます。

 

 

 

◎「新規スクリプト」には、最初からテンプレートが記入されています。 これは全て削除して、完全に空白の編集枠に 下のコードをコピー&ペーストします。

 

〔コピー方法〕 軽量シンプルなツール「PreBox Button   」を使うと

  コード枠内を「Ctrl+左Click」➔「Copy code 」を「左Click」

  の操作で、掲載コードのコピーが可能になります。

 

◎ 最後に「ファイル」メニューの「保存」を押すと、ツールが使用可能になります。

 

 

〔 Ameba Search Tools 〕 ver. 0.2

 

// ==UserScript==
// @name         Ameba Search Tools
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  アメーバ検索の環境ツール
// @author       Ameba Blog User
// @match        https://search.ameba.jp/*
// @icon           https://www.google.com/s2/favicons?sz=64&domain=ameba.jp
// @grant         none
// ==/UserScript==


let target=document.querySelector('head');
let monitor=new MutationObserver(page_select);
monitor.observe(target, { childList: true });


function page_select(){
    if(document.querySelector('.PcResultPagination')){
        main(); }}


function main(){

    let now;
    let now_u;
    let now_s;
    let q;
    let now_s_q;
    let now_s_pre;
    let now_s_next;
    let pre_url;
    let next_url;


    function get_pre_url(){
        now=location.href;
        now_u=now.split('?')[0];
        now_s=now.split('?')[1];

        if(now_s){
            q=now_s.split('&');
            for(let k=0; k<q.length; k++){
                if(q[k].indexOf('p=')!=-1){
                    now_s_q=q[k]; }}

            let now_page;
            if(now_s_q){
                now_page=now_s_q.substr(2);

                if(now_page/1==1){
                    now_s_pre='p=1'; }
                else{
                    now_s_pre='p='+ (now_page/1 -1); }
                if(now_s_pre){
                    for(let k=0; k<q.length; k++){
                        if(q[k].indexOf('p=')!=-1){
                            q[k]=now_s_pre; }}
                    pre_url=now_u +'?'+ q.join('&'); }}
            else{
                pre_url=now +'&p=1'; }}
        else{
            pre_url=now +'?p=1'; }

    } // get_pre_url()


    function get_next_url(){
        now=location.href;
        now_u=now.split('?')[0];
        now_s=now.split('?')[1];

        if(now_s){
            q=now_s.split('&');
            for(let k=0; k<q.length; k++){
                if(q[k].indexOf('p=')!=-1){
                    now_s_q=q[k]; }}

            let now_page;
            if(now_s_q){
                now_page=now_s_q.substr(2);

                if(now_page/1==100){
                    now_s_next='p=100'; }
                else{
                    now_s_next='p='+ (now_page/1 +1); }
                if(now_s_next){
                    for(let k=0; k<q.length; k++){
                        if(q[k].indexOf('p=')!=-1){
                            q[k]=now_s_next; }}
                    next_url=now_u +'?'+ q.join('&'); }}
            else{
                next_url=now +'&p=1'; }}
        else{
            next_url=now +'?p=1'; }

    } // get_next_url()



    document.addEventListener("keydown", check_arrow);
    function check_arrow(event){
        if(event.keyCode==37){ //「⇦」
            event.preventDefault();
            go_pre(); }
        if(event.keyCode==39){ //「⇨」
            event.preventDefault();
            go_next() }
        if(event.keyCode==38){ //「⇧」
            event.preventDefault();
            select_up(); }
        if(event.keyCode==40){ //「⇩」
            event.preventDefault();
            select_down() }
        if(event.keyCode==13){ //「Enter」
            event.preventDefault();
            select_open(event); }}


    function go_pre(){
        if(go_check(0)){
            get_pre_url();
            if(pre_url){
                location.href=pre_url; }}}


    function go_next(){
        if(go_check(1)){
            get_next_url();
            if(next_url){
                location.href=next_url; }}}


    function go_check(n){
        if(n==0){
            let edge=document.querySelector('.PcResultPagination_MoreLink .s-triangle-left');
            if(edge){
                return true; }
            else{
                return false; }}
        if(n==1){
            let edge=document.querySelector('.PcResultPagination_MoreLink .s-triangle-right');
            if(edge){
                return true; }
            else{
                return false; }}}


    let items;

    function get_items(){
        let PcBL=document.querySelectorAll('.PcBloggerListItem');
        let PcAN=document.querySelectorAll('.PcAmebaNewsListItem');
        let PcEL=document.querySelectorAll('.PcEntryListItem');

        if(PcBL.length!=0){
            items=PcBL; }
        else if(PcAN.length!=0){
            items=PcAN; }
        else if(PcEL.length!=0){
            items=PcEL; }
    } // get_items()


    let order=-1;

    function select_up(){
        get_items();
        if(order>0){
            for(let k=0; k<items.length; k++){
                items[k].style.outline=''; }
            order=order-1;
            items[order].style.outline='2px solid #2196f3'; }}


    function select_down(){
        get_items();
        if(order<items.length-1){
            for(let k=0; k<items.length; k++){
                items[k].style.outline=''; }
            order=order+1;
            items[order].style.outline='2px solid #2196f3'; }}


    function select_open(event){
        get_items();
        for(let k=0; k<items.length; k++){
            if(items[k].style.outlineWidth=='2px'){
                let link=items[k].querySelector('a');
                if(link){
                    let url=link.getAttribute('href');
                    if(event.ctrlKey){
                        window.open(url, '_blank'); }
                    else{
                        window.location.href=url; }}}}}


    let s_input=document.querySelector('.PcSuggestForm_Input');
    if(s_input){
        s_input.onclick=function(){
            get_items();
            for(let k=0; k<items.length; k++){
                items[k].style.outline=''; }}}

} // main()




 

 

 

アメーバ検索のページデザインについて 

このページの「アメーバ検索画面」のスクリーンショットは、「Stylus」を使ったアレンジを適用しています。 以下のアレンジは、検索画面を大変に使い易くします。

 

 

 

これらのアレンジを検索画面に適用するには、拡張機能「Stylus」の導入が必要です。「Stylus」の導入やスタイルの取得については、以下のページを参照ください。

 

 

 

 

「Ameba Search Tools」最新版について 

旧いバージョンの JavaScriptツールは、アメーバのページ構成の変更で動作しない場合があり、導入する場合は最新バージョンをお勧めします。

 

●「Ameba Search Tools」の最新バージョンへのリンクは、以下のページのリンクリストから探せます。