calibre-web批量修改信息

本文介绍了如何使用Node.js和axios库开发脚本,自动化处理Calibre-web图书馆中书籍的作者和分类信息,包括安装依赖、提取网络信息、修改请求头和体内容,以及批量发送更新请求的过程。
摘要由CSDN通过智能技术生成

最近在折腾nas,在上面部署了一个Calibre-web当作图书馆。因为导入了很多从各处收集的资料,所以作者、作者分类这些信息很乱,为了能够批量的修改这些信息,写了一些脚本,有需要的可以自取。        

1.电脑需要安装nodejs,nodejs需要安装axios (使用 npm install axios 命令安装)。

2.用chrome浏览器打开Calibre-web页面,打开F12,进入【书籍列表】,修改一本书的信息

3.查看Network里的信息,提取相关信息

右键->  copy ->  Copy as Node.js fetch,粘贴到文本中。把红框处的内容复制出来备用。需要赋值给运行代码里的 const headers

4.打开Payload,记下这些信息,需要赋值给运行代码里的 const body

5.查看Request url,需要赋值给运行代码里的 const baseUrl

6.在F12中,找到下面这个请求,把url复制到浏览器地址栏中。url中的search=&,在=和&中间可以输入需要过滤的内容,如果不需要,则直接复制url。

回车后,会看到匹配的书籍信息。

Ctrl+A, Ctrl+C,把内容都复制出来,到文本中。做下json格式化。我使用的是notepad++,有jsonFormat的插件,如果没有,也可以找在线网站,在线格式化。

搜索 "id" ,把所有的id数字提取出来,保存到本地的一个ids.txt中。这个文本的绝对路径要记住,需要替换运行脚本中的 const parametersFilePath。

7.在新建文本,把下面的代码复制粘贴。同时把上面几处的内容,替换到下面的脚本中。保存成run.js文件

const fs = require('fs');
const axios = require('axios');

// 替换请求 body 中的 bookid 字段并发送请求
async function sendRequestWithParameters(url, headers, body, parameters) {
    for (const parameter of parameters) {
        // 替换请求 body 中的 bookid 字段
		 const requestBody = { ...body, pk: parameter };
        try {
            const response = await axios.post(url, requestBody, { headers });
            console.log(`Request for pk '${parameter}' sent successfully:`, response.data);
        } catch (error) {
            console.error(`Error sending request for pk '${parameter}':`, error.message);
        }
    }
}
// 从本地文件中读取参数
function readParametersFromFile(filePath) {
    try {
        const fileContent = fs.readFileSync(filePath, 'utf-8');
        return fileContent.trim().split('\n').filter(Boolean); // 按行分割并过滤空行
    } catch (error) {
        console.error('Error reading parameters from file:', error.message);
        return [];
    }
}
// 示例参数 
const baseurl = 'http://xxx.xxx.xxx.xxx:8083/ajax/editbooks/title';
const headers = {
    "accept": "*/*",
    "accept-language": "zh-CN,zh;q=0.9,zh-TW;q=0.8",
    "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
    "x-csrftoken": "IjRkODNmMTk0OTc3MTM3MmQwMGExNGYyZDZiNjVmMWFkZTQ5NGVmMzMi.Ze7RkQ.0-ZugZ8iP60ckWTUdFg3iSa6V8s",
    "x-requested-with": "XMLHttpRequest",
    "cookie": "_SSID=8X7BSUFzTS-83a-s1NSMzL_Mihj7_J5TtF7COGu7u1I; access_token=126.fe74b0f037daa99bb3963919955836f7.Y7aGpj_JSqxhksa-aQyK64dIf3aiYU3_J2xJY08.aoEbhw; synology_token=4978bf69-e7d9-49f9-a3b3-7c6f526469bb; stay_login=1; did=dTxWYC7sdbSAhxhjLovFnnM7uFJEKo7mEaDGF4F_PIZLYZmohY0PzwPCNkt-ixNp0S5rQkRIu28EVl6p-Ejfvw; _CrPoSt=cHJvdG9jb2w9aHR0cDo7IHBvcnQ9NTAwMDsgcGF0aG5hbWU9Lzs%3D; remember_token=1|6d26f6d6348dc2fe1dc2c8d3951165042b927561144282898e70c1c068fbe5e699d7b6f9573a3493417e4f9af91771855c621add479a8afcdb0ec13ecacebfe3; id=uTkE7zOWHGtHo3pnWQIfvxPILbBeES6MQbLkxmuF15kYFyhOdMV4peH3eGDpcu8eQoe8aRRm99ofR9ulQvztdY; ViewType=timeline; io=7r94WkHXvrSNj0XDAAEe; session=.eJwlzjFuBDEIQNG7uE5hDMawlxmBASWKlEgzu1WUu2eklP9X76cddeb13h7P85Vv7fiI9mjKlQh9rWHRx1BySelMNIkqwsTUc0xKBd4o0kcUmiwmddyuzrQZTZk1rIOJmxAPjA4OooWSNbEbk6TmloWwx_QCL88d1G7I68rzXwN37uus4_n9mV_3oBAsUNK1ANeI3g2oRrDzLLBIUspCbL9_kRk-0w.Ze7SUw.xuzb17BOLuH10s-jAuhO0orpN-Y",
    "Referer": "http://xxx.xxx.xxx.xxx:8083/table?data=list&sort_param=stored",
    "Referrer-Policy": "strict-origin-when-cross-origin"
};
 
const body = { "name":"title","value":"扫描文档",checkA:true, "checkB":true, "pk": 0 };
const parametersFilePath = 'd:/ids.txt'; // 参数文件路径

// 从文件中读取参数并调用函数发送请求
const parameters = readParametersFromFile(parametersFilePath);
if (parameters.length > 0) {
    sendRequestWithParameters(baseurl, headers, body, parameters);
} else {
    console.error('No parameters found in the file.');
}

8.windows下打开cmd,运行 node run.js 即可。

9.前面的请求有时效性,过一会就会失效,可以刷新页面,从新的请求中获取 const headers信息。

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高考我军

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值