Greasy Fork is available in English.

Komica poi180218

今年一定島 自動更新回文

Versão de: 25/03/2018. Veja: a última versão.

// ==UserScript==
// @name         Komica poi180218
// @namespace    https://greasyfork.org/zh-TW/scripts/39891
// @description  今年一定島 自動更新回文
// @author       稻米
// @include      http://*.komica2.net/00/*
// @include      https://*.komica2.net/00/*
// @include      http://*.komica2.net/*/pixmicat.php?res=*
// @include      https://*.komica2.net/*/pixmicat.php?res=*
// @version      2018.03.25.0110.build16299
// @grant        none
// ==/UserScript==

//jquery
$(document).ready(function() {
    //console.log( 'jquery ready' );
    //全域變數//global
    time=new Date();
    //console.log( time );
    //$.globalEval('gg=[];');
    //window.gg=[];
    gg=[];
    gg.time=time;
    gg.timestamp=Date.parse(time); //time.getTime(); //Date.now()
    $.gginin=gg;//jquery global variable
    gg.cc=0;
    gg.origlog=[];
    jQuery.fx.interval = 1000; //動畫更新間隔(毫秒) 預設=13


    //console.log( gg );
    //console.log( $.gginin );
    //
    //color();
    poi();
});


/*
http://ram.komica2.net/00/pixmicat.php?mode=module&load=mod_ajax&action=thread&html=true&op=11168423
http://www.homu-api.com/
http://www.homu-api.com/follow/10455981
http://homu.homu-api.com/res/10455438
http://homu.homu-api.com/page/0

*/
function color(){}

function poi(){

    (function(x){
        //console.log( 'IIFE 立即函式' );
        gg.selfurl=x.location.href;
        //console.log($.gginin);
    })(window);

    //
    var url_p1 = new URL( gg.selfurl);
    //console.log( url_p1 );//解析網址參數
    //
    var tmp='';
    tmp=url_p1.search;//.substr(1)
    var url_p2 = new URLSearchParams( tmp );
    tmp=url_p2.get('res');
    //console.log( tmp );//解析網址參數
    gg.selfres=tmp;
    //console.log( gg );
    //
    if(gg.selfres){ //有找到res參數才執行(回文模式)
        getapi();//使用api
    }


}

function getapi(){
    //console.log( $.gginin );
    gg=$.gginin;
    gg.cc=gg.cc + 1;
    console.log( gg );
    try{
        var apiurl='http://ram.komica2.net/00/pixmicat.php?mode=module&load=mod_ajax&action=thread&html=true&op='+gg.selfres; //綜合版原生api
        //var apiurl='http://homu.homu-api.com/res/'+gg.selfres; //第三方api
        //console.log(apiurl);
        var jqxhr=$.get(apiurl, function(x,y,z) {
            //console.log('x',y,z);
        });
        //jqxhr.always();
        //jqxhr.fail();
        jqxhr.done(function(x,y,z){
            //console.log(x,y,z);
            json= x;
            json = $.parseJSON( x );//分析parse
            //console.log(Object.keys(json.posts).length ,json ); //Object length
            //
            //updatelog();
            animate01();//頁面下方的動畫
            updatelog01(json);//更新留言
        });
    }
    catch(err){
        console.log(err);
    }
    finally {
        //console.log( 'try-catch-finally' );
    }
    //

}
function updatelog01(x){
    json=x;
    console.log(Object.keys(json.posts).length ,json ); //Object length
    //
    var qwq = (function(x) {
        return;
    })();//立即函式 //在函式最後加上一組括號代表立即執行
    var addnewlog = function(x){
        $(".thread").find('hr').before(x[0]);//before //after
        //$(".thread").find('hr').after(x[1]);//before //after
    };//匿名函式 //宣告時才定義
    //
    //$(".thread").find('hr').before('<div>資料'+ gg.cc +'</div>');
    var allElements = document.querySelectorAll('.post');
    gg.origlog=[];
    $.each(allElements, function( index, value ) {
        gg.origlog.push( $(value).attr('data-no') );
    });
    //console.log( gg.origlog );
    //
    Array.from(json.posts).forEach((value, index) => {
        //console.log(value.no);
        var tmp=gg.origlog.indexOf( value.no.toString()  ); // 2
        //console.log(tmp);
        if(tmp<0){
            //沒找到
            //console.log( '新文章='+value.no );
            tmp=updatelog02(value);
            //console.log( tmp );
            tmp=addnewlog(tmp);
        }else{
            //有找到
            //console.log( '有找到='+value.no );
        }
    });
}//updatelog01

