大白兔联盟

文章搜索
搜索
当前位置:首页 > code宝库 > java code > 文章详情

[Python] 义务教育阶段教材下载

大白兔  java code  2023-2-2  96  0评论

背景

教材版权归出版社所有,在此仅作代码交流用途。

import os
import requests
from PIL import Image

class Crawler:
  textbooks: dict[str, dict[str, int]]

  def __init__(self, textbooks: dict[str, dict[str, int]]) -> None:
    self.textbooks = textbooks

  def download_pic(self, book: str) -> None:
    '''
    description: 下载图片
    param       {*} self
    param       {str} book
    return      {*}
    author     : Senkita
    '''
    os.makedirs(book, exist_ok=True)
    book_id: int = self.textbooks[book]['id']
    pages: int = self.textbooks[book]['pages']
    for page in range(pages):
      page_num: int = page + 1

      url: str = 'https://book.pep.com.cn/{}/files/mobile/{}.jpg'.format(
        book_id, page_num
      )
      res = requests.get(url)

      with open('{}/{}.jpg'.format(book, page_num), 'wb') as f:
        f.write(res.content)

  @staticmethod
  def sort_pic(book: str) -> list:
    '''
    description: 图片排序
    param       {str} book
    return      {list}
    author     : Senkita
    '''
    files: list = []
    for file in os.listdir(book):
      if file[-4:] == '.jpg':
        files.append(file[:-4])

    files.sort(key=lambda ele: int(ele))
    return files

  @staticmethod
  def generate_pdf(book: str, files: list) -> None:
    '''
    description: 生成PDF
    param       {str} book
    param       {list} files
    return      {*}
    author     : Senkita
    '''
    pics: list = []
    pdf: Image.Image = Image.open('{}/{}.jpg'.format(book, files[0]))

    files.pop(0)

    for pic in files:
      img: Image.Image = Image.open('{}/{}.jpg'.format(book, pic))
      if img.mode == 'RGBA':
        img = img.convert('RGB')
      pics.append(img)

    pdf.save(
      './{}.pdf'.format(book),
      'PDF',
      resolution=100.0,
      save_all=True,
      quality=100,  # 清晰度
      subsampling=0,
      append_images=pics,
    )

  def run(self) -> None:
    for book in self.textbooks:
      self.download_pic(book)
      files: list = self.sort_pic(book)
      self.generate_pdf(book, files)

免责声明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络收集整理,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!

挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
提交评论

清空信息
关闭评论