「Bad Iine Mute / Bad Iine Mute BlogPage」ver. 1.5
今回の更新は、「いいね!履歴」画面のリスト及び「いいね!ダイアログ」と、ブログページの「いいね!ダイアログ」で、ユーザーアイコンのSRCの取得機能を追加しました。 そのため、両方のツールでコード更新を行っています。
これらのツールの基本的な操作については、以下のページを参照ください。
ツールを導入するには
「Bad Iine Mute」「Bad Iine Mute BlogPage」は Chrome / 新Edge / Firefox の拡張機能「Tampermonkey」上で動作するスクリプトツールです。
❶「Tampermonkey」を導入します
◎ 使用しているブラウザに拡張機能「Tampermonkey」を導入する事が必要です。
既に「Tampermonkey」を導入している場合は、この手順 ❶ は不要です。
拡張機能の導入については、以下のページに簡単な説明があるので参照ください。
❷「Tampermonkey」にスクリプトを登録します
◎「Tampermonkey」の「+」マークの「新規スクリプト」タブを開きます。
◎「新規スクリプト」には、最初からテンプレートが記入されています。 これは全て削除して、完全に空白の編集枠に 下のコードをコピー&ペーストします。
〔コピー方法〕 軽量シンプルなツール「PreBox Button 」を使うと
コード枠内を「Ctrl+左Click」➔「Copy code 」を「左Click」
の操作で、掲載コードのコピーが可能になります。
◎ 最後に「ファイル」メニューの「保存」を押すと、ツールが使用可能になります。
「Bad Iine Mute / Bad Iine Mute Blogpage」は別個に登録してください
この2個のツールは、「Tampermonkey」に2個のスクリプトツールとして、別個に登録してください。( ❷ の操作を2回 繰り返す事になります)
ページの文字数制限のために、「Bad Iine Mute Blogpage ver. 1.5」のスクリプトコードは、次ページの末尾に掲載しています。
〔 Bad Iine Mute 〕ver. 1.5
// ==UserScript==
// @name Bad Iine Mute
// @namespace http://tampermonkey.net/
// @version 1.5
// @description 「管理画面」から不良な「いいね!」を非表示にする
// @author Ameba Blog User
// @match https://blog.ameba.jp/ucs/top*
// @match https://blog.ameba.jp/ucs/iine/list.html*
// @grant none
// ==/UserScript==
let iine_block_data={}; // 総合ブロックデータ
let iine_block_id=[];
let iine_block_img=[];
let block_filter_id;
let block_regex_id;
let block_filter_img;
let block_regex_img;
let edit_mode=0;
let find_img_src='';
let ua=0;
let agent=window.navigator.userAgent.toLowerCase();
if(agent.indexOf('firefox') > -1){ ua=1; } // Firefoxの場合のフラッグ
let read_json=localStorage.getItem('iine_id_back'); // ローカルストレージ 保存名
iine_block_data=JSON.parse(read_json);
if(iine_block_data==null){
iine_block_data=[['tmp1', 'img1'], ['tmp2', 'img2']]; }
reg_set();
function reg_set(){
iine_block_id=[];
iine_block_img=[];
for(let k=0; k<iine_block_data.length; k++){
iine_block_id[k]=iine_block_data[k][0];
iine_block_img[k]=iine_block_data[k][1]; }
block_filter_id=iine_block_id.join('|');
block_regex_id=RegExp(block_filter_id);
block_filter_img=iine_block_img.join('|');
block_regex_img=RegExp(block_filter_img); }
let target0=document.querySelector('#contents'); // 監視 target
let monitor0=new MutationObserver(mode_select);
monitor0.observe(target0, {childList: true, subtree: true}); // 監視開始
mode_select();
function mode_select(){
if(document.querySelector('#iineEntry')){ // 管理トップ
monitor0.disconnect();
let div_iine=document.querySelector('#iine');
div_iine.style.position='relative';
div_iine.style.zIndex='10';
let iine_title=document.querySelector('#iineEntry .ttl');
let iine_th=document.querySelectorAll('#iineEntry th');
title_disp(iine_th[0], iine_th[1]);
iine_th[0].textContent='💛 いいね!された記事';
iine_th[0].style.fontWeight='bold';
monitor0.observe(target0, {childList: true, subtree: true});
iine_title.onclick=function(event){
event.preventDefault();
if(event.altKey==true){ //「Altキー + 左クリック」
if(edit_mode==0){
edit_mode=1;
file_backup(); } // ファイル保存 管理トップ
else{
edit_mode=0;
file_backup_end(); }}
else{
if(edit_mode==0){
edit_mode=1; }
else if(edit_mode==1){
edit_mode=0;
file_backup_end(); }}
blocker();
title_disp(iine_th[0], iine_th[1]); }}
if(document.querySelector('#iineHistoryEntryFrame')){ // 履歴 タブ1
let iine_title=document.querySelector('#iineHistoryEntryFrame .ttl');
let iine_th=document.querySelectorAll('#iineHistoryEntryFrame th');
monitor0.disconnect();
open_more(0);
end_more();
title_disp(iine_th[0], iine_th[1]);
iine_th[0].textContent='💛 いいね!された記事';
monitor0.observe(target0, {childList: true, subtree: true});
iine_title.onclick=function(event){
event.preventDefault();
if(event.altKey==true){ //「Altキー + 左クリック」
if(edit_mode==0){
edit_mode=1;
file_backup(); } // ファイル保存 履歴タブ1
else{
edit_mode=0;
file_backup_end();
find_user_end(); }}
else if(event.ctrlKey==true){ //「Ctrlキー + 左クリック」
if(edit_mode==0){
edit_mode=2;
find_user(); } // ユーザー履歴検索 履歴タブ1
else{
edit_mode=0;
file_backup_end();
find_user_end(); }}
else{
if(edit_mode==0){
edit_mode=1; }
else if(edit_mode==1){
edit_mode=0;
file_backup_end(); }
else if(edit_mode==2){
edit_mode=0;
find_user_end(); }}
title_disp(iine_th[0], iine_th[1]);
blocker(); }}
if(document.querySelector('#iineHistoryUserFrame')){ // 履歴 タブ2
let iine_title=document.querySelector('#iineHistoryContent tr:first-child');
let iine_th=document.querySelectorAll('#iineHistoryUserFrame th');
monitor0.disconnect();
open_more(1);
end_more();
title_disp(iine_th[0], iine_th[1]);
iine_th[0].textContent=' 💛';
monitor0.observe(target0, {childList: true, subtree: true});
iine_title.onclick=function(event){
event.preventDefault();
if(event.ctrlKey==true){ //「Ctrlキー + 左クリック」
if(edit_mode==0 || edit_mode==1){
edit_mode=2;
find_user(); }
else{
edit_mode=0
find_user_end(); }}
else{
if(edit_mode==0){
edit_mode=1; }
else{
edit_mode=0;
find_user_end(); }}
title_disp(iine_th[0], iine_th[1]);
blocker(); }}
} // mode_select()
function title_disp(th0, th1){
if(edit_mode==0){
th0.style.boxShadow='none';
th1.style.boxShadow='none';
th0.style.color='#666';
th1.style.color='#666'; }
else if(edit_mode==1){
th0.style.boxShadow='inset 0 0 0 20px red';
th1.style.boxShadow='inset 0 0 0 20px red';
th0.style.color='#fff';
th1.style.color='#fff'; }
else if(edit_mode==2){
th0.style.boxShadow='inset 0 0 0 20px #2196f3';
th1.style.boxShadow='inset 0 0 0 20px #2196f3';
th0.style.color='#fff';
th1.style.color='#fff'; }}
function open_more(n){
let more=document.querySelector('.moreLinkBottom');
let item;
if(n==0){
item=document.querySelectorAll('#iineHistoryEntryFrame tr'); }
if(n==1){
item=document.querySelectorAll('#iineHistoryUserFrame tr'); }
if(more && item.length<18){ // リストを18行まで自動で開く 🔴
more.click(); }}
function end_more(){
let senser=0;
let next=0;
let interval;
let list_frame=document.querySelector('#iineHistoryContent');
if(list_frame){
let css=
'#iineHistoryContent table { position: relative; } '+
'#iineHistoryContent tbody { overflow-y: scroll; margin-top: 34px; '+
'height: calc( 100vh - 220px); border-bottom: 1px solid #ccc; display: block; } '+
'.tableList th { width: inherit; font-size: 14px; padding: 8px 4px 6px; '+
'text-align: center !important; background: #f4f4f4; } '+
'#iineHistoryContent tr:first-child { position: absolute; z-index: 1; width: 786px; '+
'top: 1px; left: -1px; border-left: 1px solid #ccc; border-right: 1px solid #ccc; } '+
'#ucsMain #moreLoading { margin: -3px auto; } '+
'#ucsMain .moreLinkBottom span { '+
'background-position: 0 4px; font-size: 14px; } '+
'#iineHistoryEntryFrame:after { content: "Space: 連続スクロール / 停止"; '+
'position: absolute; right: 10px; border: 1px solid #aaa; margin: 2px 0 0; '+
'padding: 2px 6px 0; font-size: 14px; font-weight: bold; color: #888; }' +
'#footerAd, #globalFooter { display: none; }';
let style_tag=document.createElement("style"); // css設定styleタグ
style_tag.setAttribute('id', 'bim');
style_tag.textContent=css;
if(!list_frame.querySelector('#bim')){
list_frame.appendChild(style_tag); }}
document.addEventListener('keydown', function(event){
event.stopImmediatePropagation();
if(event.keyCode==32){
if(next==0){
next=1;
interval=setInterval(
function(){
go();
stop();
view_end();
senser+=1;
}, 500); }
else{
next=0;
clearInterval(interval); }}
function go(){
let more=document.querySelector('.moreLinkBottom');
if(more && next==1){
more.click();
senser=0; }}
function stop(){
if(senser>8){
senser=0;
next=0;
clearInterval(interval); }}});
function view_end(){
let list_body;
if(document.querySelector('#iineHistoryEntryFrame tbody')){
list_body=document.querySelector('#iineHistoryEntryFrame tbody'); }
if(document.querySelector('#iineHistoryUserFrame tbody')){
list_body=document.querySelector('#iineHistoryUserFrame tbody'); }
let bottom=list_body.scrollHeight - list_body.clientHeight;
list_body.scroll(0, bottom); }
} //end_more()
let target1=document.querySelector('#contents'); // 監視 target
let monitor1=new MutationObserver(blocker);
monitor1.observe(target1, {childList: true, subtree: true}); // 監視開始
function blocker(){
let k;
let user_href=[];
let iineImg=[];
let iine_span=[];
let iine_tr=[];
let Img_src=[];
if(document.querySelector('#iineEntry')){ // 管理トップ
let iine_img=document.querySelectorAll('#iineEntry .img');
for(k=0; k<iine_img.length; k++){
iine_img[k].style.padding='2px'; }
iineImg=document.querySelectorAll('#iineEntry img');
for(k=0; k<iineImg.length; k++){ // ユーザーアイコンのマスク
Img_src[k]=iineImg[k].getAttribute('src');
if(block_regex_img.test(Img_src[k])==true){
if(edit_mode==0){
iineImg[k].style.display='none'; }
else{
iineImg[k].style.display='block';
iineImg[k].style.outline='2px solid red'; }}
else{
iineImg[k].style.display='block';
iineImg[k].style.outline='none'; }}}
if(document.querySelector('#iineHistoryEntryFrame')){ // 履歴 タブ1
iine_span=document.querySelectorAll('.userImg span');
iineImg=document.querySelectorAll('.userImg img');
for(k=0; k<iineImg.length; k++){ // ユーザーアイコンのマスク
Img_src[k]=iineImg[k].getAttribute('src');
if(block_regex_img.test(Img_src[k])==true){
if(edit_mode==0 || edit_mode==2){
iine_span[k].style.display='none'; }
else{
iine_span[k].style.display='inline-block';
iine_span[k].style.outline='2px solid red'; }}
else{
iine_span[k].style.display='inline-block';
iine_span[k].style.outline='none'; }}
get_src();
find_user();
blue_user(); }
if(document.querySelector('#iineHistoryUserFrame')){ // 履歴 タブ2
iine_tr=document.querySelectorAll('#iineHistoryUserFrame tr');
for(k=1; k<iine_tr.length; k++){ // ユーザーアイコンのマスク
if(iine_tr[k].querySelector('.heading a')){
user_href[k]=iine_tr[k].querySelector('.heading a').getAttribute('href');
if(block_regex_id.test(user_href[k])==true){
if(edit_mode==0 || edit_mode==2){
iine_tr[k].style.display='none'; }
else{
iine_tr[k].style.display='table-row';
iine_tr[k].style.boxShadow='inset 0 0 0 1px #fff,inset 0 0 0 3px red'; }}
else{
iine_tr[k].style.display='table-row';
iine_tr[k].style.boxShadow='none'; }}}
get_src();
find_user();
blue_user(); }
} // blocker()
let target2=document.querySelector('body'); // 監視 target
let monitor2=new MutationObserver(blocker_dia);
monitor2.observe(target2, {childList: true, subtree: true}); // 監視開始
function blocker_dia(){
let k;
let user_li=[];
let user_href=[];
if(document.querySelector('#iineEntry')){ // 管理トップ
smart(0);
let header=document.querySelector('#iineEntryFrame .header');
let header_link=document.querySelector('#iineEntryFrame .header a');
let header_count=document.querySelector('#iineEntryFrame .header p span');
let close=document.querySelector('#iineEntryFrame .header .closeBtn');
if(header && edit_mode==0){
header.style.background='#f7f7f7';
header_link.style.color='#06c';
header_link.style.pointerEvents='auto';
header_count.style.color="red"; }
if(header && close && edit_mode==1){
header.style.background='red';
header_link.style.color='#fff';
header_link.style.pointerEvents='none';
header_count.style.color="#fff";
header.onclick=function(){
close.click(); }}
user_li=document.querySelectorAll('#iineEntoryContents li');
if(user_li.length !=0){
for(k=0; k<user_li.length; k++){ // ダイアログのリストのマスク
if(user_li[k].querySelector('a')){
user_href[k]=user_li[k].querySelector('a').getAttribute('href');
if(block_regex_id.test(user_href[k])==true){
if(edit_mode==0){
user_li[k].style.display='none';
user_li[k].style.outline='none'; }
else{
user_li[k].style.display='block';
user_li[k].style.outline='2px solid red';
user_li[k].style.outlineOffset='-3px'; }}
else{
user_li[k].style.outline='none'; }}}}}
if(document.querySelector('#iineHistoryEntryFrame')){ // 履歴 タブ1
smart(1);
let header=document.querySelector('#iineEntryHeader');
let header_link=document.querySelector('#iineEntryHeader a');
let header_count=document.querySelector('#iineEntryHeader .tx_orageA');
let close=document.querySelector('#iineCloseBtn');
if(header && header_link && edit_mode==0){
header.style.background='#f7f7f7';
header_link.style.color='#06c';
header_link.style.pointerEvents='auto';
header_count.style.color='red'; }
else if(header && header_link && edit_mode==2){
header.style.background='#2196f3';
header_link.style.color='#fff';
header_link.style.pointerEvents='auto';
header_count.style.color='#fff'; }
else if(header && header_link && close && edit_mode==1){
header.style.background='red';
header_link.style.color='#fff';
header_link.style.pointerEvents='none';
header_count.style.color='#fff';
header.onclick=function(){
close.click(); }}
user_li=document.querySelectorAll('#iineEntryContents li');
if(user_li.length !=0){
for(k=0; k<user_li.length; k++){ // ダイアログのリストのマスク
if(user_li[k].querySelector('a')){
user_href[k]=user_li[k].querySelector('a').getAttribute('href');
if(block_regex_id.test(user_href[k])==true){
if(edit_mode==0 || edit_mode==2){
user_li[k].style.display='none';
user_li[k].style.boxShadow='none'; }
else{
user_li[k].style.display='block';
user_li[k].style.boxShadow='#fff 0 0 0 1px inset, red 0 0 0 3px inset'; }}
else{
user_li[k].style.boxShadow='none'; }}}}
get_src();
blue_user_dia(); }
} // blocker_dia()
function smart(n){
if(n==0){
let headerT=document.querySelector('#iineEntryFrame .header p');
if(headerT){
headerT.style.fontSize='0';
let title=headerT.querySelector('#iineEntryFrame .header p a');
if(title){
title.style.fontSize='14px';
title.style.padding='0 1em 0 .5em'; }
let count=headerT.querySelector('#iineEntryFrame .header p span');
if(count){
count.style.fontSize='14px';
count.style.fontWeight='bold'; }}}
if(n==1){
let headerT=document.querySelector('#iineEntryHeader p');
if(headerT){
headerT.style.fontSize='0';
let title=headerT.querySelector('#iineEntryHeader .tx_bold');
if(title){
title.style.fontSize='14px';
title.style.padding='0 1em 0 .5em'; }
let count=headerT.querySelector('#iineEntryHeader .tx_orageA');
if(count){
count.style.fontSize='14px';
count.style.fontWeight='bold'; }}}}
let target3=document.querySelector('body'); // 監視 target
let monitor3=new MutationObserver(checker);
monitor3.observe(target3, {childList: true, subtree: true, attributes: true}); // 監視開始
function checker(){
let k;
let user_li=[];
let iine_tr=[];
let user_href=[];
let user_id=[];
let user_src=[];
if(document.querySelector('#iineEntry')){ // 管理トップ
user_li=document.querySelectorAll('#iineEntoryContents li');
if(user_li.length !=0 && edit_mode==1){
for(k=0; k<user_li.length; k++){
let n=k;
if(user_li[n].querySelector('a')){
user_href[n]=user_li[n].querySelector('a').getAttribute('href');
user_src[n]=user_li[n].querySelector('img').getAttribute('src');
user_li[n].onclick=function(event){ // リストのクリックで設定
event.preventDefault(); // クリックしてもリンク先に飛ばない
local_backup(n); }}}
function local_backup(n){
if(block_regex_id.test(user_href[n])!=true){
user_id[n]=user_href[n].replace('https://ameblo.jp/', '');
user_src[n]=
user_src[n].replace('https://stat.profile.ameba.jp/profile_images/', '');
iine_block_data.push([user_id[n], user_src[n]]);
let write_json=JSON.stringify(iine_block_data);
localStorage.setItem('iine_id_back', write_json); }
else if(block_regex_id.test(user_href[n])==true){
user_id[n]=user_href[n].replace('https://ameblo.jp/', '');
iine_block_data.splice(iine_block_id.indexOf(user_id[n]), 1);
let write_json=JSON.stringify(iine_block_data);
localStorage.setItem('iine_id_back', write_json); }
reg_set();
blocker_dia();
blocker(); }}}
if(document.querySelector('#iineHistoryEntryFrame')){ // 履歴 タブ1
user_li=document.querySelectorAll('#iineEntryContents li');
if(user_li.length !=0 && edit_mode==1){
for(k=0; k<user_li.length; k++){
let n=k;
if(user_li[n].querySelector('a')){
user_href[n]=user_li[n].querySelector('a').getAttribute('href');
user_src[n]=user_li[n].querySelector('img').getAttribute('src');
user_li[n].onclick=function(event){ // リストのクリックで設定
event.preventDefault(); // クリックしてもリンク先に飛ばない
local_backup(n); }}}
function local_backup(n){
if(block_regex_id.test(user_href[n])!=true){
user_id[n]=user_href[n].replace('https://ameblo.jp/', '');
user_id[n]=user_id[n].replace(/\//g, '');
user_src[n]=
user_src[n].replace('https://stat.profile.ameba.jp/profile_images/', '');
user_src[n]=user_src[n].replace(/\?cpc=100/g, '');
iine_block_data.push([user_id[n], user_src[n]]);
let write_json=JSON.stringify(iine_block_data);
localStorage.setItem('iine_id_back', write_json); }
else if(block_regex_id.test(user_href[n])==true){
user_id[n]=user_href[n].replace('https://ameblo.jp/', '');
user_id[n]=user_id[n].replace(/\//g, '');
iine_block_data.splice(iine_block_id.indexOf(user_id[n]), 1);
let write_json=JSON.stringify(iine_block_data);
localStorage.setItem('iine_id_back', write_json); }
reg_set();
blocker_dia();
blocker(); }}}
if(document.querySelector('#iineHistoryUserFrame')){ // 履歴 タブ2
iine_tr=document.querySelectorAll('#iineHistoryUserFrame tr');
for(k=1; k<iine_tr.length; k++){
let n=k;
let user_icon_link=iine_tr[n].querySelector('.list_img');
let user_link=iine_tr[n].querySelector('.heading a');
if(user_link && edit_mode==0){
user_icon_link.style.pointerEvents='auto';
user_link.style.pointerEvents='auto'; }
if(user_link && edit_mode==1){
user_icon_link.style.pointerEvents='none';
user_link.style.pointerEvents='none'; }
iine_tr[n].onclick=function(){
local_backup(n); }}
function local_backup(n){
let user_link=iine_tr[n].querySelector('.heading a');
if(user_link && edit_mode==1){
user_href[n]=user_link.getAttribute('href');
user_src[n]=iine_tr[n].querySelector('.list_img img').getAttribute('src');
if(block_regex_id.test(user_href[n])!=true){
user_id[n]=user_href[n].replace('https://ameblo.jp/', '');
user_id[n]=user_id[n].replace(/\//g, '');
user_src[n]=
user_src[n].replace('https://stat.profile.ameba.jp/profile_images/', '');
user_src[n]=user_src[n].replace(/\?cpc=100/g, '');
iine_block_data.push([user_id[n], user_src[n]]);
let write_json=JSON.stringify(iine_block_data);
localStorage.setItem('iine_id_back', write_json); }
else if(block_regex_id.test(user_href[n])==true){
user_id[n]=user_href[n].replace('https://ameblo.jp/', '');
user_id[n]=user_id[n].replace(/\//g, '');
iine_block_data.splice(iine_block_id.indexOf(user_id[n]), 1);
let write_json=JSON.stringify(iine_block_data);
localStorage.setItem('iine_id_back', write_json); }
reg_set();
blocker(); }}}
} // checker()
function file_backup(){
let style_text;
if(document.querySelector('#iineEntry')){ // 管理トップ
style_text='position: absolute; top: -35px; width: 100%; background: #e2eef0; '+
'height: 36px; box-sizing: border-box; border: 1px solid #e2e2e2;';
if(ua==1){
style_text='position: absolute; top: -35px; width: 100%; background: #e2eef0;'+
'height: 36px; box-sizing: border-box; border: 1px solid #e2e2e2;'; }}
if(document.querySelector('#iineHistoryEntryFrame')){ // 履歴 タブ1
style_text='position: absolute; top: 0; left: 0; width: 100%; background: #e2eef0; '+
'height: 36px; box-sizing: border-box; border: 1px solid #e2e2e2;'; }
let insert_dialog;
insert_dialog=document.createElement('div');
insert_dialog.setAttribute('id', 'imute_dia');
insert_dialog.setAttribute('style', style_text);
if(document.querySelector('#iineEntry')){ // 管理トップ
let imute=document.querySelector('#imute_dia');
if(!imute){
document.querySelector('#iine').appendChild(insert_dialog); }}
if(document.querySelector('#iineHistoryEntryFrame')){ // 履歴 タブ1
let imute=document.querySelector('#imute_dia');
if(!imute){
document.querySelector('#iineHistoryEntryFrame').appendChild(insert_dialog); }}
let button1=document.createElement('input');
button1.setAttribute('type', 'submit');
button1.setAttribute('value', '排除リストを保存する');
button1.setAttribute('style', 'padding: 2px 8px 0; margin: 4px 30px');
if(ua==1){
button1.setAttribute('style', 'padding: 0 8px; margin: 4px 30px'); }
insert_dialog.appendChild(button1);
button1.onclick=function(){
let write_json=JSON.stringify(iine_block_data);
let blob=new Blob([write_json], {type: 'application/json'});
let a_elem=document.createElement('a');
a_elem.href=URL.createObjectURL(blob);
a_elem.download='iine_mute.json'; // 保存ファイル名
if(ua==1){
a_elem.target = '_blank';
document.body.appendChild(a_elem); }
a_elem.click();
if(ua==1){
document.body.removeChild(a_elem); }
URL.revokeObjectURL(a_elem.href); }
let button_add=document.createElement('input');
button_add.setAttribute('type', 'checkbox');
button_add.setAttribute('style', 'margin: 0 5px 0 40px');
insert_dialog.appendChild(button_add);
let button_add_label=document.createElement('span');
button_add_label.setAttribute('style', 'background: #e2eef0; vertical-align: -1px');
button_add_label.innerText='差分追加';
insert_dialog.appendChild(button_add_label);
let button2=document.createElement('input');
button2.setAttribute('type', 'file');
button2.setAttribute('style', 'margin: 4px 0 0 10px; vertical-align: 1px; width: 320px');
if(ua==1){
button2.setAttribute('style', 'margin: 4px 0 0 10px; width: 320px'); }
insert_dialog.appendChild(button2);
button_add.checked=true;
button2.addEventListener("change" , function(){
if(!(button2.value)) return; // ファイルが選択されない場合
let file_list=button2.files;
if(!file_list) return; // ファイルリストが選択されない場合
let file=file_list[0];
if(!file) return; // ファイルが無い場合
let file_reader=new FileReader();
file_reader.readAsText(file);
file_reader.onload=function(){
if(file_reader.result.slice(0, 15)=='[["tmp1","img1"'){ // iine_mute.jsonの確認
let data_in=JSON.parse(file_reader.result);
if(button_add.checked==true){ // 差分追加処理
for(let k=0; k<data_in.length; k++){
if(block_regex_id.test(data_in[k][0])!=true){
iine_block_data.push([data_in[k][0], data_in[k][1]]); }}}
else{
iine_block_data=data_in; } // 読込み上書き処理
let write_json=JSON.stringify(iine_block_data);
localStorage.setItem('iine_id_back', write_json); // ローカルストレージ 保存名
reg_set();
blocker(); }}; });
let button3=document.createElement('input');
button3.setAttribute('type', 'submit');
button3.setAttribute('value', '✖ 閉じる');
button3.setAttribute('style', 'padding: 2px 6px 0; margin: 4px 0 0 50px');
if(ua==1){
button3.setAttribute('style', 'padding: 0 6px; margin: 4px 0 0 50px'); }
insert_dialog.appendChild(button3);
button3.onclick=function(){
insert_dialog.remove(); }
} // file_backup()
function file_backup_end(){
let imute=document.querySelector('#imute_dia');
if(imute){
imute.remove(); }}
function find_user(){
let k;
let iine_span=[];
let iineImg=[];
let Img_src=[];
let list_frame=document.querySelector('#iineHistoryContent');
if(list_frame && edit_mode==2){
let f_panel=document.createElement('div');
f_panel.setAttribute('id', 'f_panel');
f_panel.innerHTML=
'<input id="set_user" type="text" placeholder="検索するアイコン画像のSRCを入力">'+
'<input id="clear" type="submit" value="✖">'+
'<input id="find_img" type="submit" value="ユーザー検索">';
if(!list_frame.querySelector('#f_panel')){
list_frame.appendChild(f_panel); }
let css=
'#f_panel { position: absolute; top: -90px; left: 0; width: 100%; display: flex; } '+
'#set_user { width: 100%; padding: 3px 30px 1px 10px; background: #e4f7fa; '+
'font: 16px Meiryo; border: 1px solid #666; border-radius: 3px; } '+
'#set_user::placeholder { font-size: 15px; color: #666; } '+
'#clear { width: 32px; margin: 1px 12px 1px -28px; padding: 2px 0 0; '+
'border: none; background: none; font: 16px Meiryo; } '+
'#clear:hover { text-shadow: 0 0 1px #fff; filter: invert(2); } '+
'#find_img { width: auto; padding: 3px 8px 1px; font: bold 14px Meiryo; } '+
'.userImg img, .iineProfImg img, .list_img img { outline-offset: -3px; } '+
'.iineProfImg img { height: 38px; width: 38px; object-fit: cover; } '+
'.list_img img { height: 40px; width: 40px; object-fit: cover; }';
let style_tag=document.createElement("style"); // css設定styleタグ
style_tag.setAttribute('id', 'bim2');
style_tag.textContent=css;
if(!list_frame.querySelector('#bim2')){
list_frame.appendChild(style_tag); }
let set_user=document.querySelector('#set_user');
let clear=document.querySelector('#clear');
let find_img=document.querySelector('#find_img');
set_user.value=find_img_src;
clear.onclick=function(){
set_user.value='';
find_img_src='';
blue_user(); }
find_img.onclick=function(){
if(set_user.value!=''){
let src=set_user.value;
src=src.replace(/https:\/\/stat\.profile\.ameba\.jp\/profile_images\//, '');
src=src.replace(/\?.*$/, '');
set_user.value=src;
find_img_src=src;
blue_user(); }}
}
} // find_user()
function blue_user(){
let k;
let iineImg=[];
let Img_src=[];
iineImg=document.querySelectorAll('img');
for(k=0; k<iineImg.length; k++){ // ユーザーアイコンのマスク
Img_src[k]=iineImg[k].getAttribute('src');
if(find_img_src!=''){
if(Img_src[k].indexOf(find_img_src)!=-1){
if(edit_mode==2){
iineImg[k].style.outline='3px solid #fff';
iineImg[k].style.boxShadow='0 0 0 4px #2196f3'; }
else{
iineImg[k].style.outline='none';
iineImg[k].style.boxShadow='none'; }}
else{
iineImg[k].style.outline='none';
iineImg[k].style.boxShadow='none'; }}
if(find_img_src==''){
iineImg[k].style.outline='none';
iineImg[k].style.boxShadow='none'; }}}
function blue_user_dia(){
let k;
let iineImg=[];
let Img_src=[];
if(find_img_src!=''){
iineImg=document.querySelectorAll('.iineProfImg img');
for(k=0; k<iineImg.length; k++){ // ダイアログのアイコンのマーク
Img_src[k]=iineImg[k].getAttribute('src');
if(Img_src[k].indexOf(find_img_src)!=-1){
if(edit_mode==2){
iineImg[k].style.outline='3px solid #fff';
iineImg[k].style.boxShadow='0 0 0 4px #2196f3'; }
else{
iineImg[k].style.outline='none';
iineImg[k].style.boxShadow='none'; }}
else{
iineImg[k].style.outline='none';
iineImg[k].style.boxShadow='none'; }}}}
function find_user_end(){
let f_panel=document.querySelector('#f_panel');
if(f_panel){
f_panel.remove(); }}
function get_src(){
let css=
'position: absolute; z-index: 10000; font: normal 16px Meiryo; '+
'text-shadow: #fff 1px 1px 0, #fff 1px -1px 0, #fff -1px 1px 0, #fff -1px -1px 0; '+
'cursor: default; display: none;';
let menu=document.createElement('div');
menu.setAttribute('id', 'img_menu');
menu.setAttribute('style', css);
if(!document.getElementById('img_menu')){
document.querySelector('body').appendChild(menu); }
let icon_img=[];
icon_img=document.querySelectorAll('img');
for(let k=0; k<icon_img.length; k++){
icon_img[k].addEventListener('click', function(event){
event.preventDefault();
event.stopImmediatePropagation();
let menu=document.querySelector('#img_menu');
let icon_src=icon_img[k].getAttribute('src');
if(icon_src.indexOf('profile_images')!=-1){
if(navigator.clipboard){
navigator.clipboard.writeText(icon_src); }
let set_user=document.querySelector('#set_user');
if(set_user){
set_user.value=icon_src; }
menu.textContent='⭕';
menu.style.display="block";
menu.style.left=(event.pageX-12) +"px";
menu.style.top=(event.pageY-30) +"px";
setTimeout(()=>{
menu.style.display="none";
}, 2000); }
else{
menu.textContent='❌';
menu.style.display="block";
menu.style.left=(event.pageX-12) +"px";
menu.style.top=(event.pageY-30) +"px";
setTimeout(()=>{
menu.style.display="none";
}, 2000); }
}); }
document.body.addEventListener('click', function(event){
let menu=document.querySelector('#img_menu');
if(menu){
menu.style.display="none"; }}); // 画像以外の場所のクリックでマークを消す
} // get_src()
「Bad Iine Mute」最新版について
旧いバージョンの「Bad Iine Mute」は、アメーバのページ構成の変更で動作しない場合があります。 また新しいバージョンほど、より改善を重ねているので、もし導入されるなら、最新のバージョンをお勧めします。 最も新しいバージョンへのリンクは、以下のページのリンクリストから探せます。



