diff --git a/.gitignore b/.gitignore index f0913c1..7974ba3 100644 --- a/.gitignore +++ b/.gitignore @@ -9,5 +9,7 @@ !src/ !src/edgeTTS/ !src/edgeTTS/__init__.py +!src/edgeTTS/__main__.py !src/edgePlayback/ !src/edgePlayback/__init__.py +!src/edgePlayback/__main__.py diff --git a/setup.cfg b/setup.cfg index e979dac..ab73540 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = edge-tts -version = 2.0.8 +version = 2.0.9 author = rany author_email = ranygh@riseup.net description = Microsoft Edge's TTS diff --git a/src/edgePlayback/__init__.py b/src/edgePlayback/__init__.py index 501c121..347b48f 100755 --- a/src/edgePlayback/__init__.py +++ b/src/edgePlayback/__init__.py @@ -11,7 +11,7 @@ def main(): print () print ("Media file %s" % media.name) print ("Subtitle file %s\n" % subtitle.name) - p = subprocess.Popen(['edge-tts', '-w'] + sys.argv[1:], stdout=media, stderr=subtitle) + p = subprocess.Popen(['edge-tts', '-w', '--write-media', media.name, '--write-subtitles', subtitle.name] + sys.argv[1:]) p.communicate() p = subprocess.Popen(['mpv', '--keep-open=yes', '--sub-file=' + subtitle.name, media.name]) p.communicate() diff --git a/src/edgePlayback/__main__.py b/src/edgePlayback/__main__.py new file mode 100755 index 0000000..8365b7f --- /dev/null +++ b/src/edgePlayback/__main__.py @@ -0,0 +1,6 @@ +#!/usr/bin/env python3 + +from edgePlayback.__init__ import * + +if __name__ == "__main__": + main() diff --git a/src/edgeTTS/__init__.py b/src/edgeTTS/__init__.py index e5c6e45..d64c18f 100755 --- a/src/edgeTTS/__init__.py +++ b/src/edgeTTS/__init__.py @@ -223,6 +223,8 @@ async def _main(): parser.add_argument('-s', '--enable-sentence-boundary', help="enable sentence boundary (not implemented but settable)", action='store_true') parser.add_argument('-w', '--enable-word-boundary', help="enable word boundary (not implemented but settable)", action='store_true') parser.add_argument('-O', '--overlapping', help="overlapping subtitles in seconds", default=5, type=float) + parser.add_argument('--write-media', help="instead of stdout, send media output to provided file") + parser.add_argument('--write-subtitles', help="instead of stderr, send subtitle output to provided file") args = parser.parse_args() logging.basicConfig(level=args.log_level) logger = logging.getLogger("edgeTTS._main") @@ -239,13 +241,23 @@ async def _main(): args.text = file.read() tts = Communicate() subs = SubMaker(args.overlapping) + if args.write_media: media_file = open(args.write_media, 'wb') async for i in tts.run(args.text, args.enable_sentence_boundary, args.enable_word_boundary, args.codec, args.voice, args.pitch, args.rate, args.volume, customspeak=args.custom_ssml): if i[2] is not None: - sys.stdout.buffer.write(i[2]) + if not args.write_media: + sys.stdout.buffer.write(i[2]) + else: + media_file.write(i[2]) elif i[0] is not None and i[1] is not None: subs.createSub(i[0], i[1]) + media_file.close() if not subs.subsAndOffset == {}: - sys.stderr.write(subs.generateSubs()) + if not args.write_subtitles: + sys.stderr.write(subs.generateSubs()) + else: + subtitle_file = open(args.write_subtitles, 'w') + subtitle_file.write(subs.generateSubs()) + subtitle_file.close() elif args.list_voices: seperator = False for voice in list_voices(): diff --git a/src/edgeTTS/__main__.py b/src/edgeTTS/__main__.py new file mode 100755 index 0000000..71fe6d1 --- /dev/null +++ b/src/edgeTTS/__main__.py @@ -0,0 +1,6 @@ +#!/usr/bin/env python3 + +from edgeTTS.__init__ import * + +if __name__ == "__main__": + main()