mirror of
https://github.com/yihong0618/bilingual_book_maker.git
synced 2025-06-05 19:15:34 +00:00
* feat: change api base for #42 * fix: typo
This commit is contained in:
parent
1ad276808b
commit
7249540e98
5
.github/workflows/make_test_ebook.yaml
vendored
5
.github/workflows/make_test_ebook.yaml
vendored
@ -33,7 +33,10 @@ jobs:
|
|||||||
run: pip install -r requirements.txt
|
run: pip install -r requirements.txt
|
||||||
- name: make test ebook
|
- name: make test ebook
|
||||||
if: env.OPENAI_API_KEY != null
|
if: env.OPENAI_API_KEY != null
|
||||||
run: python3 make_book.py --book_name "test_books/${{ env.EPUB_FILENAME_BASE}}.epub" --no_limit --test --test_num 5 --language zh-hans
|
run: |
|
||||||
|
python3 make_book.py --book_name "test_books/${{ env.EPUB_FILENAME_BASE}}.epub" --no_limit --test --test_num 2 --language zh-hans
|
||||||
|
python3 make_book.py --book_name "test_books/${{ env.EPUB_FILENAME_BASE}}.epub" --no_limit --test --test_num 2 --language ja --model gpt3
|
||||||
|
|
||||||
- name: Rename and Upload ePub
|
- name: Rename and Upload ePub
|
||||||
if: env.OPENAI_API_KEY != null
|
if: env.OPENAI_API_KEY != null
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v2
|
||||||
|
@ -24,6 +24,7 @@ Make bilingual epub books Using AI translate
|
|||||||
Default target language is `"Simplified Chinese"`. Support language list please see the LANGUAGES at [utils.py](./utils.py).
|
Default target language is `"Simplified Chinese"`. Support language list please see the LANGUAGES at [utils.py](./utils.py).
|
||||||
7. 加了 `--proxy` 参数,方便中国大陆的用户在本地测试时使用代理,传入类似 `http://127.0.0.1:7890` 的字符串
|
7. 加了 `--proxy` 参数,方便中国大陆的用户在本地测试时使用代理,传入类似 `http://127.0.0.1:7890` 的字符串
|
||||||
8. 加入 `--resume` 命令,可以手动中断后,加入命令继续执行。
|
8. 加入 `--resume` 命令,可以手动中断后,加入命令继续执行。
|
||||||
|
9. 如果你遇到了墙需要用 Cloudflare Workers 替换 api_base 请使用 `--api_base ${url}` 来替换
|
||||||
|
|
||||||
e.g.
|
e.g.
|
||||||
```shell
|
```shell
|
||||||
|
@ -26,6 +26,7 @@ Make bilingual epub books Using AI translate
|
|||||||
Default target language is `"Simplified Chinese"`. Support language list please see the LANGUAGES at [utils.py](./utils.py).
|
Default target language is `"Simplified Chinese"`. Support language list please see the LANGUAGES at [utils.py](./utils.py).
|
||||||
7. Use the --proxy parameter to enable users in mainland China to use a proxy when testing locally. Enter a string such as http://127.0.0.1:7890.
|
7. Use the --proxy parameter to enable users in mainland China to use a proxy when testing locally. Enter a string such as http://127.0.0.1:7890.
|
||||||
8. Use the --resume command to manually resume the process after an interruption.
|
8. Use the --resume command to manually resume the process after an interruption.
|
||||||
|
9. If you want to change api_base like using Cloudflare Workers Use --api_base ${url} to support it.
|
||||||
|
|
||||||
e.g.
|
e.g.
|
||||||
```shell
|
```shell
|
||||||
|
43
make_book.py
43
make_book.py
@ -6,13 +6,13 @@ from abc import abstractmethod
|
|||||||
from copy import copy
|
from copy import copy
|
||||||
from os import environ as env
|
from os import environ as env
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from tqdm import tqdm
|
|
||||||
|
|
||||||
import openai
|
import openai
|
||||||
import requests
|
import requests
|
||||||
from bs4 import BeautifulSoup as bs
|
from bs4 import BeautifulSoup as bs
|
||||||
from ebooklib import epub
|
from ebooklib import epub
|
||||||
from rich import print
|
from rich import print
|
||||||
|
from tqdm import tqdm
|
||||||
|
|
||||||
from utils import LANGUAGES, TO_LANGUAGE_CODE
|
from utils import LANGUAGES, TO_LANGUAGE_CODE
|
||||||
|
|
||||||
@ -22,7 +22,7 @@ RESUME = False
|
|||||||
|
|
||||||
|
|
||||||
class Base:
|
class Base:
|
||||||
def __init__(self, key, language):
|
def __init__(self, key, language, api_base=None):
|
||||||
self.key = key
|
self.key = key
|
||||||
self.language = language
|
self.language = language
|
||||||
self.current_key_index = 0
|
self.current_key_index = 0
|
||||||
@ -39,10 +39,13 @@ class Base:
|
|||||||
|
|
||||||
|
|
||||||
class GPT3(Base):
|
class GPT3(Base):
|
||||||
def __init__(self, key, language):
|
def __init__(self, key, language, api_base=None):
|
||||||
super().__init__(key, language)
|
super().__init__(key, language)
|
||||||
self.api_key = key
|
self.api_key = key
|
||||||
self.api_url = "https://api.openai.com/v1/completions"
|
if not api_base:
|
||||||
|
self.api_url = "https://api.openai.com/v1/completions"
|
||||||
|
else:
|
||||||
|
self.api_url = api_base + "v1/completions"
|
||||||
self.headers = {
|
self.headers = {
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
}
|
}
|
||||||
@ -70,18 +73,20 @@ class GPT3(Base):
|
|||||||
|
|
||||||
|
|
||||||
class DeepL(Base):
|
class DeepL(Base):
|
||||||
def __init__(self, session, key):
|
def __init__(self, session, key, api_base=None):
|
||||||
super().__init__(session, key)
|
super().__init__(session, key, api_base=api_base)
|
||||||
|
|
||||||
def translate(self, text):
|
def translate(self, text):
|
||||||
return super().translate(text)
|
return super().translate(text)
|
||||||
|
|
||||||
|
|
||||||
class ChatGPT(Base):
|
class ChatGPT(Base):
|
||||||
def __init__(self, key, language):
|
def __init__(self, key, language, api_base=None):
|
||||||
super().__init__(key, language)
|
super().__init__(key, language, api_base=api_base)
|
||||||
self.key = key
|
self.key = key
|
||||||
self.language = language
|
self.language = language
|
||||||
|
if api_base:
|
||||||
|
openai.api_base = api_base
|
||||||
|
|
||||||
def translate(self, text):
|
def translate(self, text):
|
||||||
print(text)
|
print(text)
|
||||||
@ -135,10 +140,10 @@ class ChatGPT(Base):
|
|||||||
|
|
||||||
|
|
||||||
class BEPUB:
|
class BEPUB:
|
||||||
def __init__(self, epub_name, model, key, resume, language):
|
def __init__(self, epub_name, model, key, resume, language, model_api_base=None):
|
||||||
self.epub_name = epub_name
|
self.epub_name = epub_name
|
||||||
self.new_epub = epub.EpubBook()
|
self.new_epub = epub.EpubBook()
|
||||||
self.translate_model = model(key, language)
|
self.translate_model = model(key, language, model_api_base)
|
||||||
self.origin_book = epub.read_epub(self.epub_name)
|
self.origin_book = epub.read_epub(self.epub_name)
|
||||||
self.p_to_save = []
|
self.p_to_save = []
|
||||||
self.resume = resume
|
self.resume = resume
|
||||||
@ -281,6 +286,13 @@ if __name__ == "__main__":
|
|||||||
default="",
|
default="",
|
||||||
help="use proxy like http://127.0.0.1:7890",
|
help="use proxy like http://127.0.0.1:7890",
|
||||||
)
|
)
|
||||||
|
# args to change api_base
|
||||||
|
parser.add_argument(
|
||||||
|
"--api_base",
|
||||||
|
dest="api_base",
|
||||||
|
type=str,
|
||||||
|
help="replace base url from openapi",
|
||||||
|
)
|
||||||
|
|
||||||
options = parser.parse_args()
|
options = parser.parse_args()
|
||||||
NO_LIMIT = options.no_limit
|
NO_LIMIT = options.no_limit
|
||||||
@ -303,5 +315,14 @@ if __name__ == "__main__":
|
|||||||
# use the value for prompt
|
# use the value for prompt
|
||||||
language = LANGUAGES.get(language, language)
|
language = LANGUAGES.get(language, language)
|
||||||
|
|
||||||
e = BEPUB(options.book_name, model, OPENAI_API_KEY, RESUME, language=language)
|
# change api_base for issue #42
|
||||||
|
model_api_base = options.api_base
|
||||||
|
e = BEPUB(
|
||||||
|
options.book_name,
|
||||||
|
model,
|
||||||
|
OPENAI_API_KEY,
|
||||||
|
RESUME,
|
||||||
|
language=language,
|
||||||
|
model_api_base=model_api_base,
|
||||||
|
)
|
||||||
e.make_bilingual_book()
|
e.make_bilingual_book()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user