function updatelog02(x){
    var json=x;
    //console.log( json );
    var log_no=json.no;
    var tmp='';
    tmp=tmp+'';
    tmp=tmp+'<div class="post reply" data-no="'+log_no+'" id="r'+log_no+'">';
    tmp=tmp+'<div class="post-head"><input type="checkbox" name="'+log_no+'" value="delete" />';

/*
<div class="post reply" data-no="11171266" id="r11171266">
<div class="post-head"><input type="checkbox" name="11171266" value="delete" />
<span class="name">無名</span><span class="now">18/03/25(日)08:52:45 ID:e4l1KFMY</span><span class="qlink" data-no="11171266">No.11171266</span></div>
<div class="file-text">檔名:<a href="//ram.komica2.net/00/src/1521939165088.jpg" target="_blank" rel="nofollow">1521939165088.jpg</a>-(127 KB, 725x1000)</div>
<a class="file-thumb" href="//ram.komica2.net/00/src/1521939165088.jpg" target="_blank" rel="nofollow"><img src="//ram.komica2.net/00/thumb/1521939165088s.jpg" style="width: 91px; height: 125px;" class="img" alt="127 KB" title="127 KB" /></a>
<div class="quote"><span class="resquote"><a class="qlink" href="#r11171257">&gt;&gt;11171257</a></span></div>

</div>
*/
    tmp=json.html;
    //console.log( tmp );
    var xx=[];
    xx[0]=tmp;
    xx[1]=log_no;
    return xx;
}

function animate01(){
    if( $("#poi180324append").length > 0){
        //已存在
        //還原長度
        $("#poi180324inbox").css({
            "width":"600px",
        });
    }else{
        //不存在
        //建立元素
        div = $("<div>").html("180324append").attr({
            'id':'poi180324append',
            'class':'class_poi180324',
        });//
        //$(".thread").append(div);
        $(".thread").find('hr').before(div);//before //after
        //
        $("#poi180324append").html('');
        $("#poi180324append").append('<div id="poi180324inbox"></div>');
        $("#poi180324inbox").html('自動更新留言');
        //
        $("#poi180324append").css({
            "border":'5px solid #ff0000',
            "background-color":"#ffff00",//yellow
            "display":"block",
            //"height":"10px",
            "width":"600px",
        });//連結上背景色 不想上色就把這段刪除
        $("#poi180324inbox").css({
            //"border":'5px solid #ff0000',
            "background-color":"#ff0000",
            "white-space":"nowrap",
            "display":"block",
            //"height":"10px",
            "width":"600px",
        });//連結上背景色 不想上色就把這段刪除
    }//if
    //
    animate01b();
}

function animate01b(){
    gg=$.gginin;
    //console.log( gg );
    //

    if(0){
        var cc=1;
        $("#poi180324inbox").stop().animate({width:'1px'},{
            duration:60*1000, //動畫時間
            easing:'linear', //'linear'
            queue: false,
            complete:function(){
                //$(".pp3").prepend('CMPL1');
                //$FFF=$(".pp3").html().substr(0,100);
                //$(".pp3").html($FFF);
                //跑完動畫 再抓一次api
                getapi();
            },
            start:function(){
                //$(".pp3").prepend('START1');
            },
            step:function(now, fx ){
                //$(".pp2").after('s');
                //console.log( now, fx );
                if(cc>0){
                    cc=cc-1;
                    //console.log( now, fx );
                }
            },
            progress: function(promise, remaining){
                //console.log( promise, remaining );
                //var percent = (remaining * 100).toFixed(2);
                //$("#Status").text(percent + "%");
            }

        });//animate
    }else{
        var start = window.performance.now();
        var duration = 60*1000; //動畫持續時間
        var interval = 1000/30; //動畫更新間隔 //fps
        var oneElement = document.querySelector('#poi180324inbox');
        //console.log( oneElement );
        //
        var progress = 0;
        var poipoi=function(timestamp){
            //console.log( timestamp ); //window.performance.now()
            //if(start === null){start = timestamp;}
            progress = timestamp - start;
            //progress++;
            //console.log( progress );
            var tmp =600 - (progress / duration)*600;
            oneElement.style.width = tmp+'px';
            if(progress < duration) {
                window.requestAnimationFrame(poipoi);
            }else{
                //跑完動畫 再抓一次api
                getapi();
            }
        };
        var requestID=window.requestAnimationFrame(poipoi);
        //console.log( requestID );
    }//if

    //
}//animate01()


/*
  $( "div:animated" ).toggleClass( "colored" );
  myDiv.clearQueue();
  myDiv.stop();
*/