かんたんコメントをカスタム
// ==UserScript==
// @name かんたんコメントプラス
// @namespace http://tanbatu.github.io/
// @version 2.2
// @description かんたんコメントをカスタム
// @author You
// @match *://www.nicovideo.jp/watch/*
// @match *://www.nicovideo.jp/easycomment/setting
// @match *://www.nicovideo.jp/my*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js
// @grant none
// ==/UserScript==
const url = location.href
if(url.match('.nicovideo.jp/watch/sm')){
one()
}else if(url.match("jp/my")){
document.getElementsByClassName('MainMenuContainer-right')[0].insertAdjacentHTML('beforebegin', '<a id="kankome" class="MainMenuItem" href="/my/mylist?EasyComment">かんコメ</a>')
}
function one() {
document.getElementsByClassName('ControllerBoxCommentAreaContainer-commentPostAndLikeArea')[0].insertAdjacentHTML('afterend', `
<div class="EasyCommentContainer-inner_Plus">
<div class="PlusComment" style="transform: translateX(0px);text-align: center;padding-top: 5px;">
</div>
</div>
<style>
.Ecom{
position: relative;
min-width: 44px;
height: 24px;
margin-left:5px;
padding: 0 6px;
border: 2px solid #ddd;
border-radius: 4px;
background-color: #fff;
color: #686868;
font-size: 12px;
font-weight: 600;
text-align: center;
}
.Ecom:hover{
background-color:#cffcff;
}
</style> `)
//タグを取得
let tag = []
let find_tag
let comment_Div = document.getElementsByClassName('PlusComment')[0]
let TagElem = document.getElementsByClassName('Link TagItem-name')
for (let i = 0; i < TagElem.length; i++) {
tag.push(TagElem[i].textContent.toLowerCase())
}
tag.push('すべて')
console.log(tag)
let m= []
let str = localStorage.getItem('EasyComment')
let comment_List = JSON.parse(str.replace(/\\/g, ""))
console.log(comment_List)
for (let i = 0; i < comment_List.length; i++) {
find_tag = tag.indexOf(comment_List[i].tag)
console.log(tag)
if (find_tag != -1) {
console.log(i+'タグがあります' + tag[find_tag])
console.log(Number(comment_List[i].comment.length))
for(let d = 0;d<Number(comment_List[i].comment.length);d++){
m.push(comment_List[i].comment[d])
}
} else {
console.log('見つかりませんでした')
}
}
addElement(m)
function addElement(tagNum) {
console.log(tagNum)
for (i = 0; i < tagNum.length; i++) {
comment_Div.insertAdjacentHTML('beforeend', '<button type="button" class="Ecom" id=' + i + '>' + tagNum[i] + '</button>')
}
}
comment_Div.insertAdjacentHTML('beforeend','<a href="https://www.nicovideo.jp/my/mylist?EasyComment">設定</a>')
let CommentInput = document.getElementsByClassName('CommentInput-textarea')[0]
let PostButton = document.getElementsByClassName('ActionButton CommentPostButton')[0]
function come(elements_text, text) {
Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype, "value").set.call(elements_text, text), elements_text.dispatchEvent(new Event("input", {
bubbles: !0
}))
PostButton.click()
}
let Comment_Buttons = document.querySelectorAll('.Ecom')
for (i = 0; i < Comment_Buttons.length; i++) {
Comment_Buttons[i].addEventListener("click", function () {
console.log(this.id)
come(CommentInput, m[this.id])
})
}
}
let List_Num = 1
let syutokunum=0
let befo
if (location.href == "https://www.nicovideo.jp/my/mylist?EasyComment") {
let Strage_List
let getitem;
document.querySelector('.UserPage-main').insertAdjacentHTML('beforebegin', `<div id="back" style="
position: absolute;
z-index:1000;
background-color: #fafafa;
width: 100%;
height: 100%;
text-align:center;"><div class="lds-facebook"><div></div><div></div><div></div></div></div>
<style>
.lds-facebook {
display: inline-block;
position: relative;
width: 80px;
height: 80px;
}
.lds-facebook div {
display: inline-block;
position: absolute;
left: 8px;
width: 16px;
background: gray;
animation: lds-facebook 1.2s cubic-bezier(0, 0.5, 0.5, 1) infinite;
}
.lds-facebook div:nth-child(1) {
left: 8px;
animation-delay: -0.24s;
}
.lds-facebook div:nth-child(2) {
left: 32px;
animation-delay: -0.12s;
}
.lds-facebook div:nth-child(3) {
left: 56px;
animation-delay: 0;
}
@keyframes lds-facebook {
0% {
top: 8px;
height: 64px;
}
50%, 100% {
top: 24px;
height: 32px;
}
}
</style>`)
document.getElementsByClassName('MainMenuItem MainMenuItem-active')[0].className = "MainMenuItem"
window.onload = function () {
let del_Button
document.getElementById('kankome').className = "MainMenuItem MainMenuItem-active"
let Active_Bar = document.getElementsByClassName('MainMenuItem MainMenuItem-active')[0].offsetLeft
document.getElementsByClassName('MainMenuContainer-activeBorder')[0].style.transform = "translateX(" + Active_Bar + "px)"
document.getElementsByClassName('SubMenuHeader MylistPageSubMenuHeader MylistPageSubMenu-header')[0].innerText = "かんたんコメント+"
document.getElementsByClassName('MylistPageSubMenu-action')[0].remove()
document.getElementsByClassName('SubMenuLink')[0].remove()
document.getElementById('back').remove()
let mems = document.getElementsByClassName('SubMenuLink')
mems[mems.length - 1].remove()
getitem = localStorage.getItem('EasyComment')
console.log(getitem)
let jsonparse = [{comment: [], tag: "すべて"}]
if(getitem==null || getitem=="[]"){
localStorage.setItem('EasyComment',JSON.stringify(jsonparse))
getitem = localStorage.getItem('EasyComment')}
Strage_List = JSON.parse(getitem.replace(/\\/g, ""));
document.getElementsByClassName('SubMenuLinkList MylistPageSubMenu-menu')[0].innerHTML = ""
function addmenu() {
document.getElementsByClassName('SubMenuLinkList MylistPageSubMenu-menu')[0].innerHTML = ""
for (let i = 0; i < Strage_List.length; i++) {
document.getElementsByClassName('SubMenuLinkList MylistPageSubMenu-menu')[0].insertAdjacentHTML('beforeend', `<li class="SubMenuLink MylistPageSubMenu-menuItem" title="` + Strage_List[i].tag + `"><a class="SubMenuLink-link SubMenuLink-link_internal " id="` + i + `"><span class="SubMenuLink-label">` + Strage_List[i].tag + ` </span></a></li>`)
}
document.getElementsByClassName('SubMenuLinkList MylistPageSubMenu-menu')[0].insertAdjacentHTML('beforeend', "<button class='ModalActionButton MylistsContainer-actionItem'>+新規作成</button>")
document.getElementsByClassName('ModalActionButton MylistsContainer-actionItem')[0].addEventListener('click', function () {
let new_ = window.prompt('適用するタグを入力してください。')
Strage_List.push({ comment: [], tag: new_.toLowerCase() })
localStorage.setItem('EasyComment', JSON.stringify(Strage_List))
getitem = localStorage.getItem('EasyComment')
Strage_List = JSON.parse(getitem.replace(/\\/g, ""));
addmenu()
loadcommentList(Strage_List.length - 1)
})
let list_Button = document.getElementsByClassName('SubMenuLink MylistPageSubMenu-menuItem')
for (let i = 0; i < list_Button.length; i++) {
list_Button[i].addEventListener('click', function () {
console.log(this.childNodes[0].id)
let id_ = this.childNodes[0].id
loadcommentList(id_)
})
}
}
addmenu()
function loadcommentList(List_Num) {
let d = document.getElementsByClassName('MylistPage-content')[0].innerHTML = ""
document.getElementsByClassName('MylistPage-content')[0].insertAdjacentHTML('beforeend', `
<a id="deletekey" href="javascript:console.log('削除確認中...')">削除する</a>
<p><span style="font-size:30px;">`+ Strage_List[List_Num].tag + `
</span>タグに適用されるかんたんコメント</p>
<div id="input_block" style="
display: flex;
"><input id="taginput" placeholder="ここにタグを入力"><button id="addbutton" class="ModalActionButton SubMenuButton MylistPageSubMenu-actionButton" style="
border-radius: 0px;
height: 99%;
background-color: gray;
color: white;
"><svg viewBox="0 0 10 10" class="AddIcon"><path d="M4.2 8.9V5.8h-3a.8.8 0 110-1.6h3v-3a.8.8 0 111.6 0v3h3a.8.8 0 110 1.6h-3v3a.8.8 0 11-1.6 0z" fill="#fff"></path></svg></button></div>
<style>
#input_block{
border: 1px solid gray;
border-radius:2px;
width:70%;
height:30px;
}
#taginput{
width:98%;
height:94%;
border-width:0px;
border-radius:3px;
}
#taginput:focus {
outline:none;
}
</style>
`)
function add(){
let value = document.getElementById('taginput').value
document.getElementById('taginput').value=""
if(value!=""){
document.getElementsByClassName('MylistPage-content')[0].insertAdjacentHTML('beforeend', `
<div style="display:flex;padding-top:5px"><div style="
box-shadow: 0 0 4px 0 rgba(0,0,0,.2);
border-radius: 2px;
color: #252525;
font-size: 12px;
font-weight: 500;
letter-spacing: 0;
cursor: pointer;
width: 70%;
margin-top: 5px;
background-color: white;
font-size: 150%;
"><p style="
margin:0px;
padding: 5px;
color: #3e3e3e;
">`+ value + `</p></div></div>`
)
Strage_List[List_Num].comment.push(value)
localStorage.setItem('EasyComment', JSON.stringify(Strage_List))
}
}
$("#taginput").keypress(function(event){
var keycode = (event.keyCode ? event.keyCode : event.which);
if(keycode == '13'){
add()
}
});
document.getElementById('deletekey').addEventListener('click', function () {
let del = window.confirm('本当に削除してよろしいですか?')
if (del == true) {
Strage_List.splice(List_Num, 1);
localStorage.setItem('EasyComment', JSON.stringify(Strage_List))
loadcommentList(0)
addmenu()
}
})
let add_Button = document.getElementById('addbutton')
add_Button.addEventListener('click', function () {
add()
})
for (let i = 0; i < Strage_List[List_Num].comment.length; i++) {
document.getElementsByClassName('MylistPage-content')[0].insertAdjacentHTML('beforeend', `
<div style="display:flex;padding-top:5px"><div style="
box-shadow: 0 0 4px 0 rgba(0,0,0,.2);
border-radius: 2px;
color: #252525;
font-size: 12px;
font-weight: 500;
letter-spacing: 0;
cursor: pointer;
width: 70%;
margin-top: 5px;
background-color: white;
font-size: 150%;
"><p style="
margin:0px;
padding: 5px;
color: #3e3e3e;
">`+ Strage_List[List_Num].comment[i] + `</p></div><p class="del_button">×</p></div>`)
}
$('.del_button').on('click', function(){
var index = $('.del_button').index(this);
console.log(index + 'th item clicked!');
this.parentNode.remove()
Strage_List[List_Num].comment.splice(index,1)
localStorage.setItem('EasyComment', JSON.stringify(Strage_List))
});
}
loadcommentList(0)
}
}