txt2ebook 0.1.24__py3-none-any.whl → 0.1.26__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
CHANGELOG.md CHANGED
@@ -7,6 +7,35 @@ and this project adheres to [0-based versioning](https://0ver.org/).
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## v0.1.26 - 2023-03-12
11
+
12
+ ### Changed
13
+
14
+ - Rename epub template names, `clean_no_indent` to `noindent`, and
15
+ `clean_no_paragraph_space` to `condense`
16
+ - Raise warnings for invalid prepend length for `zh_words_to_numbers` function
17
+
18
+ ### Fixed
19
+
20
+ - Fix missing translations
21
+ - Fix missing EPUB template names not showing in help message
22
+
23
+ ## v0.1.25 - 2023-03-05
24
+
25
+ ### Added
26
+
27
+ - Add new EPUB templates, `clean_no_indent` and `clean_no_paragraph_space`
28
+
29
+ ### Fixed
30
+
31
+ - Add missing `zh-*` character for `zh_numeric`
32
+ - Remove unused import
33
+ - Fix incorrect dep added to wrong environment
34
+
35
+ ### Changed
36
+
37
+ - Refactor ebook extensions variable into package
38
+
10
39
  ## v0.1.24 - 2023-02-26
11
40
 
12
41
  ### Changed
CONTRIBUTING.md CHANGED
@@ -53,11 +53,17 @@ tox -e py37,py38,py39,py310,py311 -- tests/test_tokenizer.py
53
53
  For code lint, we're using `pre-commit`:
54
54
 
55
55
  ```bash
56
- pre-commit install
56
+ pre-commit install # run once
57
57
  pre-commit clean
58
58
  pre-commit run --all-files
59
59
  ```
60
60
 
61
+ Or specific hook:
62
+
63
+ ```bash
64
+ pre-commit run pylint -a
65
+ ```
66
+
61
67
  We're using zero-based versioning.
62
68
 
63
69
  For patches or bug fixes:
txt2ebook/__init__.py CHANGED
@@ -21,7 +21,7 @@ import sys
21
21
 
22
22
  logger = logging.getLogger(__name__)
23
23
 
24
- __version__ = "0.1.24"
24
+ __version__ = "0.1.26"
25
25
 
26
26
 
27
27
  def setup_logger(config: argparse.Namespace) -> None:
@@ -19,11 +19,14 @@ import argparse
19
19
  from typing import Union
20
20
 
21
21
  import txt2ebook.models.book
22
+ from txt2ebook.formats.epub import TEMPLATES as EPUB_TEMPLATES
22
23
  from txt2ebook.formats.epub import EpubWriter
23
24
  from txt2ebook.formats.txt import TxtWriter
24
25
  from txt2ebook.helpers import load_class, to_classname
25
26
  from txt2ebook.models import Book
26
27
 
28
+ EBOOK_FORMATS = ["epub", "txt"]
29
+
27
30
 
28
31
  def create_format(
29
32
  book: txt2ebook.models.book.Book,
@@ -49,6 +52,8 @@ def create_format(
49
52
 
50
53
  __all__ = [
51
54
  "Book",
55
+ "EBOOK_FORMATS",
56
+ "EPUB_TEMPLATES",
52
57
  "EpubWriter",
53
58
  "TxtWriter",
54
59
  ]
txt2ebook/formats/epub.py CHANGED
@@ -19,7 +19,7 @@ import gettext
19
19
  import io
20
20
  import logging
21
21
  import uuid
22
- from importlib.resources import read_text
22
+ from importlib.resources import contents, read_text
23
23
  from pathlib import Path
24
24
  from typing import Optional, Union
25
25
 
@@ -32,6 +32,12 @@ logger = logging.getLogger(__name__)
32
32
 
33
33
  SPACE = "\u0020"
34
34
 
35
+ TEMPLATES = [
36
+ Path(file).stem
37
+ for file in list(contents(template_epub))
38
+ if Path(file).suffix == ".css"
39
+ ]
40
+
35
41
 
36
42
  class EpubWriter:
37
43
  """Module for writing ebook in epub format."""
@@ -0,0 +1,42 @@
1
+ /* cover page */
2
+ div#cover {
3
+ text-align: center;
4
+ width: 100%;
5
+ }
6
+
7
+ /* navigation page - toc */
8
+ ol {
9
+ list-style-type: none;
10
+ padding-left: 0;
11
+ }
12
+
13
+ ol li {
14
+ padding-top: 0.2em;
15
+ }
16
+
17
+ ol li ol li:last-of-type {
18
+ padding-bottom: 1em;
19
+ }
20
+
21
+ ol li a {
22
+ text-decoration: none;
23
+ }
24
+
25
+ /* chapters & section */
26
+ div.volume {
27
+ display: table;
28
+ width: 100%;
29
+ height: 100%;
30
+ }
31
+
32
+ h1.volume {
33
+ display: table-cell;
34
+ text-align: center;
35
+ vertical-align: middle;
36
+ }
37
+
38
+ h2 {
39
+ }
40
+ p {
41
+ margin: 0em;
42
+ }
@@ -0,0 +1,42 @@
1
+ /* cover page */
2
+ div#cover {
3
+ text-align: center;
4
+ width: 100%;
5
+ }
6
+
7
+ /* navigation page - toc */
8
+ ol {
9
+ list-style-type: none;
10
+ padding-left: 0;
11
+ }
12
+
13
+ ol li {
14
+ padding-top: 0.2em;
15
+ }
16
+
17
+ ol li ol li:last-of-type {
18
+ padding-bottom: 1em;
19
+ }
20
+
21
+ ol li a {
22
+ text-decoration: none;
23
+ }
24
+
25
+ /* chapters & section */
26
+ div.volume {
27
+ display: table;
28
+ width: 100%;
29
+ height: 100%;
30
+ }
31
+
32
+ h1.volume {
33
+ display: table-cell;
34
+ text-align: center;
35
+ vertical-align: middle;
36
+ }
37
+
38
+ h2 {
39
+ }
40
+ p {
41
+ text-indent: -2em;
42
+ }
@@ -5,7 +5,7 @@
5
5
  msgid ""
6
6
  msgstr ""
7
7
  "Project-Id-Version: PACKAGE VERSION\n"
8
- "POT-Creation-Date: 2023-02-04 22:03+0800\n"
8
+ "POT-Creation-Date: 2023-03-06 04:02+0800\n"
9
9
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
10
10
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
11
11
  "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -15,22 +15,22 @@ msgstr ""
15
15
  "Content-Transfer-Encoding: 8bit\n"
16
16
  "Generated-By: pygettext.py 1.5\n"
17
17
 
18
- #: src/txt2ebook/formats/epub.py:193
18
+ #: src/txt2ebook/formats/epub.py:199
19
19
  msgid "cover"
20
20
  msgstr "Cover"
21
21
 
22
- #: src/txt2ebook/formats/txt.py:88
22
+ #: src/txt2ebook/formats/txt.py:84
23
23
  msgid "metadata"
24
24
  msgstr "metadata"
25
25
 
26
- #: src/txt2ebook/formats/txt.py:158
26
+ #: src/txt2ebook/formats/txt.py:154
27
27
  msgid "title:"
28
28
  msgstr "Title:"
29
29
 
30
- #: src/txt2ebook/formats/txt.py:159
30
+ #: src/txt2ebook/formats/txt.py:155
31
31
  msgid "author:"
32
32
  msgstr "Author:"
33
33
 
34
- #: src/txt2ebook/formats/txt.py:160
34
+ #: src/txt2ebook/formats/txt.py:156
35
35
  msgid "tag:"
36
36
  msgstr "Tag:"
@@ -5,7 +5,7 @@
5
5
  msgid ""
6
6
  msgstr ""
7
7
  "Project-Id-Version: PACKAGE VERSION\n"
8
- "POT-Creation-Date: 2023-02-05 10:12+0800\n"
8
+ "POT-Creation-Date: 2023-03-06 04:02+0800\n"
9
9
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
10
10
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
11
11
  "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -15,23 +15,23 @@ msgstr ""
15
15
  "Generated-By: pygettext.py 1.5\n"
16
16
 
17
17
 
18
- #: src/txt2ebook/formats/epub.py:193
18
+ #: src/txt2ebook/formats/epub.py:199
19
19
  msgid "cover"
20
20
  msgstr ""
21
21
 
22
- #: src/txt2ebook/formats/txt.py:88
22
+ #: src/txt2ebook/formats/txt.py:84
23
23
  msgid "metadata"
24
24
  msgstr ""
25
25
 
26
- #: src/txt2ebook/formats/txt.py:158
26
+ #: src/txt2ebook/formats/txt.py:154
27
27
  msgid "title:"
28
28
  msgstr ""
29
29
 
30
- #: src/txt2ebook/formats/txt.py:159
30
+ #: src/txt2ebook/formats/txt.py:155
31
31
  msgid "author:"
32
32
  msgstr ""
33
33
 
34
- #: src/txt2ebook/formats/txt.py:160
34
+ #: src/txt2ebook/formats/txt.py:156
35
35
  msgid "tag:"
36
36
  msgstr ""
37
37
 
@@ -5,7 +5,7 @@
5
5
  msgid ""
6
6
  msgstr ""
7
7
  "Project-Id-Version: \n"
8
- "POT-Creation-Date: 2023-02-04 22:03+0800\n"
8
+ "POT-Creation-Date: 2023-03-06 04:02+0800\n"
9
9
  "PO-Revision-Date: 2023-01-14 18:07+0800\n"
10
10
  "Last-Translator: \n"
11
11
  "Language-Team: \n"
@@ -16,22 +16,22 @@ msgstr ""
16
16
  "Generated-By: pygettext.py 1.5\n"
17
17
  "X-Generator: Poedit 3.1.1\n"
18
18
 
19
- #: src/txt2ebook/formats/epub.py:193
19
+ #: src/txt2ebook/formats/epub.py:199
20
20
  msgid "cover"
21
21
  msgstr "封面"
22
22
 
23
- #: src/txt2ebook/formats/txt.py:88
23
+ #: src/txt2ebook/formats/txt.py:84
24
24
  msgid "metadata"
25
25
  msgstr "元数据"
26
26
 
27
- #: src/txt2ebook/formats/txt.py:158
27
+ #: src/txt2ebook/formats/txt.py:154
28
28
  msgid "title:"
29
29
  msgstr "书名:"
30
30
 
31
- #: src/txt2ebook/formats/txt.py:159
31
+ #: src/txt2ebook/formats/txt.py:155
32
32
  msgid "author:"
33
33
  msgstr "作者:"
34
34
 
35
- #: src/txt2ebook/formats/txt.py:160
35
+ #: src/txt2ebook/formats/txt.py:156
36
36
  msgid "tag:"
37
37
  msgstr "票签:"
txt2ebook/parser.py CHANGED
@@ -26,7 +26,7 @@ import regex as re
26
26
 
27
27
  from txt2ebook.models import Book, Chapter, Volume
28
28
  from txt2ebook.tokenizer import Tokenizer
29
- from txt2ebook.zh_utils import zh_halfwidth_to_fullwidth, zh_numeric, zh_words_to_numbers
29
+ from txt2ebook.zh_utils import zh_halfwidth_to_fullwidth, zh_words_to_numbers
30
30
 
31
31
  logger = logging.getLogger(__name__)
32
32
 
@@ -135,7 +135,6 @@ class Parser:
135
135
  )
