Greasy Fork

阳光宽频网显示评论

阳光宽频网显示评论,支持点赞

目前为 2017-08-04 提交的版本。查看 最新版本

// ==UserScript==
// @name         阳光宽频网显示评论
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  阳光宽频网显示评论,支持点赞
// @author       hunao
// @match        http://www.365yg.com/group/*
// @grant        GM_xmlhttpRequest
// @require      https://cdn.staticfile.org/jquery/3.2.1/jquery.min.js
// ==/UserScript==

(function() {
    'use strict';
    var bui_img_pre             = "http://7xjccj.com1.z0.glb.clouddn.com/bui_pre.png";
    var bui_img_after           = "http://7xjccj.com1.z0.glb.clouddn.com/bui_after.png";
    var login_api               = "https://sso.toutiao.com/login/";                         //登录地址
    var comment_list_api        = "http://www.toutiao.com/api/comment/list/";               //评论列表
    var comment_replay_list_api = "http://www.toutiao.com/api/comment/get_reply/";          //评论回复列表
    var comment_digg_api        = "http://www.toutiao.com/api/comment/digg/";               //点赞
    var login_status            = false;                                                    //登录状态
    //加载css样式
    var sss = document.createElement('style');
    sss.innerText = `.c-digg{color: #777;cursor: pointer;font-size: 14px;float: right;}
.no-more-tips{display:block;width:300px;margin:0 auto 10px;text-align:center;font-size:14px;line-height:30px;}`;
    document.body.appendChild(sss);
    //创建评论div
    $("div[riot-tag='abstract']").after('<div riot-tag="commentList"></div>');
    getCommentList(0,20);
    checkLoginStatus();
    /**
     * 获取评论(头条限制,起始位置在15后不返回数据,为了推广手机app)
     * @param  {[int]} offset [起始位置]
     * @param  {[int]} count  [加载条数]
     * @return
     */
    function getCommentList(offset,count){
        GM_xmlhttpRequest({
            method: "GET",
            url: comment_list_api+"?group_id=" + player.group_id + "&item_id=" + player.group_id + "&offset="+offset+"&count="+count,
            onload: function(res) {
                var obj = eval('(' + res.responseText + ')');
                console.log("拉取评论:",obj);
                var obj_comment = obj.data.comments;
                var comment_item = offset == 0 ? `<div class="detail-comment">
                                <a id="comment_area" href="#"></a>
                                <div id="comment"><div class="c-header"><em>`
                                +obj.data.total+
                                `</em>条评论</div><ul>` : "";
                for(var i in obj_comment){
                    var bui_img = obj_comment[i].user_digg?bui_img_after:bui_img_pre;
                    comment_item += `<li class="c-item">
                                <a href="http://www.toutiao.com/c/user/`
                                +obj_comment[i].user.user_id+
                                `/" target="_blank" class="avatar-wrap">
                                <img src="`
                                +obj_comment[i].user.avatar_url+
                                `" alt=""></a>
                                <div class="c-content">
                                <div class="c-user-info">
                                <a href="http://toutiao.com/c/user/`
                                +obj_comment[i].user.user_id+
                                `/" target="_blank" class="c-user-name">`
                                +obj_comment[i].user.name+
                                `</a>
                                <span class="c-create-time">`
                                +formatTimeAgo(obj_comment[i].create_time)+
                                `</span>
                                </div><p>`
                                +obj_comment[i].text+
                                `</p>
                                <div class="c-footer-action">
                                <span ga_event="click_expand_reply" class="c-reply-count" data-comment_id="`
                                +obj_comment[i].id+
                                `" data-input_count="`
                                +i+
                                `">`
                                +obj_comment[i].reply_count+
                                `条回复
                                <i class="bui-icon icon-arrow_down" style="font-size: 14px; color: rgb(64, 101, 153);"></i>
                                </span><span title="举报" class="bui-right c-report">
                                <i class="bui-icon icon-report" style="font-size: 14px; color: rgb(202, 202, 202);"></i></span>
                                <span style="" 
                                data-user_digg = "`+obj_comment[i].user_digg+`" 
                                data-dongtai_id = "`+obj_comment[i].dongtai_id+`" 
                                data-comment_id="`+obj_comment[i].id+`" title="点赞" ga_event="click_good_comment" class="bui-right c-digg"><span class="lalala">`
                                +formatBuiNum(obj_comment[i].digg_count)+
                                `&nbsp;</span><i class="bui-icon icon-thumbsup_line"><img class="img_bui" src="`+bui_img+`" /></i></span></div><div class="J_input_all J_input_`
                                +i+
                                `" style="display:none;" >
                                </li>`;
                }
                if(offset == 0){
                    comment_item += `</ul>
<a class="no-more-tips" style="color:#406599;" href="//app.toutiao.com/news_article/" target="_blank">以上为热门评论,头条 App 还有更多内容</a>
                                </div></div>`;
                    $("div[riot-tag='abstract']").after($(comment_item));
                }else{
                    $("#comment ul").after($(comment_item));
                }
                if(obj.data.has_more == false){
                    $("#loadmore_comment").remove();
                }
            }
        });
    }

    //获取回复
    $(".left").delegate(".detail-comment .c-reply-count","click",function(){
        var comment_id = $(this).data("comment_id");
        var input_count = $(this).data("input_count");
        //判断是隐藏还是加载
        if($('.J_input_'+input_count).nextAll().length){
            $('.J_input_'+input_count).nextAll().remove();
        }else{
            GM_xmlhttpRequest({
                method: "GET",
                url: comment_replay_list_api+"?comment_id=" + comment_id + "&dongtai_id=" + comment_id + "&offset=0&count=20",
                onload: function(res) {
                    var obj = eval('(' + res.responseText + ')');
                    console.log("展开回复:",obj);
                    var obj_reply = obj.data.data;
                    var reply_item = '';
                    for(var i in obj_reply){
                        reply_item += `<div class="c-reply-comment">
                            <a href="http://www.toutiao.com/c/user/`
                            +obj_reply[i].user.user_id+
                            `/" target="_blank" class="avatar-wrap">
                            <img src="`+obj_reply[i].user.avatar_url+`" alt=""></a>
                            <div class="c-content"><div class="c-user-info">
                            <a href="http://www.toutiao.com/c/user/`
                            +obj_reply[i].user.user_id+
                            `/" target="_blank" class="c-user-name">`
                            +obj_reply[i].user.name+
                            `</a> <span class="c-create-time">`+formatTimeAgo(obj_reply[i].create_time)+`</span></div><p>`
                            +obj_reply[i].text+
                            `</p> <div class="c-footer-action">
                            <span title="点赞" ga_event="click_good_comment" class="bui-right c-digg"><span class="lalala">`
                            +formatBuiNum(obj_reply[i].digg_count)+
                            `&nbsp;</span><i class="bui-icon icon-thumbsup_line"><img class="img_bui" src="`+bui_img_pre+`" /></i></span></div>
                            <div class="J_input_all J_input_`
                            +input_count+
                            `_`
                            +i+
                            `" style="display:none;" >
                           </div></div>`;
                    }

                    $(".J_input_"+input_count).after(reply_item);


                }
            });
        }
    });

    //对评论点赞
    $(".left").delegate(".detail-comment span[ga_event='click_good_comment']","click",function(){
        var comment_id = $(this).data("comment_id");
        var dongtai_id = $(this).data("dongtai_id");
        var group_id   = player.group_id;
        var item_id    = comment_id;//暂时试试
        var user_digg  = $(this).data("user_digg");
        var thisSpan   = $(this);
        if(login_status == false){
            window.location.href = login_api;
            return;
        }
        if(user_digg == 0){//未赞过
            GM_xmlhttpRequest({
                method: "POST",
                url: comment_digg_api,
                data:"comment_id="+comment_id+"&dongtai_id="+dongtai_id+"&group_id="+group_id+"&item_id="+item_id+"&action=digg",
                onload: function(res) {
                    var obj = eval('(' + res.responseText + ')');
                    console.log("点赞结果:",obj);
                    if (obj.message == "success") {
                        thisSpan.data("user_digg",1);
                        thisSpan.find('.bui-icon .img_bui').attr('src','http://7xjccj.com1.z0.glb.clouddn.com/bui_after.png');
                        thisSpan.find('.lalala').html(obj.data.digg_count);
                    }
                }
            });
        }
    });
    
    //格式化时间
    function formatTimeAgo(time) {
    if (time != +time) return "";
    time = new Date(1e3 * time);
    var e, i = Math.floor((new Date - time) / 1e3),
    a = Math.floor(i / 31536e3);
    return a >= 1 ? e = "年" : (a = Math.floor(i / 2592e3), a >= 1 ? e = "月" : 
    (a = Math.floor(i / 86400), a >=1 ? e = "天" : 
    (a = Math.floor(i / 3600), a >= 1 ? e = "小时" : 
    (a = Math.floor(i / 60), a >= 1 ? e = "分钟" :
    (a = i, e = "秒"))))), "秒" === e ? "刚刚" : 
    a + e + "前";
    }

    //格式化点赞数
    function formatBuiNum(t) {
        if (t != +t) return "";
        var e = Math.pow(10, 9),
            i = Math.pow(10, 8),
            a = Math.pow(10, 7),
            n = Math.pow(10, 5),
            r = Math.pow(10, 4),
            o = Math.pow(10, 3),
            s = "",
            l = void 0;
        return t - e >= 0 ? (s = "亿", l = Math.floor(t / i)) : t - i >= 0 ? (s = "亿", l = (Number(Math.floor(t / a) /
                10).toFixed(1) + "").replace(/\.0$/, "")) : t - n > 0 ? (s = "万", l = Math.floor(t / r)) : t - r >= 0 ?
                (s = "万", l = (Number(Math.floor(t / o) / 10).toFixed(1) + "").replace(/\.0$/, "")) : l = t, l + s;
    }
    
    //检测登录状态
    function checkLoginStatus(){
        GM_xmlhttpRequest({
            method: "HEAD",
            url: login_api,
            onload: function(res) {
               if(res.finalUrl != login_api){
                    login_status = true;
               }
            }
        });
    }
})();