Fix "video not available" being shown to the user when when YouTube starts asking for captcha resolution due to receiving too many requests from the same IP.
Remove use of ABC, not part of Python 2 and implementing ABCMeta changes between Python 2 and 3 so left it out entirely. Base class now raises NotImplementedError manually.
Fix parse_timecode issue with start and end times being identical
Replaced uses of F-strings with .format() also for compatibility.
Due to the behavior of the CLI and API, needed more flexibility for combining 1 or many transcripts for a given formatter.
- Now can specify a DELIMITER to separate multiple transcripts on.
- Can also specify how those items are combine overriding the combine class method.
Remove unused imports
Fix adjust some lines to meet PEP
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.
Add format kwarg that defaults to None which still gets interpreted to use JSON when its not passed. This kwarg was given to `.get_transcripts()` and `.get_transcript()` since one relies on the other therefore can forward the kwarg.
Fixed an encoding issue for Windows machines receiving an error due to Lines 24-27:
`UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 119434: character maps to <undefined>`.
Adjusted test_api.py to fix an issue when the format=None isnt passed with mock test raising:
`AssertionError: get_transcript('video_id_1', ['de', 'en'], None, None) call not found`
Added `import json` to convert test data for json data into a string for 1 or many json transcripts to keep in line with how the formatters are eventually returned as strings.
Add formatters module that contains a few basic built-in formatters for JSON, SRT, and an arbitrary plain TEXT. Mainly for examples of implementing your own.
Module contains an abstract base class `TranscriptFormatter` so that anyone can create their own TranscriptFormatter class
Module contains at runtime a `formats` which is basically an instance of a factory of classes (not sure if that is the correct term to use). But it itself is an instance that folks can add custom formatter classes that the API can make use of.