136
136
  return replaced_words
137
137
 
138
-
139
138
  def parse_tokens(self, tokenizer: Tokenizer) -> Tuple:
140
139
  """Parse the tokens and organize into book structure."""
141
140
  toc: List[Union[Volume, Chapter]] = []
txt2ebook/txt2ebook.py CHANGED
@@ -26,11 +26,9 @@ from langdetect import detect
26
26
 
27
27
  from txt2ebook import __version__, setup_logger
28
28
  from txt2ebook.exceptions import EmptyFileError
29
- from txt2ebook.formats import create_format
29
+ from txt2ebook.formats import EBOOK_FORMATS, EPUB_TEMPLATES, create_format
30
30
  from txt2ebook.parser import Parser
31
31
 
32
- EBOOK_EXTS = ["epub", "txt"]
33
-
34
32
  logger = logging.getLogger(__name__)
35
33
 
36
34
 
@@ -104,7 +102,7 @@ def build_parser(
104
102
  default=None,
105
103
  help=(
106
104
  "converted ebook filename "
107
- "(default: 'TXT_FILENAME.{" + ",".join(EBOOK_EXTS) + "}')"
105
+ "(default: 'TXT_FILENAME.{" + ",".join(EBOOK_FORMATS) + "}')"
108
106
  ),
109
107
  metavar="EBOOK_FILENAME",
110
108
  )
