Update _cli.py

Add formats factory instance that uses the `parsed_args.format` arg to retrieve the formatter class, defaults to JSON if not passed or if given a bad/mistyped name.

Might consider error in the case of a bad name given. Shouldn't be too difficult to add that ability if its wanted.
This commit is contained in:
Chris Howell 2020-07-08 15:23:10 -07:00
parent b4592043dc
commit c78a37b115
1 changed files with 9 additions and 10 deletions

View File

@ -1,10 +1,9 @@
import json
import pprint
import argparse
from ._api import YouTubeTranscriptApi
from .formatters import formats
class YouTubeTranscriptCli():
@ -32,9 +31,11 @@ class YouTubeTranscriptCli():
except Exception as exception:
exceptions.append(exception)
return '\n\n'.join(
[str(exception) for exception in exceptions]
+ ([json.dumps(transcripts) if parsed_args.json else pprint.pformat(transcripts)] if transcripts else [])
Formatter = formats.get_formatter(parsed_args.format)
results = Formatter.format(transcripts)
return ''.join(
[str(exception) for exception in exceptions] + results
)
def _fetch_transcript(self, parsed_args, proxies, cookies, video_id):
@ -98,11 +99,9 @@ class YouTubeTranscriptCli():
help='If this flag is set transcripts which have been manually created will not be retrieved.',
)
parser.add_argument(
'--json',
action='store_const',
const=True,
default=False,
help='If this flag is set the output will be JSON formatted.',
'--format',
default=None,
help="Use this flag to set which parser format to use, default is 'json'",
)
parser.add_argument(
'--translate',