• 通过Chrome扩展来批量复制知乎好友


     
     
    1.初始化文件
    Chrome 官方扩展教程地址
    新建一个文件夹 zhi-follow
    下图中 1 部分为 默认的图标3种尺寸
    会显示在 Chrome 中
     
     
    2. 定义按钮样式
     
    页面上会有两个展示按钮,方便随时控制收听的进度
     
     1 .follow_them_box{
     2   position: fixed;
     3   right: 200px;
     4   top: 200px;
     5   background-color: #fff;
     6   width: 80px;
     7   height: 30px;
     8   line-height: 30px;
     9   text-align: center;
    10   cursor: pointer;
    11   background: #8ab923;
    12   background-color: #9dcc4a;
    13   background-image: linear-gradient(top,#adda4d,#86b846);
    14   background-repeat: repeat-x;
    15   filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#adda4d', endColorstr='#86b846', GradientType=0);
    16   text-shadow: 0 1px 0 rgba(255,255,255,.3);
    17   border: 1px solid #6d8f29;
    18   color: #3e5e00!important;
    19   border-radius: 5px;
    20   box-shadow: 0 1px 0 rgba(255,255,255,.5) inset,0 1px 0 rgba(0,0,0,.2);
    21 }
    22 .remove_box{
    23   top: 260px;
    24 }
    3. manifest.json 文件配置
     
    JSON做配置文件非常方便 PHP Python等都有便利的第三方包来解析
     
    配置文件说明:
     
    background 用来配置后台默认运行的JS 这里我们不需要。
    content_scripts 用来配置在页面中载入的静态资源 matches来确定我们的资源会被加载到哪些域名
     
    其他配置就是一些版本说明等。
     
    js 这一栏配置上要加载的jQuery框架和我们的程序js
     
     1 {
     2    "background": {
     3       "persistent": false,
     4       "scripts": [ "background.js" ]
     5    },
     6    "content_scripts": [ {
     7       "css": [ "show_follow.css" ],
     8       "exclude_matches": [ "http://www.zhihu.com/read" ],
     9       "js": [ "jquery-2.1.1.min.js","show_follow.js"],
    10       "matches": [ "http://www.zhihu.com/*" ]
    11    } ],
    12    "description": "批量收听指定用户的好友",
    13    "icons": {
    14       "128": "128.png",
    15       "16": "16.png",
    16       "48": "48.png"
    17    },
    18    "manifest_version": 2,
    19    "name": "「批量+」",
    20    "permissions": [ "storage" ],
    21    "short_name": "批量+",
    22    "update_url": "https://clients2.google.com/service/update2/crx",
    23    "version": "1.0"
    24 }
    4. 写入主要功能
    show_follow.js 相当于我们的入口文件,可定义各种功能。
     
    4.1 先定义需要插入页面的dom按钮
    4.2 绑定按钮事件
    4.3 获取知乎页面中的 xsrf 值,否则无法提交表单
    4.4 批量关注
     
    jQuery(document).ready(function($) {
        var z_url = "www.zhihu.com";
        var follow = {
            uchk_obj : $('.zm-profile-header-info-title'),
            flink : $('.zm-profile-side-following>a').attr('href'),
            fl_btn_obj : $('.zg-btn-follow'),
            fl_them_div : '<div class="follow_them_box" id="follow_them_box" title="本按钮只在用户好友页有效,收听当前所有新人">follow them</div>',
            remove_div : '<div class="follow_them_box remove_box" id="remove_box" title="清除页面中已经收听过的人">remove</div>',
            hash_array : new Array(),
            uchk : function(){
                if (follow.uchk_obj.html() == '获得'){
                    return true;
                }else{
                    console.info('uchk');
                    return false;
                }
            },
            show_fl_btn : function(){
                $('body').append(follow.fl_them_div);
                $('body').append(follow.remove_div);
            },
            follow_user : function(uid,xsrf){
                $.ajax({
                      url: '/node/MemberFollowBaseV2',
                      data: {method:'follow_member',
                           params:'{"hash_id":"'+uid+'"}',
                           _xsrf:xsrf
                         },
                      dataType: "text",
                      type: "POST",
                      success: function(response) {
                      }
                 });
            },
            //删除已收听过的人
            remove_followed : function(){
                $('#remove_box').on("click", function(){
                    var temp = '';
                    var uid = '' ;
                    //清空已收听
                    $('.zg-btn-unfollow').each(function(index, el) {
                        temp = $(this).html();
                        switch(temp){
                            case '取消关注':
                                $(this).parents('.zm-profile-section-item').css('display', 'none');
                                break;
                            default:
                                break;
                        }
                    });
                });
            },
            follow_them : function(){
                $('#follow_them_box').on("click", function(){
                    var xsrf = $("input[name='_xsrf']").val();
                    $('.zg-btn-follow').each(function(index, el) {
                        uid = $(this).attr('data-id');
                        $(this).parents('.zm-profile-section-item').css('display', 'none');
                        follow.hash_array.push(uid);
                    });
                    var times = 0;
                    var max_num = 0;
                    if (follow.hash_array.length < 50){
                            max_num = follow.hash_array.length;
                    }else{
                        max_num = 50;
                    }
                    var int=self.setInterval(function(){
                        follow.follow_user(follow.hash_array[times],xsrf);
                        times++;
                        if (times == max_num){
                            follow.hash_array = [];
                            int=window.clearInterval(int);
                        }
                    },1000);
                });
            }
        };
        if ( follow.uchk() ){
            follow.show_fl_btn();
            follow.remove_followed();
            follow.follow_them();
        }
    });
    操作演示:
     
    1. 在Chrome扩展中载入扩展包
     
     
    2. 打开知乎你需要复制关注的页面
     
    其中灰色的是已经关注过的,点下 remove 按钮即可去除
     
    点击 follow them 可关注 当前页面可以关注的所有人
     
     
     
    Chrome HTTP 请求状态
     

     

    收听完毕。

    源文件 下载地址: https://github.com/Martin-Tan/zhi-follow

    转载请注明出处:http://www.cnblogs.com/martin-tan/
  • 相关阅读:
    「BZOJ4763」雪辉
    「CSA72」MST
    「CSA49」Bunny on Number Line
    「CSA49」Card Collecting Game
    Java indexOf() 方法
    MySQL执行计划分析
    NIO编程
    数据结构可视化
    深入理解二阶段提交协议(DDB对XA悬挂事务的处理分析)(一)
    linux下nohup日志切割方案
  • 原文地址:https://www.cnblogs.com/martin-tan/p/4801280.html
Copyright © 2020-2023  润新知