【Python】批量将PDG合成PDF,以及根据SS号重命名秒传的文件

news2024/11/16 7:30:15

目录

  • 说明
  • 批量zip2pdf
  • 批量zip2pdf下载
  • SS号重命名源代码
  • SS号重命名源代码下载
  • 附录,水文年鉴

说明

1、zip2pdf是一个开源软件,支持自动化解压压缩包成PDG,PDG合成PDF,笔者在其基础上做了部分修改,支持批量转换。

2、秒传的文件是有一部分是根据SS号命名的,下载量大的话修改起来会十分麻烦。可以根据查询接口,读取SS号对应的书名,重命名本地文件。

批量zip2pdf

单文件模式(输入1)即原版模式,多文件模式(输入2)即自动读取目录下的压缩文件,逐一转化,避免手动输入。
在这里插入图片描述

批量zip2pdf下载

下载链接

SS号重命名源代码


def get_book_name(ss_id):
    # 设置请求头
    header = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0"
    }
    # 构造请求的URL
    url = f"https://api.xxxxxxxx.com/search?category=duxiu&q={ss_id}"
    # 发送GET请求并获取响应
    response = requests.get(url, headers=header)
    # 初始化name变量为None
    name = None
    try:
        # 解析响应的JSON数据,获取书名
        name = json.loads(response.text)["books"][0][5].replace(",", " ")
    except Exception as e:
        # 如果出现异常,打印异常信息
        print(e)
    # 等待1秒
    time.sleep(1)
    # 返回书名
    return name


def export_get_book_list(pdf_path):
    file_name = ""
    for f in glob(f"{pdf_path}/*.pdf"):
        p = Path(f)
        raw_name = p.name.replace(".pdf", "")
        file_name += f"{raw_name}\n"
    with open("file_name.txt", "w") as f:
        f.write(file_name)


if __name__ == "__main__":
    pdf_path = Path.cwd() / "pdf"
    for f in glob(f"{pdf_path}/*.pdf"):
        p = Path(f)
        ss_id = p.name.replace(".pdf", "")
        raw_name = get_book_list(ss_id)
        # 增加汉字年
        raw_name_lst = raw_name.split(" ")
        raw_name_lst = list(filter(None, raw_name_lst))
        if "年" not in raw_name_lst[1]:
            raw_name_lst[1] = raw_name_lst[1] + "年"
        new_name = " ".join(raw_name_lst)
        print(new_name)
        p.rename(f"{new_name}_{ss_id}.pdf")

SS号重命名源代码下载

点击下载

附录,水文年鉴

笔者导出了数据库里面所有水文年鉴,当前版本的数据库包含的水文年鉴,大约总共200多本,且主要为1988年之前的黄河流域水文年鉴。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1243700.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQL LIKE 运算符:用法、示例和通配符解释

SQL中的LIKE运算符用于在WHERE子句中搜索列中的指定模式。通常与LIKE运算符一起使用的有两个通配符: 百分号 % 代表零个、一个或多个字符。下划线 _ 代表一个单个字符。 以下是LIKE运算符的用法和示例: 示例 选择所有以字母 “a” 开头的客户&#x…

如何应用ChatGPT撰写、修改论文及工作报告,提供写作能力及优化工作??

如果我想让gpt从pdf文档中提取相关关键词的内容,可以怎么做呢??我们评论区讨论 ChatGPT 在论文写作与编程方面也具备强大的能力。无论是进行代码生成、错误调试还是解决编程难题,ChatGPT都能为您提供实用且高质量的建议和指导&am…

【SpringMVC】 三层架构

一.lombok工具包 中央仓库查找这个工具包:https://mvnrepository.com/ 给类添加Data注解就可以获取gettter和setter方法 , 这样我们就不必写getter 和 setter 方法. 也可以给成员属性添加单独的getter 和 setter , 针对某个成员属性单独添加setter或setter方法. 二.如果使用spr…

Leetcode173. 二叉搜索树迭代器

Every day a Leetcode 题目来源:173. 二叉搜索树迭代器 解法1:中序遍历 我们可以直接对二叉搜索树做一次完全的递归遍历,获取中序遍历的全部结果并保存在数组中。随后,我们利用得到的数组本身来实现迭代器。 代码&#xff1a…

Python生产、消费Kafka

