吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5892|回复: 29
收起左侧

[Python 转载] 刚生成的带书签 python王者归来 pdf 及制作方法

[复制链接]
我乐逍遥 发表于 2020-5-26 17:25
本帖最后由 我乐逍遥 于 2020-5-26 19:20 编辑

第一次发帖,排版见谅,正好学以致用  用python解决了到处找书签目录的问题。python能力有限 方法可能比较死板
直接从文泉试读里面 抓取想要的目录 然后直接用PdgCntEditor 软件添加  制作书签就快多了
觉得有用麻烦送上小红心谢谢


链接:https://pan.baidu.com/s/1coQSz_lL4UQTGlGPViQo4A
提取码:iqff


方法如下:


        一、提取目录


  二、使用 PdgCntEditor 软件添加目录


  三、检测检查目录
一、提取目录


  1、找到对应电子书文泉试读——  打开审查元素——   network——  搜索到目录相关文字 找到目录json
         图片1.png
  


  2、双击自动选中 可以直接打开 复制 或者 复制链接下载都行。
       图片2.png
  


  





  3、然后看到是这样一个数据。


   图片3.png





  4、接着用到刚学的python基础知识


  桌面存放刚刚保存的json数据 json.txt

[Python] 纯文本查看 复制代码
#!/usr/bin/env python# -*- coding:utf-8 -*-
import json
# 读取数据
with open(r'C:\Users\HAPPY\Desktop\json.txt', 'r', encoding="utf-8") as f:
    load_dict = json.load(f)
json_len = len(load_dict["data"])
for i in range(0, json_len):
    json_label = load_dict["data"][i]["label"]
    json_pnum = load_dict["data"][i]["pnum"]
    print(json_label, json_pnum)
    if "children" in load_dict["data"][i]:
        json_len_children = len(load_dict["data"][i]["children"])
        for z in range(0, json_len_children):
            children_json_label = load_dict["data"][i]["children"][z]["label"]
            children_json_pnum = load_dict["data"][i]["children"][z]["pnum"]
            print(children_json_label, children_json_pnum)



1931736-20200526141526200-1562690483.png





二、使用 PdgCntEditor 软件添加目录


  1、先打开软件 打开需要添加的目录 然后把刚刚python解析的目录复制到空白


  全选目录文字  点击   自动切分页码
       图片4.png
 





  2、这里的目录 和电子书基本是核对得上的。


  基准页就是PDF 打开的第一页,要和目录对应。


  确定后保存
       图片5.png
  


  3、不用软件的目录缩进排版 也行,我这个目录级别不多,如果多级目录就点一点 (自动切分页旁边的键)








三、检测目录 (ok 没有问题)
          图片6_1.jpg

免费评分

参与人数 8吾爱币 +8 热心值 +7 收起 理由
hshcompass + 1 + 1 热心回复!
vethenc + 1 + 1 谢谢@Thanks!
geek_007 + 1 + 1 谢谢@Thanks!
lgb446023743 + 1 + 1 谢谢@Thanks!
o97 + 1 + 1 谢谢@Thanks!
bingbing87 + 1 + 1 谢谢@Thanks!
skygho + 1 非常酷的操作
tiger_j2ee + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 我乐逍遥 发表于 2020-5-28 15:49
ligxi 发表于 2020-5-28 15:46
我把脚本更新了,现在有了一个默认位置“脚本所在目录”。你可以再试试有问题欢迎反馈哈。

好的 谢谢 我改了个地方也可以了  我试试你更新的看看
这是我改的
[Python] 纯文本查看 复制代码
import requests
import fitz
# 功能:打开文件并添加目录
pdf = input('请输入需要添加目录的PDF完整文件名:')
# 解决cmd导致的符号问题。
if '--' in pdf:
    pdf = pdf.replace('--', '——')
#
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36",
    'x-requested-with': 'XMLHttpRequest',
    'content-type': 'application/x-www-form-urlencoded; charset=UTF-8'
}
#
wq_url = 'https://wqbook.wqxuetang.com/v1/book/catatree?bid=%s' % input('请输入书籍的链接或bid:').split('/')[-1]
res = requests.get(url=wq_url, headers=headers)
if res.status_code == 200:
    print('目录信息获取成功!正在添加目录...')
    #
    doc = fitz.open(pdf)
    toc = doc.getToC()
    #
    data = res.json()['data']
    for d in data:
        toc.append([int(d['level']), d['label'], int(d['pnum'])])
        if 'children' in d:
            for c in d['children']: toc.append([int(c['level']), c['label'], int(c['pnum'])])
    #
    doc.setToC(toc)
    #doc.save('New_%s' % pdf)
    doc.save('New.pdf')
    doc.close()
    print('目录添加完毕!新文件名:"New_%s"' % pdf)
else:
    print('目录信息获取失败,请重试!')
ligxi 发表于 2020-5-28 11:56
本帖最后由 ligxi 于 2020-5-28 21:09 编辑

文泉书籍添加目录的自动脚本代码:
[Python] 纯文本查看 复制代码
import requests
import fitz
import os

# 功能:打开文件并添加目录
pdf = input('请输入需要添加目录的PDF完整文件名:')

#
root = os.getcwd()

# 解决cmd导致的符号问题。
if '--' in pdf:
    pdf = pdf.replace('--', '——')
#
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36",
    'x-requested-with': 'XMLHttpRequest',
    'content-type': 'application/x-www-form-urlencoded; charset=UTF-8'
}
#
wq_url = 'https://wqbook.wqxuetang.com/v1/book/catatree?bid=%s' % input('请输入书籍的链接或bid:').split('/')[-1]
res = requests.get(url=wq_url, headers=headers)
if res.status_code == 200:
    print('目录信息获取成功!正在添加目录...')
    #
    doc = fitz.open(pdf)
    toc = []
    #
    data = res.json()['data']
    for d in data:
        toc.append([int(d['level']), d['label'], int(d['pnum'])])
        if 'children' in d:
            for c in d['children']: toc.append([int(c['level']), c['label'], int(c['pnum'])])
    #
    doc.setToC(toc)
    pdf = pdf.split('\\')[-1]
    doc.save('%s\\New_%s' % (root, pdf))
    doc.close()
    print('目录添加完毕!文件保存的位置:%s\\New_%s' % (root, pdf))
else:
    print('目录信息获取失败,请重试!')
zhwt1234 发表于 2020-5-26 18:04
winbug 发表于 2020-5-26 19:16
厉害了,多谢
 楼主| 我乐逍遥 发表于 2020-5-26 23:01
本帖最后由 我乐逍遥 于 2020-5-27 10:45 编辑

清华 文泉  其他电子书目录 基本都可以这样快速提取出来  已经做了好几本了 (&#3665;>&#1538;<&#3665;)
HidendDragon 发表于 2020-5-27 06:37
膜拜高人
kiweni 发表于 2020-5-27 08:55
平均20k不到的速率,  能不用百度就不用百度
 楼主| 我乐逍遥 发表于 2020-5-27 10:15
kiweni 发表于 2020-5-27 08:55
平均20k不到的速率,  能不用百度就不用百度

文叔叔 https://ws28.cn/f/2ma0xuewbq5
csa 发表于 2020-5-27 17:49
这个不错喔,,感谢分享啦
kiweni 发表于 2020-5-27 19:28
我乐逍遥 发表于 2020-5-27 10:15
文叔叔 https://ws28.cn/f/2ma0xuewbq5

十分感谢
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 22:13

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表