Greasy Fork

来自缓存

Greasy Fork is available in English.

知网批量下载PDF+丨CNKI Multi PDF Download

用于知网批量下载PDF,保存下载信息到txt

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         知网批量下载PDF+丨CNKI Multi PDF Download
// @namespace    http://tampermonkey.net/
// @icon         https://kdoc.cnki.net/favicon.ico
// @version      0.6
// @description  用于知网批量下载PDF,保存下载信息到txt
// @author       Juicpt(因为不熟悉js里的属性方法,为了方便添加新功能,24用jQuery重写)
// @include      */kns/brief/*
// @include      */kns*/AdvSearch*
// @include      */kns*/defaultresult/*
// @run-at       document-end
// @grant        unsafeWindow
// ==/UserScript==
var $ = unsafeWindow.jQuery;
(function(){
    $('.SavePoint').width(620);
    $('<a>批量下载PDF</a>').appendTo('.SavePoint,.result-con-l').click(downLoad).attr({'id':'pdfdown','title':'此页面若有勾选,则下载勾选部分;没有则默认下载当前页面全部搜索结果'}).addClass('btn-search-his');
    $('<a>信息</a>').appendTo('.SavePoint,.result-con-l').click(getInfo).attr({'id':'info','title':'导出简要信息,用于核对下载情况和辅助重命名'}).addClass('btn-search-his');
    var tr3 = [];
    var info_count = 0;
    if (location.pathname.match('/kns/brief/'))
    {
        tr3 = $('tr[bgcolor],.GridDoubleRow,.GridSingleRow');
        replaceUrl(tr3);
    }
    else
    {
        $('#briefBox').ajaxStop(function(){
            tr3 = $('.result-table-list tbody tr,.result-detail-list dd');
            replaceUrl(tr3);
            /*
            if($(".countPageMark")){
                var page_count = $(".countPageMark").text().trim().split("/")[0];
                var page_per = $("#perPageDiv span").text().trim();
                info_count = (page_count-1) * page_per;
                info_count = info_count > 0 ? info_count : 0 ;
            }
            */
        });
    }
    function replaceUrl(all){
        all.each(function(){
            var url = $(this).find('a.briefDl_D,.briefDl_Y,.downloadlink').attr('href');
            if (url){
                //url = url.match('&dflag') ? url.replace('&dflag=nhdown','&dflag=pdfdown') : (url + '&dflag=pdfdown');
                url = document.URL.match('oversea') ? url : url.replace(/\S*(filename=\S*)/,'https://chn.oversea.cnki.net/kns/download?$1');
                $(this).find('a.briefDl_D,.briefDl_Y,.downloadlink').attr('href',url);
            }
        });
    }
    function getInfo(){
        var info = '序号→发表时间→第一作者→文献标题→下载状态\n' ;
        var trselected = selectBox(tr3);
        info += trselected.map(getInfoInEach).get().join('');
        var txtname = $(tr3).find('a.fz14,.author_flag,.GridRightColumn,.author').find('font.Mark').eq(0).text().trim() + '.txt';
        txtname = txtname == '.txt' ? $('.conditions').text().trim() + '.txt' : txtname;
        exportInfo(info,txtname);
        info = '';
    }
    function downLoad(){
        var trselected = selectBox(tr3);
        trselected.each(function(){
            var btdown=$(this).find('a.briefDl_D,.briefDl_Y,.downloadlink.icon-download,.icon-textlink')[0];
            if (btdown) btdown.click();
        });
    }
    function getInfoInEach(index){
        var pnum = index + 1 + info_count;
        var ptime = $(this).find('td:eq(4),label:contains(发表时间),span.date').text().replace('发表时间:','').trim().substr(0,10);
        var pname = $(this).find('.author_flag,.author,.authorinfo p a:eq(0)').text().split(';')[0].replace(',','').trim().split('  ').pop();
        pname = pname.length > 15 ? pname.split(' ')[1] : pname;
        pname = pname.length == 0 ? $(this).find('.authorinfo p').text().trim() : pname;
        var ptitle = $(this).find('a.fz14,h3.title_c a').text().trim().replace(/[\/:*?"<>|]+/g,'_').replace(/[\n\r\t]+/g,'').replace(/\s+——/g,'——');
        var pstatus = $(this).find('a.briefDl_D,.briefDl_Y,.downloadlink.icon-download').attr('title');
        pstatus = pstatus===undefined ? '未下载': pstatus.slice(3);
        var infoineach = pnum + '→' + ptime + '→' + pname + '→' + ptitle + '→' + pstatus + '\n';
        return infoineach;
    }
    function selectBox(all){
        var checked = tr3.find(':checkbox').is(":checked");
        var selected = checked == true ? all.filter(function(){return $(':checkbox',this).is(':checked')==true}) : all;
        return selected
    }
    function exportInfo(content, filename) {
        var eleLink = document.createElement('a');
        eleLink.download = filename;
        eleLink.style.display = 'none';
        var blob = new Blob([content]);
        eleLink.href = URL.createObjectURL(blob);
        document.body.appendChild(eleLink);
        eleLink.click();
        document.body.removeChild(eleLink);
    }
})();