| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import base64
- import hashlib
- import time
- import re
- import requests
- import zipfile
- import os
- from filetools import FileTools
- from template import Template
- file_tools= FileTools()
- template=Template(file_tools.get_ab_path('templates'))
- class Epub:
- id = ""
- name = ""
- temp_dir = "" # 相对路径
- def __init__(self, name):
- self.name=name
- self.id = str(base64.b64encode(bytes(hashlib.md5(base64.b64encode(
- bytes(name, encoding='utf-8'))).hexdigest(), encoding='utf-8'))[-10:-1], encoding='utf-8')
- self.temp_dir='temp/%s%s' % (int(time.time()), self.id)
- file_tools.mkdir(self.temp_dir)
- self.write_base_file()
- def get_path(self, file):
- return "%s/%s" % (self.temp_dir, file)
-
- def write_base_file(self):
- file_tools.mkdir(self.get_path('META-INF'))
- file_tools.mkdir(self.get_path('OEBPF'))
- file_tools.mkdir(self.get_path('OEBPF/content'))
- file_tools.mkdir(self.get_path('OEBPF/css'))
- file_tools.mkdir(self.get_path('OEBPF/images'))
- file='mimetype'; file_tools.write(self.get_path(file), template.get(file))
- file='META-INF/container.xml'; file_tools.write(self.get_path(file), template.get(file))
- file='OEBPF/css/ebook.css'; file_tools.write(self.get_path(file), template.get(file))
- file='OEBPF/css/ebook.css'; file_tools.write(self.get_path(file), template.get(file))
- file='OEBPF/ebook.opf'; file_tools.write(self.get_path(file), template.get(file, name=self.name, id=self.id))
- file='OEBPF/navigation.ncx'; file_tools.write(self.get_path(file), template.get(file, name=self.name, id=self.id))
- def image_process(self, text):
- pattern = re.compile(r'https://sdjrzk-1251357229.cos.ap-guangzhou.myqcloud.com/exam/paper/\d+/images/\d+.[a-z]{3}')
- res=pattern.findall(text)
- if res:
- header = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
- 'Chrome/63.0.3239.132 Safari/537.36'}
- for image in res:
- temp_file=image.replace('/images/','_').replace('https://sdjrzk-1251357229.cos.ap-guangzhou.myqcloud.com/exam/paper/','%s/OEBPF/images/' % self.temp_dir)
- pic=requests.get(image, headers=header)
- print(file_tools.write_b(temp_file, pic.content))
- return text.replace('/images/','_').replace('https://sdjrzk-1251357229.cos.ap-guangzhou.myqcloud.com/exam/paper/','../images/')
- def process(self, text):
- cwd=os.getcwd()
- text = self.image_process(text)
- file='OEBPF/content/s1.xhtml'; file_tools.write(self.get_path(file), template.get(file, title=self.name, data=text))
- z=zipfile.ZipFile(file_tools.get_ab_path("output/%s.epub"%self.name), 'w', zipfile.ZIP_STORED)
- os.chdir(file_tools.get_ab_path(self.temp_dir))
- for dirpath, dirnames, filenames in os.walk('./'):
- for filename in filenames:
- z.write(os.path.join(dirpath, filename))
- os.chdir(cwd)
-
- def clean(self):
- file_tools.rm(self.temp_dir)
|