// ==UserScript==
// @namespace https://greasyfork.org/zh-TW/scripts/39891
// @name 今年一定島 自動更新回文
// @description 汲汲營營大報社
// @author 稻米
// @version 2020.03.22.0020.build16299
// @grant none
// @include *://*.komica.org/00/*
// @include *://*.komica.org/00/*
// @exclude *://*.komica.org/00/src/*
// @exclude *://*.komica.org/00/thumb/*
// @exclude *.jpg
// @exclude *.png
// @exclude *.webm
// ==/UserScript==
//jquery
try{}
catch(err){}
finally{}
$(document).ready(function() {
// 從sessionStorage移除之前存的所有資料
//window.sessionStorage.clear();
//console.log( window.sessionStorage );
//window.localStorage.clear();
//console.log( window.localStorage );
//console.log( 'jquery ready' );
//全域變數//global
var time=new Date();
var postnum=poi_findpostnum();//首篇編號
window.gg190524=[];
window.gg190524.原始標題=document.title;
window.gg190524.標題編號=postnum;
window.gg190524.新的文章數量=0;//新的文章數量
if(window.localStorage){
var aa=$("div.bar_reply:contains('回應模式')");
if( aa.length ){
poi(); //回應模式才執行
}
}else{
//$(".thread").attr('poi',tmp);
}
});
function var190106(){
//
$( document ).ajaxStart(function(){ //啟動ajax時 執行這段 // AJAX 请求开始
//console.log( 'ajaxStart' );
//window.gg190524=chk_gg();//檢查gg是否存在 //ajax的異步問題
});
$( document ).ajaxSend(function() { // AJAX 请求发送
//console.log( "ajaxSend" );
});
};//var190106
function poi_findpostnum(){
if( window.location.href.match("\\?res=") ){
//var url_p1 = new URL( window.location.href );
//var url_p2 = new URLSearchParams( url_p1.search ).get('res');//首篇編號
var selfres = $('.post.threadpost').attr('data-no'); //首篇編號
return selfres;
}
}
//
function poi(){
//console.log( gg190524 );
//console.log( window.sessionStorage );
//console.log( window.gg190524 );
/*
var tmp='';
tmp = window.gg190524;
tmp = JSON.stringify( tmp );
tmp = encodeURIComponent( tmp );
tmp = btoa(tmp);
//存
//$(".thread").attr('gg190524',tmp);
//
*/
animate01();
}//poi()
function chk_gg(){ //???
//檢查
if( window.gg190524.原始標題 ){
//console.log( '有' );
}else{
console.log( '無資料' );
//讀
var tmp='';
//讀取
tmp = $(".thread").attr('poi');
//解碼
tmp = atob(tmp);
tmp = decodeURIComponent(tmp);
tmp = JSON.parse(tmp);
//console.log( tmp );
window.gg190524=tmp;
console.log( gg190524 );
}
//
return gg190524;
}//chk_gg(){
//建立動畫的網頁元素
function animate01(){
if( $("#poi180324append").length > 0){
//已存在=還原長度
$("#poi180324inbox").css({
"width":"600px",
});
}else{
//不存在=建立元素
var div = $("<div>").html("180324append").attr({
'id':'poi180324append',
'class':'class_poi180324',
});//
//$(".thread").append(div);
$(".thread").find('hr').before(div);//before //after
//
$("#poi180324append").html('');
$("#poi180324append").before('<br clear="both">');
$("#poi180324append").append('<div id="poi180324inbox"></div>');
$("#poi180324inbox").html('<poi>自動更新回文</poi><span style="float: right;"></span>');
//外框
$("#poi180324append").css({
"border":'5px solid #ff0000',
"background-color":"#ffff00",//yellow
"display":"block",
"width":"600px",
});
//進度條
$("#poi180324inbox").css({
"background-color":"#ff0000",
"white-space":"nowrap",
"display":"block",
"width":"600px",
});
//height
}//if
//
animate01b();
}
function animate01b(){
//更新進度條狀態
var f1=function(){
var starttime=Date.now();
var tmp='';
var cc=0;
var oneElement = document.querySelector('#poi180324inbox');
var duration = 30; //動畫持續時間(秒)60
var progress = 0;
var timer=function(){
//var tt=
setTimeout(function(){
cc++;
//經過時間
//window.performance.now() 網頁開啟的時間
progress= ( (Date.now()-starttime) / 1000).toFixed(1); //Math.floor
//document.title = progress; //Date.now();
//console.log( cc, progress);
tmp =600 - (progress / duration)*600; //600=寬度
oneElement.style.width = tmp+'px';
//
if(progress > duration){
//clearTimeout(tt);
getapi();//跑完動畫 再抓一次api
}else{
timer();
}
}, 1*1000/5);
};
timer();
};
f1();//setTimeout
//
}
function getapi(){
var selfres = $('.post.threadpost').attr('data-no'); //首篇編號
var apiurl='./pixmicat.php?mode=module&load=mod_ajax&action=thread&html=true&op='+selfres; //綜合版原生api
//var apiurl='http://homu.homu-api.com/res/'+gg190524.selfres; //第三方api
var jqxhr=$.ajax({ //用ajax獲取網址內容
url:apiurl,
//timeout:30*1000, //不影響其他ajax //雞肋的功能
//global:false, //不觸發global事件
}, function(x,y,z){
console.log('ajax');
});
//console.log('x',y,z);
//jQuery has deprecated synchronous XMLHTTPRequest
//var jqxhr=$.ajax({url:apiurl,async:false}, function(x,y,z){});
//jqxhr.always();
jqxhr.always(function(x,y,z){
});
//發生錯誤後 再次嘗試
jqxhr.fail(function(x,y,z){
console.log('fail',x,y,z);
console.log('失敗 10分鐘後重試');
$("#poi180324inbox >poi").html('失敗 10分鐘後重試');
setTimeout(function(){
console.log('再次嘗試');
getapi();
}, 600*1000);
});
//成功
jqxhr.done(function(x,y,z){
var json= x;
json = $.parseJSON( x );//分析parse
if(json.error){
console.log( json.msg );
$("#poi180324inbox >poi").html( json.msg );
}
if(json.posts){
//console.log( json.posts );
$("#poi180324inbox >poi").html('自動更新回文');
animate01();//頁面下方的動畫
updatelog01(json);//更新留言
}
//if(Object.keys(json.posts).length > 0){}
});
try{}
catch(err){}
finally{}
//
}
function updatelog01(x){
//input
var json=x;
//
//console.log(Object.keys(json.posts).length ,json ); //Object length
var new_time = new Date();
console.log( new_time , Object.keys(json.posts).length ); //在控制台顯示更新時間//Object length
//
//$(".thread").find('hr').before('<div>資料'+ gg190524.cc +'</div>');
var allElements = document.querySelectorAll('.post');
var origlog=[];
//網頁上的文章編號 集合起來
$.each(allElements, function( index, value ) {
origlog.push( $(value).attr('data-no') );
});
//
//var newlogcount=0;
Array.from(json.posts).forEach((value, index) => {
//console.log(value.no);
var find_post_id=origlog.indexOf( value.no.toString() );
//console.log(find_post_id);
if(find_post_id<0){
//沒找到對應編號=有新文章
window.gg190524.新的文章數量++; //計數
console.log( '新文章='+value.no );
//顯示新的回文
$(".thread").find('hr').before(value.html);//before //after
//var tmp = $.getScript("../common/js/script.js");
//console.log( tmp );
document.title = '('+ window.gg190524.新的文章數量 +')'+gg190524.原始標題;
}else{
//沒有新文章
}
});
}//updatelog01
//