如果想通过docker安装kafka,可参考 Docker安装Kafka 生产者 import json import time import tracebackfrom datetime import datetime from kafka import KafkaProducer from kafka.errors import kafka_errorsproducer KafkaProducer(bootstrap_servers[localho…

JSP:Servlet

Servlet处理请求过程 B/S请求响应模型 Servlet介绍 JSP是Servlet的一个成功应用,其子集。 JSP页面负责前台用户界面,JavaBean负责后台数据处理,一般的Web应用采用JSPJavaBean就可以设计得很好了。 JSPServletJavaBean是MVC Servlet的核心…

NOIP2003提高组第二轮T3:加分二叉树

题目链接 [NOIP2003 提高组] 加分二叉树 题目描述 设一个 n n n 个节点的二叉树 tree \text{tree} tree 的中序遍历为 ( 1 , 2 , 3 , … , n ) (1,2,3,\ldots,n) (1,2,3,…,n),其中数字 1 , 2 , 3 , … , n 1,2,3,\ldots,n 1,2,3,…,n 为节点编号。每个节点都…

抖音汽车租赁小程序背后的技术挑战与解决方案

随着共享经济的不断发展,抖音上的汽车租赁小程序也逐渐崭露头角。然而,这背后涉及的技术挑战却不容小觑。本文将深入探讨抖音汽车租赁小程序的技术挑战,并提出相应的解决方案。 一、实时位置追踪 汽车租赁小程序的核心在于用户能够实时追踪…

JS中reduce函数的使用

一:函数解释 reduce()是一个对数组中的每个元素按照顺序依次执行自定义函数的方法。 就是遍历数组,每个元素都执行相同的方法。 二:实际应用 accumulator和currentValue分别用acc和cur表示哈,举例如下: 应用例子①…

赛迪生电源充电模块维修CHR-22005 RCU-202A

通信电源维修品牌:英可瑞,许继,艾默生,通合,动力源,九洲,华隆,合欣,泰坦,赛迪生等 直流屏模块故障和解决办法: 1、针对各类变电站直流屏,若显示交流空开跳闸,但并没有动作。应当检查三处地方是否正确: 接线是否正确…

SWT/Jface(2): 表格的编辑

前言 上节说到, 创建和渲染表格需要如下几个步骤: 接收源数据数组(也可以是单个对象或者其他集合类型): TableViewer.setInput(Object)渲染接收的数据 渲染表头: TableViewer.setLabelProvider(IBaseLabelProvider)渲染内容: TableViewer.setContentProvider(IContentProvide…

k8s-pod生命周期 4

容器环境初始化 pod 由pod 镜像来提供,在pod 生命周期里容器主要分为两种:初始化容器和主容器 初始化容器一定要成功运行并退出,当初始化容器运行退出完了之后主容器开始和运行 主容器开始运行的时候,有两个探针:存…

【C++初阶】STL详解(七)Stack与Queue的模拟实现

本专栏内容为:C学习专栏,分为初阶和进阶两部分。 通过本专栏的深入学习,你可以了解并掌握C。 💓博主csdn个人主页:小小unicorn ⏩专栏分类:C 🚚代码仓库:小小unicorn的代码仓库&…

git-3

1.如何让工作区的文件恢复为和暂存区一样? 工作区所作的变更还不及暂存区的变更好,想从暂存区拷贝到工作区,变更工作区(恢复成和暂存区一样的状态),想到用git checkout -- 文件名 2.怎样取消暂存区部分文件的更改? 如…

C语言函数练习(超基础超详细)

ps:题目来源于pta平台。 1. int sum(int m, int n) {int sum0;for(int im; i<n; i){sumi;}return sum; } 2. int max(int a, int b) {if(a>b)return a;else return b; } 3. double dist( double x1, double y1, double x2, double y2 ) {return sqrt((x1-x2)*(x1…

STM32笔记---RTC

目录 一、RTC简介 二、主要特性 三、功能描述 3.1 读RTC寄存器 3.2 配置RTC寄存器 四、BKP简介 五、RTC_Init() 1. 函数BKP_ReadBackupRegister 2.RCC_LSEConfig设置外部低速晶振&#xff08;LSE&#xff09; 3.RTC基本结构 5.RTC_Init()实现 6.time.h 一、R…

靠这份求职指南找工作,稳了!

大家好&#xff0c;我是鱼皮。为了帮助朋友们更好的准备秋招&#xff0c;我们精心汇总整理了 编程导航星球 内鱼友反馈的 200 多个高频求职问题和 150 多篇面经、以及最新秋招企业投递信息表&#xff0c;解答大家的求职困惑。 一、最新秋招投递信息表 目前已汇总整理了 600 多家…

spring 是如何开启事务的, 核心原理是什么

文章目录 spring 是如何开启事务的核心原理1 基于注解开启事务2 基于代码来开启事务 spring 是如何开启事务的 核心原理 Spring事务管理的实现有许多细节&#xff0c;如果对整个接口框架有个大体了解会非常有利于我们理解事务&#xff0c;下面通过讲解Spring的事务接口来了解…

人工智能今天能为你做什么?生成式人工智能如何改变技术文档领域

▲ 搜索“大龙谈智能内容”关注GongZongHao▲ 作者 | Fabrice Lacroix 大型语言模型&#xff08;LLM&#xff09;和生成式人工智能&#xff08;GenAI&#xff09;&#xff0c;尤其是ChatGPT&#xff0c;这些是引领科技革新的新兴技术。它们不仅在科技界引起了轩然大波&#x…

项目经理超能力图鉴

大家好&#xff0c;我是老原。 在项目管理中&#xff0c;项目经理远没有大家想象中的那么光鲜亮丽&#xff0c;反而成为了背锅的代名词。 项目顺利的时候&#xff0c;老板和颜悦色、团队融洽顺利&#xff1b; 项目出问题时&#xff0c;项目经理不得不承担起责任&#xff0c;…