txt2ebook 0.1.154__py3-none-any.whl → 0.1.156__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.
@@ -38,11 +38,10 @@ def build_subparser(subparsers) -> None:
38
38
 
39
39
  epub_parser.add_argument(
40
40
  "input_file",
41
- nargs=None if sys.stdin.isatty() else "?", # type: ignore
41
+ nargs="*",
42
42
  type=argparse.FileType("rb"),
43
- default=None if sys.stdin.isatty() else sys.stdin,
44
- help="source text filename",
45
- metavar="TXT_FILENAME",
43
+ help="source text filenames (can use glob patterns)",
44
+ metavar="TXT_FILENAMES",
46
45
  )
47
46
 
48
47
  epub_parser.add_argument(
@@ -124,6 +123,40 @@ def run(args: argparse.Namespace) -> None:
124
123
  Returns:
125
124
  None
126
125
  """
127
- book = parse_txt(args)
128
- writer = EpubWriter(book, args)
129
- writer.write()
126
+ input_sources = []
127
+
128
+ if not sys.stdin.isatty():
129
+ # piped input, use stdin as the single input source
130
+ input_sources.append(sys.stdin)
131
+ elif args.input_file:
132
+ # multiple file(s)
133
+ input_sources.extend(args.input_file)
134
+ else:
135
+ logger.error("No input files provided.")
136
+ sys.exit(1)
137
+
138
+ if len(input_sources) > 1 and args.output_file:
139
+ logger.error(
140
+ "Cannot specify a single output file when "
141
+ "processing multiple input files."
142
+ )
143
+ sys.exit(1)
144
+
145
+ for i, current_input_stream in enumerate(input_sources):
146
+ # ensures that `input_file` and `output_file` are correctly isolated
147
+ current_file_args = argparse.Namespace(**vars(args))
148
+ current_file_args.input_file = current_input_stream
149
+
150
+ # if an explicit output_file was provided, it must apply to the first
151
+ # input
152
+ if i > 0 and args.output_file:
153
+ current_file_args.output_file = None
154
+
155
+ book = parse_txt(current_file_args)
156
+ writer = EpubWriter(book, current_file_args)
157
+ writer.write()
158
+
159
+ # close the file stream if it was opened by argparse.FileType and is
160
+ # not sys.stdin.
161
+ if current_input_stream is not sys.stdin:
162
+ current_input_stream.close()
@@ -33,19 +33,10 @@ def build_subparser(subparsers) -> None:
33
33
 
34
34
  tex_parser.add_argument(
35
35
  "input_file",
36
- nargs=None if sys.stdin.isatty() else "?", # type: ignore
36
+ nargs="*",
37
37
  type=argparse.FileType("rb"),
38
- default=None if sys.stdin.isatty() else sys.stdin,
39
- help="source text filename",
40
- metavar="TXT_FILENAME",
41
- )
42
-
43
- tex_parser.add_argument(
44
- "output_file",
45
- nargs="?",
46
- default=None,
47
- help="converted ebook filename (default: 'TXT_FILENAME.pdf')",
48
- metavar="EBOOK_FILENAME",
38
+ help="source text filenames (can use glob patterns)",
39
+ metavar="TXT_FILENAMES",
49
40
  )
50
41
 
51
42
  tex_parser.add_argument(
@@ -121,6 +112,40 @@ def run(args: argparse.Namespace) -> None:
121
112
  Returns:
122
113
  None
123
114
  """
124
- book = parse_txt(args)
125
- writer = TexWriter(book, args)
126
- writer.write()
115
+ input_sources = []
116
+
117
+ if not sys.stdin.isatty():
118
+ # piped input, use stdin as the single input source
119
+ input_sources.append(sys.stdin)
120
+ elif args.input_file:
121
+ # multiple file(s)
122
+ input_sources.extend(args.input_file)
123
+ else:
124
+ logger.error("No input files provided.")
125
+ sys.exit(1)
126
+
127
+ if len(input_sources) > 1 and args.output_file:
128
+ logger.error(
129
+ "Cannot specify a single output file when "
130
+ "processing multiple input files."
131
+ )
132
+ sys.exit(1)
133
+
134
+ for i, current_input_stream in enumerate(input_sources):
135
+ # ensures that `input_file` and `output_file` are correctly isolated
136
+ current_file_args = argparse.Namespace(**vars(args))
137
+ current_file_args.input_file = current_input_stream
138
+
139
+ # if an explicit output_file was provided, it must apply to the first
140
+ # input
141
+ if i > 0 and args.output_file:
142
+ current_file_args.output_file = None
143
+
144
+ book = parse_txt(current_file_args)
145
+ writer = TexWriter(book, current_file_args)
146
+ writer.write()
147
+
148
+ # close the file stream if it was opened by argparse.FileType and is
149
+ # not sys.stdin.
150
+ if current_input_stream is not sys.stdin:
151
+ current_input_stream.close()
@@ -36,11 +36,10 @@ def build_subparser(subparsers) -> None:
36
36
 
37
37
  typ_parser.add_argument(
38
38
  "input_file",
39
- nargs=None if sys.stdin.isatty() else "?", # type: ignore
39
+ nargs="*",
40
40
  type=argparse.FileType("rb"),
41
- default=None if sys.stdin.isatty() else sys.stdin,
42
- help="source text filename",
43
- metavar="TXT_FILENAME",
41
+ help="source text filenames (can use glob patterns)",
42
+ metavar="TXT_FILENAMES",
44
43
  )
45
44
 
46
45
  typ_parser.add_argument(
@@ -126,11 +125,45 @@ def run(args: argparse.Namespace) -> None:
126
125
  """Run typ subcommand.
127
126
 
128
127
  Args:
129
- config (argparse.Namespace): Config from command line arguments
128
+ args (argparse.Namespace): Config from command line arguments
130
129
 
131
130
  Returns:
132
131
  None
133
132
  """
134
- book = parse_txt(args)
135
- writer = TypWriter(book, args)
136
- writer.write()
133
+ input_sources = []
134
+
135
+ if not sys.stdin.isatty():
136
+ # piped input, use stdin as the single input source
137
+ input_sources.append(sys.stdin)
138
+ elif args.input_file:
139
+ # multiple file(s)
140
+ input_sources.extend(args.input_file)
141
+ else:
142
+ logger.error("No input files provided.")
143
+ sys.exit(1)
144
+
145
+ if len(input_sources) > 1 and args.output_file:
146
+ logger.error(
147
+ "Cannot specify a single output file when "
148
+ "processing multiple input files."
149
+ )
150
+ sys.exit(1)
151
+
152
+ for i, current_input_stream in enumerate(input_sources):
153
+ # ensures that `input_file` and `output_file` are correctly isolated
154
+ current_file_args = argparse.Namespace(**vars(args))
155
+ current_file_args.input_file = current_input_stream
156
+
157
+ # if an explicit output_file was provided, it must apply to the first
158
+ # input
159
+ if i > 0 and args.output_file:
160
+ current_file_args.output_file = None
161
+
162
+ book = parse_txt(current_file_args)
163
+ writer = TypWriter(book, current_file_args)
164
+ writer.write()
165
+
166
+ # close the file stream if it was opened by argparse.FileType and is
167
+ # not sys.stdin.
168
+ if current_input_stream is not sys.stdin:
169
+ current_input_stream.close()
@@ -1,14 +1,14 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: txt2ebook
3
- Version: 0.1.154
3
+ Version: 0.1.156
4
4
  Summary: CLI tool to convert txt file to ebook format
5
- Keywords: cjk,ebook,epub,gmi,latex,md,pdf,txt,typst
6
5
  Author-email: Kian-Meng Ang <kianmeng@cpan.org>
7
- Requires-Python: ~=3.9
8
- Description-Content-Type: text/markdown
6
+ License-Expression: AGPL-3.0-or-later
7
+ Project-URL: Homepage, https://github.com/kianmeng/txt2ebook
8
+ Project-URL: Repository, https://github.com/kianmeng/txt2ebook
9
+ Keywords: cjk,ebook,epub,gmi,latex,md,pdf,txt,typst
9
10
  Classifier: Development Status :: 4 - Beta
10
11
  Classifier: Environment :: Console
11
- Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
12
12
  Classifier: Natural Language :: Chinese (Simplified)
13
13
  Classifier: Natural Language :: Chinese (Traditional)
14
14
  Classifier: Programming Language :: Python
@@ -23,22 +23,23 @@ Classifier: Topic :: Text Processing :: Filters
23
23
  Classifier: Topic :: Text Processing :: General
24
24
  Classifier: Topic :: Text Processing :: Markup :: HTML
25
25
  Classifier: Topic :: Text Processing :: Markup :: Markdown
26
+ Requires-Python: ~=3.9
27
+ Description-Content-Type: text/markdown
26
28
  License-File: LICENSE.md
27
29
  Requires-Dist: CJKwrap~=2.2
28
- Requires-Dist: EbookLib>=0.17.1,<0.18
29
- Requires-Dist: bs4>=0.0.1,<0.0.2
30
- Requires-Dist: importlib-resources>=6.1.1,<7
31
- Requires-Dist: jieba>=0.42.1,<0.43
32
- Requires-Dist: langdetect>=1.0.9,<2
33
- Requires-Dist: lxml>=5.2.2,<6
34
- Requires-Dist: pylatex>=1.4.2,<2
30
+ Requires-Dist: EbookLib<0.18,>=0.17.1
31
+ Requires-Dist: bs4<0.0.2,>=0.0.1
32
+ Requires-Dist: importlib-resources<7,>=6.1.1
33
+ Requires-Dist: jieba<0.43,>=0.42.1
34
+ Requires-Dist: langdetect<2,>=1.0.9
35
+ Requires-Dist: lxml<6,>=5.2.2
36
+ Requires-Dist: pylatex<2,>=1.4.2
35
37
  Requires-Dist: pypandoc~=1.11
36
- Requires-Dist: regex>=2021.11.10,<2022
37
- Requires-Dist: reportlab>=4.0.0,<5
38
- Requires-Dist: typing-extensions>=4.5.0,<5
38
+ Requires-Dist: regex<2022,>=2021.11.10
39
+ Requires-Dist: reportlab<5,>=4.0.0
40
+ Requires-Dist: typing-extensions<5,>=4.5.0
39
41
  Requires-Dist: typst>=0.13.0
40
- Project-URL: Homepage, https://github.com/kianmeng/txt2ebook
41
- Project-URL: Repository, https://github.com/kianmeng/txt2ebook
42
+ Dynamic: license-file
42
43
 
43
44
  # txt2ebook
44
45
 
@@ -150,4 +151,3 @@ The fish logo used in the documentation generated by Sphinx is a public domain
150
151
  drawing of Troschel's parrotfish (Chlorurus troschelii Var. A.) from
151
152
  <https://commons.wikimedia.org/entity/M18506436>.
152
153
  18506436>.
153
-
@@ -16,37 +16,28 @@ txt2ebook/formats/txt.py,sha256=0DOVBTDRV2gcixham5Wj7NaZlNKAeLG9MLRlZgtUxqM,7412
16
16
  txt2ebook/formats/typ.py,sha256=MNclD5RdCnYAmPRzAaI6ZE6NnI8GdHKJla54wyfTUdc,6705
17
17
  txt2ebook/formats/templates/__init__.py,sha256=f3K7pJByNmmvu-wvziks6qb2QnnLmkDjUACXyw2s60E,760
18
18
  txt2ebook/formats/templates/epub/__init__.py,sha256=-XVLvnknTJTmQZY9UTH705vMcHgy56rQVRTusYawEZ4,766
19
- txt2ebook/formats/templates/epub/clean.css,sha256=AnEwMckzUSKcjKsDiWtJW1oaceuklt2tyuS1VbpVK1s,462
20
- txt2ebook/formats/templates/epub/condense.css,sha256=Fz80ZqkPsFRmGdURduAxqMV8drD0CCUlrv41P8rUsm8,477
21
- txt2ebook/formats/templates/epub/noindent.css,sha256=_O5Tv90TKyyPBRdgjuNKFwtKFbdheh2V9PtDhgRUg3U,483
22
19
  txt2ebook/helpers/__init__.py,sha256=c2EItHvPABDORfgfjArfa5XR--43es4D1tKWqaPcBxY,1309
23
20
  txt2ebook/languages/__init__.py,sha256=1AfDn-D0q-dvODGP-9KxPHY_Wtk-ifZdN1FutZMT9-Q,763
24
21
  txt2ebook/languages/en.py,sha256=8qsmbKB69M3SD9nBnSX8rP8hAL_RFkhB-zyH93INgaQ,999
25
22
  txt2ebook/languages/zh_cn.py,sha256=ryKMeaNgX2J6BGrHl7KZL9S6HwIlTyLk75z3lvVQIi4,1960
26
23
  txt2ebook/languages/zh_tw.py,sha256=_fdXOOSLK0nTMuBe1Om2qjb4zr2PVd6N4xi2rrYkNTI,1515
27
- txt2ebook/locales/txt2ebook.pot,sha256=VoXU9LrDzZApUVCCcKZC5Fu5QLx1fwd1lYEkbIdCEgc,641
28
- txt2ebook/locales/en/LC_MESSAGES/txt2ebook.mo,sha256=Ym6soeijV3zsv9FUPWlJnu18-CNb5tcOTN5JsMOfV9c,672
29
- txt2ebook/locales/en/LC_MESSAGES/txt2ebook.po,sha256=ENsZFITaqEdOYE3xkPX5wDR1HMs1JqB7uyrHaAdPiE0,698
30
- txt2ebook/locales/zh-cn/LC_MESSAGES/txt2ebook.mo,sha256=rRGW7HByDVZV8WpQkhyIFOWYNTQc4NnStrn0eGJX8Wc,675
31
- txt2ebook/locales/zh-cn/LC_MESSAGES/txt2ebook.po,sha256=i_B-urg-eik0myXxIBSV8_ohPu3xsPNWHJP-fcATotg,698
32
- txt2ebook/locales/zh-tw/LC_MESSAGES/txt2ebook.mo,sha256=1GIuOcO_bISiFcfhFez-A7mSi11Mo-x3PBobBENgMEc,675
33
- txt2ebook/locales/zh-tw/LC_MESSAGES/txt2ebook.po,sha256=sNyEKCHin78wmSwUARfAypsl9mXfJJaWD1a8E1ixKjs,698
34
24
  txt2ebook/models/__init__.py,sha256=Z3zClWLj08Q8HgaWV1RRgIKatEhIUfYBAVWm-j4m05w,930
35
25
  txt2ebook/models/book.py,sha256=P-SQabvrRgWoafrk0tw6zjD-3hq_r8_jGvgTORUS-DM,2730
36
26
  txt2ebook/models/chapter.py,sha256=6YvUDHzR6amGMZgkQl_xHWrYZUmlfpF7mnDLilG2BpA,1686
37
27
  txt2ebook/models/volume.py,sha256=koz1KfWjvGWLFbmGEQlZ23frsP93cDsuBMySYBHiXm8,1597
38
28
  txt2ebook/subcommands/__init__.py,sha256=ldhzvsrMsR8lZmhZef77JFz0jValpV3pytFfwJSkjls,1146
39
29
  txt2ebook/subcommands/env.py,sha256=gEzra4b6guy7pRZUTCWX1_eiR7JmrtR1Z-J-vxljvMY,1549
40
- txt2ebook/subcommands/epub.py,sha256=_obM1_fvVBPHOBXBOCYK8nyJadBX3_gOn9kaXA5HipA,3570
30
+ txt2ebook/subcommands/epub.py,sha256=oVk00rypqN53UAOIYhOofkAPbjrdlvkszLDIdVqexvE,4706
41
31
  txt2ebook/subcommands/gmi.py,sha256=ANnPg-RFsylTo44fUzFOSHN1fC3Ce82gBzrv-sBv5fU,3318
42
32
  txt2ebook/subcommands/massage.py,sha256=cjeee4wJJ6xPV76efnlWRVdeVkEtJYIBDaKhFMPjKTg,14643
43
33
  txt2ebook/subcommands/md.py,sha256=PmIqrqrnzLywvN4qTkle0V9N3FTIJGRWpC0Xbk76B5o,3329
44
34
  txt2ebook/subcommands/parse.py,sha256=xjhW8I9zS5DL3n3m04RyFofgci-6-_L6aF3d4N7c7M4,2938
45
35
  txt2ebook/subcommands/pdf.py,sha256=1JQtpugzAIaho6G3CK1rGYk74hotAexXZxPH9PHpRps,2980
46
- txt2ebook/subcommands/tex.py,sha256=59Bzl67VSHMZS9BtU9zZDmKwsd6cQGoFfuGftAz9efc,3438
47
- txt2ebook/subcommands/typ.py,sha256=PoyozIueAvNL3yHHpS9NnMTMVV4ppUBX37SWGXd5Zhg,3680
48
- txt2ebook-0.1.154.dist-info/entry_points.txt,sha256=AFikuCV6fqf8_GHwsvWuo9jTGNrCkWY1TJWk5GfMWSk,71
49
- txt2ebook-0.1.154.dist-info/licenses/LICENSE.md,sha256=tGtFDwxWTjuR9syrJoSv1Hiffd2u8Tu8cYClfrXS_YU,31956
50
- txt2ebook-0.1.154.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
51
- txt2ebook-0.1.154.dist-info/METADATA,sha256=WGdRZ8a87vsX3wDZPFMXDwVrWCCNDrR-eCHzCf1BGRI,4700
52
- txt2ebook-0.1.154.dist-info/RECORD,,
36
+ txt2ebook/subcommands/tex.py,sha256=8XqTV5GsOEr7sGSLUJB-B1KefIMxW3_BDq_Jm96Bt1Y,4369
37
+ txt2ebook/subcommands/typ.py,sha256=xeJ_cPmyq_uouUBiH2kbcscckHLqewPmu9j0WO36sXY,4814
38
+ txt2ebook-0.1.156.dist-info/licenses/LICENSE.md,sha256=tGtFDwxWTjuR9syrJoSv1Hiffd2u8Tu8cYClfrXS_YU,31956
39
+ txt2ebook-0.1.156.dist-info/METADATA,sha256=FmlT-uz7lE9ZU6vp0U3X96lRMQSeNHEcuAu6NdQn7dw,4664
40
+ txt2ebook-0.1.156.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
41
+ txt2ebook-0.1.156.dist-info/entry_points.txt,sha256=3jm5vpUsDRgoM6S3CQVMMiP7tJQqfq1vfV0sh_KaK9s,74
42
+ txt2ebook-0.1.156.dist-info/top_level.txt,sha256=pesdk4CJRlfhUXVD9vH3Dd_F8ATlLQoqlUsUnU8SJMw,10
43
+ txt2ebook-0.1.156.dist-info/RECORD,,
@@ -1,4 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: flit 3.12.0
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
+
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ tte = txt2ebook.cli:main
3
+ txt2ebook = txt2ebook.cli:main
@@ -0,0 +1 @@
1
+ txt2ebook
@@ -1,41 +0,0 @@
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
- }
@@ -1,42 +0,0 @@
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
- }
@@ -1,42 +0,0 @@
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
- }
@@ -1,31 +0,0 @@
1
- #: src/txt2ebook/formats/base.py:139
2
- msgid "title:"
3
- msgstr "Title:"
4
-
5
- #: src/txt2ebook/formats/base.py:140
6
- msgid "author:"
7
- msgstr "Author:"
8
-
9
- #: src/txt2ebook/formats/base.py:141
10
- msgid "translator:"
11
- msgstr "Translator:"
12
-
13
- #: src/txt2ebook/formats/base.py:142
14
- msgid "tag:"
15
- msgstr "Tag:"
16
-
17
- #: src/txt2ebook/formats/base.py:153 src/txt2ebook/formats/gmi.py:62
18
- #: src/txt2ebook/formats/md.py:61 src/txt2ebook/formats/pdf.py:130
19
- #: src/txt2ebook/formats/txt.py:71
20
- msgid "toc"
21
- msgstr "Table of Content"
22
-
23
- #: src/txt2ebook/formats/epub.py:147
24
- msgid "cover"
25
- msgstr "Cover"
26
-
27
- #: src/txt2ebook/formats/gmi.py:47 src/txt2ebook/formats/md.py:46
28
- #: src/txt2ebook/formats/txt.py:56
29
- msgid "metadata"
30
- msgstr "Metadata"
31
-
@@ -1,31 +0,0 @@
1
- #: src/txt2ebook/formats/base.py:139
2
- msgid "title:"
3
- msgstr ""
4
-
5
- #: src/txt2ebook/formats/base.py:140
6
- msgid "author:"
7
- msgstr ""
8
-
9
- #: src/txt2ebook/formats/base.py:141
10
- msgid "translator:"
11
- msgstr ""
12
-
13
- #: src/txt2ebook/formats/base.py:142
14
- msgid "tag:"
15
- msgstr ""
16
-
17
- #: src/txt2ebook/formats/base.py:153 src/txt2ebook/formats/gmi.py:62
18
- #: src/txt2ebook/formats/md.py:61 src/txt2ebook/formats/pdf.py:130
19
- #: src/txt2ebook/formats/txt.py:71
20
- msgid "toc"
21
- msgstr ""
22
-
23
- #: src/txt2ebook/formats/epub.py:147
24
- msgid "cover"
25
- msgstr ""
26
-
27
- #: src/txt2ebook/formats/gmi.py:47 src/txt2ebook/formats/md.py:46
28
- #: src/txt2ebook/formats/txt.py:56
29
- msgid "metadata"
30
- msgstr ""
31
-
@@ -1,31 +0,0 @@
1
- #: src/txt2ebook/formats/base.py:139
2
- msgid "title:"
3
- msgstr "书名:"
4
-
5
- #: src/txt2ebook/formats/base.py:140
6
- msgid "author:"
7
- msgstr "作者:"
8
-
9
- #: src/txt2ebook/formats/base.py:141
10
- msgid "translator:"
11
- msgstr "翻译:"
12
-
13
- #: src/txt2ebook/formats/base.py:142
14
- msgid "tag:"
15
- msgstr "票签:"
16
-
17
- #: src/txt2ebook/formats/base.py:153 src/txt2ebook/formats/gmi.py:62
18
- #: src/txt2ebook/formats/md.py:61 src/txt2ebook/formats/pdf.py:130
19
- #: src/txt2ebook/formats/txt.py:71
20
- msgid "toc"
21
- msgstr "目录"
22
-
23
- #: src/txt2ebook/formats/epub.py:147
24
- msgid "cover"
25
- msgstr "封面"
26
-
27
- #: src/txt2ebook/formats/gmi.py:47 src/txt2ebook/formats/md.py:46
28
- #: src/txt2ebook/formats/txt.py:56
29
- msgid "metadata"
30
- msgstr "元数据"
31
-
@@ -1,31 +0,0 @@
1
- #: src/txt2ebook/formats/base.py:139
2
- msgid "title:"
3
- msgstr "书名:"
4
-
5
- #: src/txt2ebook/formats/base.py:140
6
- msgid "author:"
7
- msgstr "作者:"
8
-
9
- #: src/txt2ebook/formats/base.py:141
10
- msgid "translator:"
11
- msgstr "翻译:"
12
-
13
- #: src/txt2ebook/formats/base.py:142
14
- msgid "tag:"
15
- msgstr "标签:"
16
-
17
- #: src/txt2ebook/formats/base.py:153 src/txt2ebook/formats/gmi.py:62
18
- #: src/txt2ebook/formats/md.py:61 src/txt2ebook/formats/pdf.py:130
19
- #: src/txt2ebook/formats/txt.py:71
20
- msgid "toc"
21
- msgstr "目录"
22
-
23
- #: src/txt2ebook/formats/epub.py:147
24
- msgid "cover"
25
- msgstr "封面"
26
-
27
- #: src/txt2ebook/formats/gmi.py:47 src/txt2ebook/formats/md.py:46
28
- #: src/txt2ebook/formats/txt.py:56
29
- msgid "metadata"
30
- msgstr "元数据"
31
-
@@ -1,4 +0,0 @@
1
- [console_scripts]
2
- tte=txt2ebook.cli:main
3
- txt2ebook=txt2ebook.cli:main
4
-