@@ -114,7 +112,7 @@ def build_parser(
114
112
  "--format",
115
113
  dest="format",
116
114
  default=["epub", "txt"],
117
- choices=EBOOK_EXTS,
115
+ choices=EBOOK_FORMATS,
118
116
  action="append",
119
117
  help="ebook format (default: '%(default)s')",
120
118
  )
@@ -264,9 +262,9 @@ def build_parser(
264
262
  "-et",
265
263
  "--epub-template",
266
264
  default="clean",
265
+ choices=EPUB_TEMPLATES,
267
266
  dest="epub_template",
268
267
  help="CSS template for epub ebook (default: '%(default)s')",
269
- metavar="TEMPLATE",
270
268
  )
271
269
 
272
270
  parser.add_argument(
txt2ebook/zh_utils.py CHANGED
@@ -16,10 +16,12 @@
16
16
  """String helper functions for handling zh related text."""
17
17
 
18
18
  import re
19
+ import warnings
19
20
  from typing import Any
20
21
  from unicodedata import numeric
21
22
 
22
23
  WORD_NUMERIC_MAP = {
24
+ "两": 2.0,
23
25
  "圩": 50.0,
24
26
  "圓": 60.0,
25
27
  "進": 70.0,
@@ -130,9 +132,18 @@ def zh_words_to_numbers(words: str, length: int = 0) -> str:
130
132
  header_nums += int(zh_numeric(word_grp))
131
133
 
132
134
  padded_header_nums = str(header_nums)
133
- # todo: padded_header_nums length must smaller than length
135
+
134
136
  if length > 0:
135
- padded_header_nums = padded_header_nums.rjust(length, "0")
137
+ word_length = len(padded_header_nums)
138
+ if word_length < length:
139
+ padded_header_nums = padded_header_nums.rjust(length, "0")
140
+ else:
141
+ warnings.warn(
142
+ (
143
+ "prepend zero length less than word length, "
144
+ f"word length: {word_length}, prepend length: {length}"
145
+ )
146
+ )
136
147
 
137
148
  replaced_words = words.replace(header_words, padded_header_nums)
138
149
  return replaced_words
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: txt2ebook
3
- Version: 0.1.24
3
+ Version: 0.1.26
4
4
  Summary: CLI tool to convert txt file to ebook format
5
5
  Home-page: https://github.com/kianmeng/txt2ebook
6
6
  License: AGPL-3.0-or-later
@@ -31,7 +31,6 @@ Requires-Dist: CJKwrap (>=2.2,<3.0)
31
31
  Requires-Dist: EbookLib (>=0.17.1,<0.18.0)
32
32
  Requires-Dist: bs4 (>=0.0.1,<0.0.2)
33
33
  Requires-Dist: langdetect (>=1.0.9,<2.0.0)
34
- Requires-Dist: pytest-xdist (>=3.1.0,<4.0.0)
35
34
  Requires-Dist: regex (>=2021.11.10,<2022.0.0)
36
35
  Requires-Dist: tox-pyenv (>=1.1.0,<2.0.0)
37
36
  Project-URL: Repository, https://github.com/kianmeng/txt2ebook
@@ -67,8 +66,9 @@ txt2ebook --help
67
66
  usage: txt2ebook [-f {epub,txt}] [-t TITLE] [-l LANGUAGE] [-a AUTHOR]
68
67
  [-c IMAGE_FILENAME] [-w WIDTH] [-ps SEPARATOR] [-rd REGEX]
69
68
  [-rvc REGEX] [-rv REGEX] [-rc REGEX] [-rt REGEX] [-ra REGEX]
70
- [-rl REGEX] [-rr REGEX REGEX] [-et TEMPLATE] [-vp] [-tp]
71
- [-sp] [-hn] [-fw] [-rw] [-ob] [-ow] [-v] [-d] [-h] [-V]
69
+ [-rl REGEX] [-rr REGEX REGEX] [-et {clean,noindent,condense}]
70
+ [-vp] [-tp] [-sp] [-hn] [-fw] [-rw] [-ob] [-ow] [-v] [-d]
71
+ [-h] [-V]
72
72
  TXT_FILENAME [EBOOK_FILENAME]
73
73
 
74
74
  txt2ebook/tte is a cli tool to convert txt file to ebook format.
@@ -112,7 +112,7 @@ optional arguments:
112
112
  regex to delete whole line (default: '[]')
113
113
  -rr REGEX REGEX, --regex-replace REGEX REGEX
114
114
  regex to search and replace (default: '[]')
115
- -et TEMPLATE, --epub-template TEMPLATE
115
+ -et {clean,noindent,condense}, --epub-template {clean,noindent,condense}
116
116
  CSS template for epub ebook (default: 'clean')
117
117
  -vp, --volume-page
118
118
  generate each volume as separate page (only 'epub' format)
@@ -1,14 +1,16 @@
1
- CHANGELOG.md,sha256=d7BnpXWCTddGKR9p43Fpzg_QgdAiqFmyDBT-Fdhha4w,12799
2
- CONTRIBUTING.md,sha256=x8rkYB5kVWhAQ7h1vPTYSOCOmjaQPFZMyjVHUsVn6_0,1340
1
+ CHANGELOG.md,sha256=LaLINjcPErTzsFwx4fZrHrO4oQYV7RyJ1B_EnwPf-A8,13434
2
+ CONTRIBUTING.md,sha256=DZ3pLVwymnPhcMNY6F2lIPmOnHsNFItOHy7zWlhp2n0,1408
3
3
  LICENSE.md,sha256=tGtFDwxWTjuR9syrJoSv1Hiffd2u8Tu8cYClfrXS_YU,31956
4
- txt2ebook/__init__.py,sha256=674VD-ydCC6izd_1zLqwPEQXybUgfhvrJanIirh8rRw,1646
4
+ txt2ebook/__init__.py,sha256=CYBYlRWiEeUCAWfrP4gaWtk5eDG9yfkJp3-BFgkrNfA,1646
5
5
  txt2ebook/__main__.py,sha256=69yaheH-Fv2VIPS0T9kiVmiMluSgLGvwo1fa7badX2I,845
6
6
  txt2ebook/exceptions.py,sha256=Y6rqjXhiKIxNeKWVqvAqsUAOaBFKxlUE5Tm5EBcoi9w,837
7
- txt2ebook/formats/__init__.py,sha256=12RaD1orhQrlDw4991kGqjbquAlDQ-bFtp_nxH1qfcg,1758
8
- txt2ebook/formats/epub.py,sha256=HvWgmdeOoqVofirVChRWudXxr4LaOoe31ruU_krKD_4,8374
7
+ txt2ebook/formats/__init__.py,sha256=z24b6RWphrEVGC-ISw3KHxgkh7ZTsHEQRP_s86kvh4c,1897
8
+ txt2ebook/formats/epub.py,sha256=iXhq3EWT0NxMTiZJuZs2UbYAJBftUXK75f5DlLsq6mY,8502
9
9
  txt2ebook/formats/templates/__init__.py,sha256=0Hhm7Dayb7eB9h2cFo2103H4Tr6ie0ySMZ5gR01q6ag,750
10
10
  txt2ebook/formats/templates/epub/__init__.py,sha256=O2sdWRhkuamReBR20WedGWosLp8Dt8NZ33aXzyNQuLQ,756
11
11
  txt2ebook/formats/templates/epub/clean.css,sha256=AnEwMckzUSKcjKsDiWtJW1oaceuklt2tyuS1VbpVK1s,462
12
+ txt2ebook/formats/templates/epub/condense.css,sha256=Fz80ZqkPsFRmGdURduAxqMV8drD0CCUlrv41P8rUsm8,477
13
+ txt2ebook/formats/templates/epub/noindent.css,sha256=_O5Tv90TKyyPBRdgjuNKFwtKFbdheh2V9PtDhgRUg3U,483
12
14
  txt2ebook/formats/txt.py,sha256=Efb_zU3oMJ4OyVOTrmwMEnmFH8INZxiM3adzAqVH6Vo,6844
13
15
  txt2ebook/helpers/__init__.py,sha256=UNFxeTg1tZ81DMk7_JsfhtW0zDsQH29hkYkqKrsYUQ0,1722
14
16
  txt2ebook/languages/__init__.py,sha256=-c9-YQEkXnb9LKLoi7EtNlQLAw2SqDKVw2UXlWt9Dl0,753
@@ -16,20 +18,20 @@ txt2ebook/languages/en.py,sha256=xCIhL431eUgoGwci4LCBkso8bR2LBhxKqWCPczKKoJQ,915
16
18
  txt2ebook/languages/zh_cn.py,sha256=UVTkxNmhZL5d6Ui53UfJ0jgwtnZmfjwbN4axLQZXkMY,1699
17
19
  txt2ebook/languages/zh_tw.py,sha256=D_YVDNj4uik8rAkgtiEashaONRjLqAkBh6kvAqozttk,1227
18
20
  txt2ebook/locales/en/LC_MESSAGES/txt2ebook.mo,sha256=rMcL7tj29bvbTMqDJOuw27U8TmTlX1FP4GVNmec36SU,527
19
- txt2ebook/locales/en/LC_MESSAGES/txt2ebook.po,sha256=6Mcb5KNcRFABjImqmbXvBKSPdAioNAkOBNgTQqq43kk,827
20
- txt2ebook/locales/txt2ebook.pot,sha256=yQkvUSLUc_r5WfqvGe58sxCGdeIaJNfIqo5FCc4WpVU,784
21
+ txt2ebook/locales/en/LC_MESSAGES/txt2ebook.po,sha256=8naBQ3LMFfziTOdLvZfKk0066HuRCu20aUC4lqhJoFQ,827
22
+ txt2ebook/locales/txt2ebook.pot,sha256=uTzyQa-N4kdng9DHXkcMXmr4Mf5S1CC4T9PbwNxltDc,784
21
23
  txt2ebook/locales/zh-cn/LC_MESSAGES/txt2ebook.mo,sha256=OkYKLhkYjqfdt2DbF3-TaCodD8BDh3hmOZuEn0FLja0,507
22
- txt2ebook/locales/zh-cn/LC_MESSAGES/txt2ebook.po,sha256=WOtsOhKbOaLPteYUu41YEV_SSOOmCig8jZ5iHt1L8LY,811
24
+ txt2ebook/locales/zh-cn/LC_MESSAGES/txt2ebook.po,sha256=9V5RBklXlDpn_wxZUm1eVeEGGpKnewjWzESoxjeO5No,811
23
25
  txt2ebook/models/__init__.py,sha256=oHf4YvkEV7qKHhHiGxl4m95DSJ3zSIW2uJQec-BwXrc,920
24
26
  txt2ebook/models/book.py,sha256=hDOtA2ppBPIQqMrlQdmx55CE7eKP_e0JthpfUxaWdew,2216
25
27
  txt2ebook/models/chapter.py,sha256=PhPHraG3QNgY4C-USAzTDpDPVNsvTL8yC3r2iTW42KU,1676
26
28
  txt2ebook/models/volume.py,sha256=4n6a9cF69NTcOmWTxT1sVm-Bjvf-fagJ2E8thVX4uzg,1587
27
- txt2ebook/parser.py,sha256=0l8Fu2ZZREW5532Epe0SedPW2wTwgpOuMDvOM2FDN60,11935
29
+ txt2ebook/parser.py,sha256=a7b7uB7zC5lFgTihz07qNWMyOU-_0ZL1tpfaf_IQFDE,11922
28
30
  txt2ebook/tokenizer.py,sha256=lsgGZSVpKl5fC6eEf8eIrGKZIVQnLqKM1Kenn4xJ-u4,9263
29
- txt2ebook/txt2ebook.py,sha256=_G9QNOoOQ-2apppFvv4fByxVy4zQlOZMkDaheFjA9p4,10693
30
- txt2ebook/zh_utils.py,sha256=jbkZR2psionQWRUQAtHlw1_t0P7Cj0SoZjYtMTFhpQI,4302
31
- txt2ebook-0.1.24.dist-info/LICENSE.md,sha256=tGtFDwxWTjuR9syrJoSv1Hiffd2u8Tu8cYClfrXS_YU,31956
32
- txt2ebook-0.1.24.dist-info/entry_points.txt,sha256=IQHyIIhd0MHjSSRVC1a6tMeIoLus8D06KHL_cumvEbg,83
33
- txt2ebook-0.1.24.dist-info/WHEEL,sha256=vVCvjcmxuUltf8cYhJ0sJMRDLr1XsPuxEId8YDzbyCY,88
34
- txt2ebook-0.1.24.dist-info/METADATA,sha256=pRHhdi9x8yM61B8AukfkwsUe4c_WzQs0kg_Po7rv9_A,6000
35
- txt2ebook-0.1.24.dist-info/RECORD,,
31
+ txt2ebook/txt2ebook.py,sha256=LJD-7mmnonSVo4yZXJFda3mnrY95zpk5onO8_34wQkQ,10704
32
+ txt2ebook/zh_utils.py,sha256=AAkvL2O8WRpm6ftZuZZ5nyWCn3h4kjImJouJFEig_C0,4588
33
+ txt2ebook-0.1.26.dist-info/LICENSE.md,sha256=tGtFDwxWTjuR9syrJoSv1Hiffd2u8Tu8cYClfrXS_YU,31956
34
+ txt2ebook-0.1.26.dist-info/entry_points.txt,sha256=IQHyIIhd0MHjSSRVC1a6tMeIoLus8D06KHL_cumvEbg,83
35
+ txt2ebook-0.1.26.dist-info/WHEEL,sha256=vVCvjcmxuUltf8cYhJ0sJMRDLr1XsPuxEId8YDzbyCY,88
36
+ txt2ebook-0.1.26.dist-info/METADATA,sha256=ZDlrXQPVHgGjvHNXhi2RlVUG17UmNj8x5SY8sc94WNg,6023
37
+ txt2ebook-0.1.26.dist-info/RECORD,,