# Sigil插件模拟环境包
**Repository Path**: love2wind/sigil_env
## Basic Information
- **Project Name**: Sigil插件模拟环境包
- **Description**: Sigil插件模拟环境,脱离Sigil平台调试Sigil插件。
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 3
- **Created**: 2023-06-03
- **Last Updated**: 2023-06-03
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Sigil插件环境模拟包
模拟Sigil插件环境的,让Sigil插件摆脱 Sigil 平台,在其他平台的 Python 环境下运行。
Sigil启动插件时,会根据插件类型将 epub 分别打包为 BookContainer 对象、InputContainer 对象、OutputContainer 对象 或 ValidationContainer 对象。即 插件入口 run(bk) 的唯一参数 bk 对象。
此包的功能正是将 epub 打包为 BookContainer 等四种类型之一的对象,以供插件调试使用。
## **使用方法:**
### **导入包**
```python
from sigil_env import Ebook
```
### **示例**
```python
# 插件入口
def run(bk):
print(list(bk.text_iter()))
return 0
# sigil_env 包建议在 plugin.py 的 __main__ 入口下导入与使用,
# 该入口下可保留调试代码,不需担心调试代码与实际Sigil环境的差异。
# 因为 Sigil 插件正式运行时只进入 run 入口,不会经过 __main__ 入口。
if __name__ == "__main__":
# 导入包
from sigil_env import Ebook
# Epub 源路径
epub_src = "test.epub"
# 打包对象
bk = Ebook(epub_src)
# 插件运行
run(bk)
# epub 另存为
bk.save_as("test_repack.epub")
```
### **打包 BookContainer 对象**
```python
# 默认打包类型为 BookContainer
bk = EBook(epub_src)
# 或
bk = EBook(epub_src, plugin_type="edit")
```
### **打包 InputContainer 对象**
```python
bk = EBook(epub_src, plugin_type="input")
```
### **打包 OutputContainer 对象**
```python
bk = EBook(epub_src, plugin_type="output")
```
### **打包 ValidationContainer 对象**
```python
bk = EBook(epub_src, plugin_type="validation")
```
### **重构 EPUB 为 Sigil 标准格式**
```python
bk.standardize_epub()
```
注意: `standardize_epub` 方法是 sigil_env 包独有,实际插件环境的 bk 对象并不存在该方法,因此该方法建议只在 `__main__` 入口下调用。
### **另存为**
调用 `bk.save_as(filepath)` 可将 bk 对象导出为 Epub,一般在插件程序完成后调用功能以生成处理过的EPUB。
仅限 `BookContainer`、`InputContainer` 的对象可调用 `save_as` ,其他两个类不需要也不能调用 `save_as` 方法。
```python
bk.save_as() # 如果不指定路径,默认生成在源EPUB同级目录的 "OUTPUT/[同名].epub"
# 或
bk.save_as("test_repack.epub") # 指定生成路径
```
需要注意的是,`save_as` 方法是 sigil_env 包独有,实际插件环境的 bk 对象并不存在该方法。因此该方法建议只在 `__main__` 入口下调用。
### **导入 sigil_bs4 库**
`sigil_bs4` 库是Sigil插件环境自带的一个库,在导入 sigil_env 后也可以导入该库。不过一般等到 `__main__` 入口再导入 sigil_env 有点迟,如果需要 `sigil_bs4` ,建议在文件开头导入 sigil_env。
例如:
```python
# 在文件开头即导入 sigil_env 包,可保证 sigil_bs4 的导入正常
from sigil_env import Ebook
from sigil_bs4 import BeautifulSoup
def run(bk):
'''your plugin entry'''
return 0
if __name__ == "__main__":
epub_src = "test.epub"
bk = Ebook(epub_src)
run(bk)
```
### **临时目录**
Sigil插件环境模拟包运行时,会在源epub的相同目录下产生一个名为 `__temp_workspace__` 的目录,临时存放 epub 解压内容。如果插件完全正常运行,则运行结束后该临时目录会自动清除,如果插件异常退出,则可能需要手动清除该目录。