| 类型 | 辑刊 | 报纸 | 硕博 | 会议 | 期刊 | 年鉴 |
|---|---|---|---|---|---|---|
| 目标形式 | CCJD | CCND | CDMD | CIPD | CJFD | CYFD |
| 子类 | ... | ... | CMFD 硕士 CDFD 博士 |
CPFD 国内 CPVD 视频 IPFD 国际 |
CJFQ | ... |
| 基础教育 | ... | CFND | CFMD | CFPD | CFJD CFJW 完中 CFJG 高中 CFJC 初中 CFJX 小学 |
... |
| 法律 | ... | CLKN | CLKM 硕士 CLKD, CLKB 博士 |
CLKP | CLKJ | ... |
| chkdx | ... | CHKJ | CDMH | CHKP | CHKJ | BSFD |
| ds | ... | ZKZN | ZKZM 硕士 ZKZD 博士 |
ZKZP 国内 ZKZI 国际 |
ZKZJ | ZKZY |
| hypt01 | ... | DXXN | DXXM 硕士 DXXD 博士 |
DXXP 国内 | DXXJ | DXXY |
| hypt02 | ... | WKDN | WKDM 硕士 WKDD 博士 |
WKDP 国内 WKDI 国际 |
WKDJ | WKDY |
| hypt03 | ... | GDKN | GDKM 硕士 GDKD 博士 |
GDKP 国内 GDKI 国际 |
GDKJ | GDKY |
| jw | ... | NTCN | NTCM 硕士 NTCD 博士 |
NTCP 国内 NTCI 国际 |
NTCJ | NTCY |
| ste | ... | SCGN | SCGM 硕士 SCGD 博士 |
SCGP 国内 SCGI 国际 |
BNJK SCGJ |
SCGY |
| snqk | ... | ... | ... | ... | CACM | ... |
| web01 | ... | JNGN | JNGM 硕士 JNGD 博士 |
JNGP 国内 JNGI 国际 |
JNGJ | JNGY |
| web02 | ... | DJSN | DJSM 硕士 DJSD 博士 |
DJSP 国内 | JYSJ DJSJ |
... |
| web03 | ... | LRIN | LRIM 硕士 LRID 博士 |
LRIP 国内 LRII 国际 |
LRIJ | LRIY |
| ... | ... | ... | ... | ... | ... | ... |
目前脚本只计划适配以上6类文献,相关dbcode来自知网文献页、搜索页。部分dbcode在oversea.cnki.net中直接使用可能会报错。脚本会将各种(疑似)dbcode变体转换为CCJD, CCND, CDMD, CIPD, CJFD, CYFD之一。
CCJD(辑刊)在非文献知网节(如kns.cnki.net, oversea.cnki.net, www.cnki.net)站点可能会使用CJFD(期刊)的形式,如https://www.cnki.com.cn/Article/CJFDTOTAL-ZXTG202001007.htm,但部分页面只能使用CCJD。
| dbcode | 属性 |
|---|---|
| CCVD | 教学视频 |
| CISD | 标准 |
| CLKLP | 法律法规 |
| CPVD | 会议视频 |
| SCOD | 专利 |
| SCPD | 中国专利 |
| SMSD | 标准题录 |
| SNAD | 成果 |
| SOPD | 海外专利 |
| ... | ... |
READ并不算dbcode,但对于知网百科的部分文章如https://xuewen.cnki.net/read-R2012030760000385.html,链接格式与正常文献相同,脚本会将read提取为dbcode,故将其排除。
let fileIDObj = { raw: [dbcode.toUpperCase(), filename.toUpperCase()] };
dbcode = fileIDObj.raw[0].replace(/^[A-Z]+_([A-Z]+)$/, '$1');
const cmnDB = ['CCJD', 'CCND', 'CDMD', 'CIPD', 'CJFD', 'CYFD'];
if (!cmnDB.includes(dbcode)) {
const oddDB = ['BNJK', 'BSFD', 'CACM', 'CDMH', 'CLKB', 'IPFD'],
badDB = ['CCVD', 'CISD', 'CLKLP', 'CPVD', 'READ', 'SCOD', 'SCPD', 'SMSD', 'SNAD', 'SOPD'];
if (oddDB.indexOf(dbcode) === badDB.indexOf(dbcode)) {
let dbKey = dbcode.replace(/^C(\w)?F(\w)\w*$/, 'to$2$1').replace(/^\w+(\w)$/, '$1');
const dbKeys = ['D', 'I', 'J', 'M', 'N', 'P', 'Y'],//博士 国际会议 期刊 硕士 报纸 国内会议 年鉴
key2cmn = ['CDMD', 'CIPD', 'CJFD', 'CDMD', 'CCND', 'CIPD', 'CYFD'];
dbcode = key2cmn[dbKeys.indexOf(dbKey)] || 'BAD-DB';
} else {
const odd2cmn = ['CJFD', 'CYFD', 'CJFD', 'CDMD', 'CDMD', 'CIPD'];
dbcode = odd2cmn[oddDB.indexOf(dbcode)] || 'BAD-DB';
}
console.debug('[CNKI-Redirect] Convert dbcode from %s to %s.', fileIDObj.raw[0], dbcode);
}脚本不需要额外的修改就能正常运行,没有特殊需求就不要给自己制造麻烦
Details
脚本在获取到dbcode和filename以后通过GenerateKcmsUrl函数生成目标链接数组,可以修改此函数来改变最终到达的链接(例如使用所在机构建立的知网本地镜像)。
注意:
- 需要一定的动手能力自己尝试
- 跳转至其他知网站点可能导致无限循环
- 跳转至错误页面可能无法自动回到原页面