나무라이브 글 임시저장
// ==UserScript==
// @name Namulive_TempStore
// @namespace http://tampermonkey.net/
// @version 1.0
// @description 나무라이브 글 임시저장
// @include https://namu.live*
// @author Suneungsiheom
// @grant GM.setValue
// @grant GM.getValue
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_registerMenuCommand
// @grant GM_openInTab
// @grant GM_addStyle
// ==/UserScript==
//tinymce.init({
// selector: 'textarea',
// content_css: ['//www.tinymce.com/css/codepen.min.css']
//});
(function() {
'use strict';
let area = document.createElement("div");
let areaTitle = document.createElement("p");
let areaMsg = document.createElement("p");
var tempsaver;
// 임시저장
function tempsave() {
let title = document.getElementById('inputTitle').value;
let content = tinymce.get('content').getContent();
let eachline = content.split('\n');
var content2 = "";
for(var i = 0; i < eachline.length; i++) {
content2 += (eachline[i].replace("<p>", "").replace("</p>", "") + "\r\n");
}
var file = document.createElement('a');
file.setAttribute("href", "data:text/plain;charset=utf-8," + encodeURIComponent(title + "\r\n\r\n" + content2));
file.setAttribute("download", "namla_temp_" + Math.floor(Math.random() * 1000000) + ".txt");
if(document.createEvent) {
var event = document.createEvent("MouseEvents");
event.initEvent("click", true, true);
file.dispatchEvent(event);
} else {
file.click();
}
}
// 랜덤으로 tempsave를 실행할지 결정
function random_tempsave() {
if (Math.floor(Math.random() * 10) == 0) tempsave();
}
if (document.querySelector('div.article-write') !== null) {
// 임시저장 타이틀
area.classList.add("sidebar-item");
let textarea = document.querySelector('.article-write');
textarea.appendChild( area );
areaTitle.textContent = "나무라이브 게시물 임시저장은 행운의 여신이 알아서 해 줍니다. '지금 임시저장' 버튼은 되도록 누르지 마세요.";
area.appendChild( areaTitle );
areaMsg.textContent = "임시저장은 파일 다운로드 방식으로 진행됩니다. 다운로드 권한이 차단되어 있으면 실행되지 않으니 주의해 주세요.";
area.appendChild( areaMsg );
// 임시저장 버튼
let btn = document.createElement("button");
btn.textContent = "지금 임시저장";
area.appendChild( btn );
btn.addEventListener('click', function() {
// 테스트 통과(1/10 확률)
if (Math.floor(Math.random() * 10) == 0) {
areaTitle.textContent = "행운의 여신이 이번에는 그냥 넘어갔습니다. 게시물이 임시저장되었습니다.";
tempsave();
// 테스트 실패(30분 정지)
} else {
let time = new Date();
let time0 = new Date(Date.parse(time) + 1800000)
let text = (time0.getHours() < 10 ? "0" : "") + time0.getHours() + ":" + (time0.getMinutes() < 10 ? "0" : "") + time0.getMinutes() + ":" + (time0.getSeconds() < 10 ? "0" : "") + time0.getSeconds();
areaTitle.textContent = "행운의 여신에 의해 저장 요청이 거부되었습니다. '지금 임시저장' 버튼을 " + text + "까지 클릭할 수 없습니다.";
btn.disabled = true;
setTimeout(function(){
btn.disabled = false;
areaTitle.textContent = "나무라이브 게시물 임시저장은 행운의 여신이 알아서 해 줍니다.";
}, 1800000);
}
});
tempsaver = setInterval(random_tempsave, 30000);
}
})();