Zhihu history collection

知乎浏览记录收藏夹

目前为 2017-12-18 提交的版本。查看 最新版本

// ==UserScript==
// @name         Zhihu history collection
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  知乎浏览记录收藏夹
// @author       [email protected]
// @match        https://www.zhihu.com/
// ==/UserScript==

(function() {
    'use strict';
    function getJson(api,callback){
        var oReq = new XMLHttpRequest();
        oReq.onload = function (e) {
            if(callback)
                callback(e.target.response);
        };
        oReq.open('GET', api, true);
        oReq.setRequestHeader("Content-type","application/json");
        oReq.responseType = 'json';
        oReq.send();
    }
    function postJson(api,data,callback){
        var oReq = new XMLHttpRequest();
        oReq.onload = function (e) {
            if(callback)
                callback(e.target.response);
        };
        oReq.open('POST', api, true);
        oReq.setRequestHeader("Content-type","application/json");
        oReq.responseType = 'json';
        oReq.send(JSON.stringify(data));
    }

    var collection_name = '浏览记录';
    if(!window.localStorage.zhihu_collect_id){
        var id = JSON.parse(document.querySelector('#root div').dataset.zopUsertoken)['urlToken'];
        getJson('https://www.zhihu.com/api/v4/members/'+id+'/favlists?limit=100&offset=0',function(data) {
            var c_id = undefined;
            for (var i = data.data.length - 1; i >= 0; i--) {
                if(data.data[i].title==collection_name){
                    c_id = data.data[i].id;
                    break;
                }
            }
            if(!c_id){
                postJson('https://www.zhihu.com/api/v4/favlists',{
                    "title":collection_name,
                    "description":"知乎浏览记录, 记录您在知乎首页点开过的回答--by ",
                    "is_public":false
                },function(data) {
                    window.localStorage.zhihu_collect_id = data.id;
                });
            }else{
                window.localStorage.zhihu_collect_id = c_id;
            }
        });
    }

    var ques = document.querySelectorAll('.Card.TopstoryItem');
    for(var i=0;i<ques.length;i++){
        ques[i].addEventListener("click", function (evt) {
            if(!window.localStorage.zhihu_collect_id){
                return;
            }
            var q = this;
            try{
                var info = JSON.parse(q.querySelector('.AnswerItem').dataset.zop);
                postJson('https://www.zhihu.com/api/v4/favlists/'+window.localStorage.zhihu_collect_id+'/items',
                    {"content_id":info['itemId'], "content_type":info['type']});
            }catch(e){
                console.log(e);
            }
        }, true);
    }
})();