Add optional HTML formatting `_TranscriptParser`
Text formats in `TEXT_FORMATS` global variable Defaults to False
This commit is contained in:
parent
6070e6165a
commit
1f1c8b249b
|
@ -27,6 +27,19 @@ from ._errors import (
|
||||||
)
|
)
|
||||||
from ._settings import WATCH_URL
|
from ._settings import WATCH_URL
|
||||||
|
|
||||||
|
TEXT_FORMATS = [
|
||||||
|
'strong', # important
|
||||||
|
'em', # emphasized
|
||||||
|
'b', # bold
|
||||||
|
'i', # italic
|
||||||
|
'mark', # marked
|
||||||
|
'small', # smaller
|
||||||
|
'del', # deleted
|
||||||
|
'ins', # inserted
|
||||||
|
'sub', # subscript
|
||||||
|
'sup', # superscript
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
def _raise_http_errors(response, video_id):
|
def _raise_http_errors(response, video_id):
|
||||||
try:
|
try:
|
||||||
|
@ -315,15 +328,24 @@ class Transcript(object):
|
||||||
True,
|
True,
|
||||||
[],
|
[],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class _TranscriptParser(object):
|
class _TranscriptParser(object):
|
||||||
HTML_TAG_REGEX = re.compile(r'<[^>]*>', re.IGNORECASE)
|
def __init__(self, preserve_formatting=False):
|
||||||
|
self.preserve_formatting = preserve_formatting
|
||||||
|
|
||||||
|
@property
|
||||||
|
def html_regex(self):
|
||||||
|
if self.preserve_formatting:
|
||||||
|
formats_regex = '|'.join(TEXT_FORMATS)
|
||||||
|
formats_regex = r'<\/?(?!\/?(' + formats_regex + r')\b).*?\b>'
|
||||||
|
html_regex = re.compile(formats_regex, re.IGNORECASE)
|
||||||
|
else:
|
||||||
|
html_regex = re.compile(r'<[^>]*>', re.IGNORECASE)
|
||||||
|
return html_regex
|
||||||
|
|
||||||
def parse(self, plain_data):
|
def parse(self, plain_data):
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
'text': re.sub(self.HTML_TAG_REGEX, '', unescape(xml_element.text)),
|
'text': re.sub(self.html_regex, '', unescape(xml_element.text)),
|
||||||
'start': float(xml_element.attrib['start']),
|
'start': float(xml_element.attrib['start']),
|
||||||
'duration': float(xml_element.attrib.get('dur', '0.0')),
|
'duration': float(xml_element.attrib.get('dur', '0.0')),
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue