webvtt-py 0.5.0__tar.gz

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.
Files changed (64) hide show
  1. webvtt-py-0.5.0/LICENSE +21 -0
  2. webvtt-py-0.5.0/MANIFEST.in +7 -0
  3. webvtt-py-0.5.0/PKG-INFO +120 -0
  4. webvtt-py-0.5.0/README.rst +95 -0
  5. webvtt-py-0.5.0/setup.cfg +48 -0
  6. webvtt-py-0.5.0/setup.py +50 -0
  7. webvtt-py-0.5.0/tests/__init__.py +0 -0
  8. webvtt-py-0.5.0/tests/samples/captions_with_bom.vtt +13 -0
  9. webvtt-py-0.5.0/tests/samples/comments.vtt +23 -0
  10. webvtt-py-0.5.0/tests/samples/cue_tags.vtt +10 -0
  11. webvtt-py-0.5.0/tests/samples/empty.vtt +0 -0
  12. webvtt-py-0.5.0/tests/samples/invalid.vtt +20 -0
  13. webvtt-py-0.5.0/tests/samples/invalid_format.sbv +1 -0
  14. webvtt-py-0.5.0/tests/samples/invalid_format1.srt +1 -0
  15. webvtt-py-0.5.0/tests/samples/invalid_format2.srt +1 -0
  16. webvtt-py-0.5.0/tests/samples/invalid_format3.srt +2 -0
  17. webvtt-py-0.5.0/tests/samples/invalid_format4.srt +2 -0
  18. webvtt-py-0.5.0/tests/samples/invalid_timeframe.sbv +14 -0
  19. webvtt-py-0.5.0/tests/samples/invalid_timeframe.srt +19 -0
  20. webvtt-py-0.5.0/tests/samples/invalid_timeframe.vtt +22 -0
  21. webvtt-py-0.5.0/tests/samples/invalid_timeframe_in_cue_text.vtt +11 -0
  22. webvtt-py-0.5.0/tests/samples/metadata_headers.vtt +9 -0
  23. webvtt-py-0.5.0/tests/samples/metadata_headers_multiline.vtt +13 -0
  24. webvtt-py-0.5.0/tests/samples/missing_caption_text.sbv +13 -0
  25. webvtt-py-0.5.0/tests/samples/missing_caption_text.srt +19 -0
  26. webvtt-py-0.5.0/tests/samples/missing_caption_text.vtt +15 -0
  27. webvtt-py-0.5.0/tests/samples/missing_timeframe.sbv +13 -0
  28. webvtt-py-0.5.0/tests/samples/missing_timeframe.srt +18 -0
  29. webvtt-py-0.5.0/tests/samples/missing_timeframe.vtt +21 -0
  30. webvtt-py-0.5.0/tests/samples/netflix_chicas_del_cable.vtt +3865 -0
  31. webvtt-py-0.5.0/tests/samples/no_captions.vtt +1 -0
  32. webvtt-py-0.5.0/tests/samples/one_caption.srt +3 -0
  33. webvtt-py-0.5.0/tests/samples/one_caption.vtt +4 -0
  34. webvtt-py-0.5.0/tests/samples/sample.sbv +15 -0
  35. webvtt-py-0.5.0/tests/samples/sample.srt +19 -0
  36. webvtt-py-0.5.0/tests/samples/sample.vtt +49 -0
  37. webvtt-py-0.5.0/tests/samples/styles.vtt +15 -0
  38. webvtt-py-0.5.0/tests/samples/styles_with_comments.vtt +23 -0
  39. webvtt-py-0.5.0/tests/samples/two_captions.sbv +6 -0
  40. webvtt-py-0.5.0/tests/samples/using_identifiers.vtt +21 -0
  41. webvtt-py-0.5.0/tests/samples/youtube_dl.vtt +24 -0
  42. webvtt-py-0.5.0/tests/test_cli.py +182 -0
  43. webvtt-py-0.5.0/tests/test_models.py +440 -0
  44. webvtt-py-0.5.0/tests/test_sbv.py +141 -0
  45. webvtt-py-0.5.0/tests/test_segmenter.py +342 -0
  46. webvtt-py-0.5.0/tests/test_srt.py +160 -0
  47. webvtt-py-0.5.0/tests/test_utils.py +26 -0
  48. webvtt-py-0.5.0/tests/test_vtt.py +556 -0
  49. webvtt-py-0.5.0/tests/test_webvtt.py +1188 -0
  50. webvtt-py-0.5.0/webvtt/__init__.py +19 -0
  51. webvtt-py-0.5.0/webvtt/cli.py +59 -0
  52. webvtt-py-0.5.0/webvtt/errors.py +13 -0
  53. webvtt-py-0.5.0/webvtt/models.py +222 -0
  54. webvtt-py-0.5.0/webvtt/sbv.py +117 -0
  55. webvtt-py-0.5.0/webvtt/segmenter.py +121 -0
  56. webvtt-py-0.5.0/webvtt/srt.py +148 -0
  57. webvtt-py-0.5.0/webvtt/utils.py +104 -0
  58. webvtt-py-0.5.0/webvtt/vtt.py +400 -0
  59. webvtt-py-0.5.0/webvtt/webvtt.py +363 -0
  60. webvtt-py-0.5.0/webvtt_py.egg-info/PKG-INFO +120 -0
  61. webvtt-py-0.5.0/webvtt_py.egg-info/SOURCES.txt +63 -0
  62. webvtt-py-0.5.0/webvtt_py.egg-info/dependency_links.txt +1 -0
  63. webvtt-py-0.5.0/webvtt_py.egg-info/entry_points.txt +3 -0
  64. webvtt-py-0.5.0/webvtt_py.egg-info/top_level.txt +1 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2016 Alejandro Mendez
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,7 @@
1
+ include LICENSE
2
+ include README.rst
3
+
4
+ graft tests
5
+
6
+ global-exclude __pycache__
7
+ global-exclude *.py[co]
@@ -0,0 +1,120 @@
1
+ Metadata-Version: 2.1
2
+ Name: webvtt-py
3
+ Version: 0.5.0
4
+ Summary: WebVTT reader, writer and segmenter
5
+ Home-page: https://github.com/glut23/webvtt-py
6
+ Author: Alejandro Mendez
7
+ Author-email: amendez23@gmail.com
8
+ License: MIT
9
+ Description: webvtt-py
10
+ =========
11
+
12
+ |pypi| |pyversions| |license| |coverage| |build-status| |docs-status| |downloads|
13
+
14
+ ``webvtt-py`` is a Python module for reading/writing WebVTT_ caption files. It also features caption segmentation useful when captioning `HLS videos`_.
15
+
16
+ Documentation is available at http://webvtt-py.readthedocs.io.
17
+
18
+ .. _`WebVTT`: http://dev.w3.org/html5/webvtt/
19
+ .. _`HLS videos`: https://tools.ietf.org/html/draft-pantos-http-live-streaming-19
20
+
21
+ Installation
22
+ ------------
23
+
24
+ ::
25
+
26
+ $ pip install webvtt-py
27
+
28
+ Usage
29
+ -----
30
+
31
+ .. code-block:: python
32
+
33
+ import webvtt
34
+
35
+ for caption in webvtt.read('captions.vtt'):
36
+ print(caption.start)
37
+ print(caption.end)
38
+ print(caption.text)
39
+
40
+ Segmenting for HLS
41
+ ------------------
42
+
43
+ .. code-block:: python
44
+
45
+ import webvtt
46
+
47
+ webvtt.segment('captions.vtt', 'output/path')
48
+
49
+ Converting captions from other formats
50
+ --------------------------------------
51
+
52
+ Supported formats:
53
+
54
+ * SubRip (.srt)
55
+ * YouTube SBV (.sbv)
56
+
57
+ .. code-block:: python
58
+
59
+ import webvtt
60
+
61
+ webvtt = webvtt.from_srt('captions.srt')
62
+ webvtt.save()
63
+
64
+ # one liner if we just need to convert without editing
65
+ webvtt.from_sbv('captions.sbv').save()
66
+
67
+ CLI
68
+ ---
69
+ Caption segmentation is also available from the command line:
70
+
71
+ ::
72
+
73
+ $ webvtt segment captions.vtt --output output/path
74
+
75
+ License
76
+ -------
77
+
78
+ Licensed under the MIT License.
79
+
80
+ .. |pypi| image:: https://img.shields.io/pypi/v/webvtt-py.svg
81
+ :target: https://pypi.python.org/pypi/webvtt-py
82
+
83
+ .. |pyversions| image:: https://img.shields.io/pypi/pyversions/webvtt-py.svg
84
+ :alt: Supported Python versions
85
+ :target: https://pypi.python.org/pypi/webvtt-py
86
+
87
+ .. |license| image:: https://img.shields.io/pypi/l/webvtt-py.svg
88
+ :alt: MIT License
89
+ :target: https://opensource.org/licenses/MIT
90
+
91
+ .. |coverage| image:: https://codecov.io/gh/glut23/webvtt-py/graph/badge.svg?branch=master
92
+ :target: https://codecov.io/gh/glut23/webvtt-py
93
+
94
+ .. |build-status| image:: https://github.com/glut23/webvtt-py/actions/workflows/ci.yml/badge.svg?branch=master
95
+ :target: https://github.com/glut23/webvtt-py/actions/workflows/ci.yml
96
+
97
+ .. |docs-status| image:: https://readthedocs.org/projects/webvtt-py/badge/?version=latest
98
+ :target: http://webvtt-py.readthedocs.io/en/latest/?badge=latest
99
+ :alt: Documentation Status
100
+
101
+ .. |downloads| image:: https://static.pepy.tech/badge/webvtt-py
102
+ :target: https://pepy.tech/project/webvtt-py
103
+ :alt: Downloads
104
+ Keywords: webvtt captions
105
+ Platform: UNKNOWN
106
+ Classifier: Development Status :: 4 - Beta
107
+ Classifier: Intended Audience :: Developers
108
+ Classifier: License :: OSI Approved :: MIT License
109
+ Classifier: Programming Language :: Python
110
+ Classifier: Programming Language :: Python :: 3
111
+ Classifier: Programming Language :: Python :: 3.7
112
+ Classifier: Programming Language :: Python :: 3.8
113
+ Classifier: Programming Language :: Python :: 3.9
114
+ Classifier: Programming Language :: Python :: 3.10
115
+ Classifier: Programming Language :: Python :: 3.11
116
+ Classifier: Programming Language :: Python :: 3.12
117
+ Classifier: Operating System :: OS Independent
118
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
119
+ Requires-Python: >=3.7
120
+ Description-Content-Type: text/x-rst
@@ -0,0 +1,95 @@
1
+ webvtt-py
2
+ =========
3
+
4
+ |pypi| |pyversions| |license| |coverage| |build-status| |docs-status| |downloads|
5
+
6
+ ``webvtt-py`` is a Python module for reading/writing WebVTT_ caption files. It also features caption segmentation useful when captioning `HLS videos`_.
7
+
8
+ Documentation is available at http://webvtt-py.readthedocs.io.
9
+
10
+ .. _`WebVTT`: http://dev.w3.org/html5/webvtt/
11
+ .. _`HLS videos`: https://tools.ietf.org/html/draft-pantos-http-live-streaming-19
12
+
13
+ Installation
14
+ ------------
15
+
16
+ ::
17
+
18
+ $ pip install webvtt-py
19
+
20
+ Usage
21
+ -----
22
+
23
+ .. code-block:: python
24
+
25
+ import webvtt
26
+
27
+ for caption in webvtt.read('captions.vtt'):
28
+ print(caption.start)
29
+ print(caption.end)
30
+ print(caption.text)
31
+
32
+ Segmenting for HLS
33
+ ------------------
34
+
35
+ .. code-block:: python
36
+
37
+ import webvtt
38
+
39
+ webvtt.segment('captions.vtt', 'output/path')
40
+
41
+ Converting captions from other formats
42
+ --------------------------------------
43
+
44
+ Supported formats:
45
+
46
+ * SubRip (.srt)
47
+ * YouTube SBV (.sbv)
48
+
49
+ .. code-block:: python
50
+
51
+ import webvtt
52
+
53
+ webvtt = webvtt.from_srt('captions.srt')
54
+ webvtt.save()
55
+
56
+ # one liner if we just need to convert without editing
57
+ webvtt.from_sbv('captions.sbv').save()
58
+
59
+ CLI
60
+ ---
61
+ Caption segmentation is also available from the command line:
62
+
63
+ ::
64
+
65
+ $ webvtt segment captions.vtt --output output/path
66
+
67
+ License
68
+ -------
69
+
70
+ Licensed under the MIT License.
71
+
72
+ .. |pypi| image:: https://img.shields.io/pypi/v/webvtt-py.svg
73
+ :target: https://pypi.python.org/pypi/webvtt-py
74
+
75
+ .. |pyversions| image:: https://img.shields.io/pypi/pyversions/webvtt-py.svg
76
+ :alt: Supported Python versions
77
+ :target: https://pypi.python.org/pypi/webvtt-py
78
+
79
+ .. |license| image:: https://img.shields.io/pypi/l/webvtt-py.svg
80
+ :alt: MIT License
81
+ :target: https://opensource.org/licenses/MIT
82
+
83
+ .. |coverage| image:: https://codecov.io/gh/glut23/webvtt-py/graph/badge.svg?branch=master
84
+ :target: https://codecov.io/gh/glut23/webvtt-py
85
+
86
+ .. |build-status| image:: https://github.com/glut23/webvtt-py/actions/workflows/ci.yml/badge.svg?branch=master
87
+ :target: https://github.com/glut23/webvtt-py/actions/workflows/ci.yml
88
+
89
+ .. |docs-status| image:: https://readthedocs.org/projects/webvtt-py/badge/?version=latest
90
+ :target: http://webvtt-py.readthedocs.io/en/latest/?badge=latest
91
+ :alt: Documentation Status
92
+
93
+ .. |downloads| image:: https://static.pepy.tech/badge/webvtt-py
94
+ :target: https://pepy.tech/project/webvtt-py
95
+ :alt: Downloads
@@ -0,0 +1,48 @@
1
+ [metadata]
2
+ description_file = README.rst
3
+
4
+ [flake8]
5
+ doctests = true
6
+ radon-max-cc = 10
7
+
8
+ [tox:tox]
9
+ envlist =
10
+ codestyle
11
+ py
12
+ coverage
13
+ isolated_build = True
14
+
15
+ [coverage:run]
16
+ source = webvtt
17
+ branch = true
18
+
19
+ [coverage:report]
20
+ fail_under = 100
21
+
22
+ [testenv]
23
+ deps =
24
+ coverage
25
+ description = run the tests and provide coverage metrics
26
+ commands =
27
+ coverage run -m unittest discover
28
+
29
+ [testenv:codestyle]
30
+ deps =
31
+ flake8
32
+ flake8-docstrings
33
+ radon
34
+ mypy
35
+ commands =
36
+ flake8 webvtt setup.py
37
+ mypy webvtt
38
+
39
+ [testenv:coverage]
40
+ deps = coverage
41
+ commands =
42
+ coverage xml
43
+ coverage report
44
+
45
+ [egg_info]
46
+ tag_build =
47
+ tag_date = 0
48
+
@@ -0,0 +1,50 @@
1
+ """webvtt-py setuptools configuration."""
2
+
3
+ import re
4
+ import pathlib
5
+
6
+ from setuptools import setup, find_packages
7
+
8
+ version, author, author_email = (
9
+ re.search(
10
+ rf'__{name}__ = \'(.*?)\'',
11
+ pathlib.Path('webvtt/__init__.py').read_text()
12
+ ).group(1)
13
+ for name in ('version', 'author', 'author_email')
14
+ )
15
+
16
+ setup(
17
+ name='webvtt-py',
18
+ version=version,
19
+ description='WebVTT reader, writer and segmenter',
20
+ long_description=pathlib.Path('README.rst').read_text(),
21
+ long_description_content_type='text/x-rst',
22
+ author=author,
23
+ author_email=author_email,
24
+ url='https://github.com/glut23/webvtt-py',
25
+ packages=find_packages('.', exclude=['tests']),
26
+ include_package_data=True,
27
+ entry_points={
28
+ 'console_scripts': [
29
+ 'webvtt=webvtt.cli:main'
30
+ ]
31
+ },
32
+ license='MIT',
33
+ python_requires='>=3.7',
34
+ classifiers=[
35
+ 'Development Status :: 4 - Beta',
36
+ 'Intended Audience :: Developers',
37
+ 'License :: OSI Approved :: MIT License',
38
+ 'Programming Language :: Python',
39
+ 'Programming Language :: Python :: 3',
40
+ 'Programming Language :: Python :: 3.7',
41
+ 'Programming Language :: Python :: 3.8',
42
+ 'Programming Language :: Python :: 3.9',
43
+ 'Programming Language :: Python :: 3.10',
44
+ 'Programming Language :: Python :: 3.11',
45
+ 'Programming Language :: Python :: 3.12',
46
+ 'Operating System :: OS Independent',
47
+ 'Topic :: Software Development :: Libraries :: Python Modules',
48
+ ],
49
+ keywords='webvtt captions',
50
+ )
File without changes
@@ -0,0 +1,13 @@
1
+ WEBVTT
2
+
3
+ 00:00:00.500 --> 00:00:07.000
4
+ Caption text #1
5
+
6
+ 00:00:07.000 --> 00:00:11.890
7
+ Caption text #2
8
+
9
+ 00:00:11.890 --> 00:00:16.320
10
+ Caption text #3
11
+
12
+ 00:00:16.320 --> 00:00:21.580
13
+ Caption text #4
@@ -0,0 +1,23 @@
1
+ WEBVTT - Translation of that film I like
2
+
3
+ NOTE
4
+ This translation was done by Kyle so that
5
+ some friends can watch it with their parents.
6
+
7
+ 1
8
+ 00:02:15.000 --> 00:02:20.000
9
+ - Ta en kopp varmt te.
10
+ - Det är inte varmt.
11
+
12
+ 2
13
+ 00:02:20.000 --> 00:02:25.000
14
+ - Har en kopp te.
15
+ - Det smakar som te.
16
+
17
+ NOTE This last line may not translate well.
18
+
19
+ 3
20
+ 00:02:25.000 --> 00:02:30.000
21
+ - Ta en kopp
22
+
23
+ NOTE end of file
@@ -0,0 +1,10 @@
1
+ WEBVTT
2
+
3
+ 00:16.500 --> 00:18.500
4
+ When the moon <00:17.500>hits your eye
5
+
6
+ 00:00:18.500 --> 00:00:20.500
7
+ Like a <00:19.000>big-a <00:19.500>pizza <00:20.000>pie
8
+
9
+ 00:00:20.500 --> 00:00:21.500
10
+ That's <00:00:21.000><c.colorE5E5E5>amore</c>
File without changes
@@ -0,0 +1,20 @@
1
+ 00:00:00.500 --> 00:00:07.000
2
+ Caption text #1
3
+
4
+ 00:00:07.000 --> 00:00:11.890
5
+ Caption text #2
6
+
7
+ 00:00:11.890 --> 00:00:16.320
8
+ Caption text #3
9
+
10
+ 00:00:16.320 --> 00:00:21.580
11
+ Caption text #4
12
+
13
+ 00:00:21.580 --> 00:00:23.880
14
+ Caption text #5
15
+
16
+ 00:00:23.880 --> 00:00:27.280
17
+ Caption text #6
18
+
19
+ 00:00:27.280 --> 00:00:30.280
20
+ Caption text #7
@@ -0,0 +1 @@
1
+ some text
@@ -0,0 +1 @@
1
+ some text
@@ -0,0 +1,2 @@
1
+ 1
2
+ some text
@@ -0,0 +1,2 @@
1
+ some text
2
+ 00:00:00,500 --> 00:00:07,000
@@ -0,0 +1,14 @@
1
+ 0:00:00.378,0:00:11.378
2
+ Caption text #1
3
+
4
+ 0:00:11.378,0:00:12.305
5
+ Caption text #2
6
+
7
+ 0:00:13.f89,0:00:15.489
8
+ Caption text #3
9
+
10
+ 0:00:15.489,0:00:16.234
11
+ Caption text #4
12
+
13
+ 0:00:17.484,0:00:16.543
14
+ Caption text #5
@@ -0,0 +1,19 @@
1
+ 1
2
+ 00:00:00,500 --> 00:00:07,000
3
+ Caption text #1
4
+
5
+ 2
6
+ 00:00:07,000 --> 00:00:11.890
7
+ Caption text #2
8
+
9
+ 3
10
+ 00:00:11,890 --> 00:00:16,320
11
+ Caption text #3
12
+
13
+ 4
14
+ 00:00:16,320 --> 00:00:21,580
15
+ Caption text #4
16
+
17
+ 5
18
+ 00:00:21,580 --> 00:00:23,880
19
+ Caption text #5
@@ -0,0 +1,22 @@
1
+ WEBVTT
2
+
3
+ 00:00:00.500 --> 00:00:07.000
4
+ Caption text #1
5
+
6
+ 00:00:07.000 --> 00:00:1d.890
7
+ Caption text #2
8
+
9
+ 00:00:11.890 --> 00:00:16.320
10
+ Caption text #3
11
+
12
+ 00:00:16.320 --> 00:00:21.580
13
+ Caption text #4
14
+
15
+ 00:00:21.580 --> 00:00:23.880
16
+ Caption text #5
17
+
18
+ 00:00:23.880 --> 00:00:27.280
19
+ Caption text #6
20
+
21
+ 00:00:27.280 --> 00:00:30.280
22
+ Caption text #7
@@ -0,0 +1,11 @@
1
+ WEBVTT
2
+
3
+ 00:00:00.500 --> 00:00:07.000
4
+ Caption text #1
5
+
6
+ 00:00:07.000 --> 00:00:10.890
7
+ 00:00:07.000 --> 00:00:10.890
8
+ Caption text #2
9
+
10
+ 00:00:11.890 --> 00:00:16.320
11
+ Caption text #3
@@ -0,0 +1,9 @@
1
+ WEBVTT
2
+ Kind: captions
3
+ Language: en
4
+
5
+ 00:00:00.500 --> 00:00:07.000
6
+ Caption text #1
7
+
8
+ 00:00:07.000 --> 00:00:11.890
9
+ Caption text #2
@@ -0,0 +1,13 @@
1
+ WEBVTT
2
+ Kind: captions
3
+ Language: en
4
+ Style:
5
+ ::cue(c.colorCCCCCC) { color: rgb(204, 204, 204);
6
+ }
7
+ ##
8
+
9
+ 00:00:00.500 --> 00:00:07.000
10
+ Caption text #1
11
+
12
+ 00:00:07.000 --> 00:00:11.890
13
+ Caption text #2
@@ -0,0 +1,13 @@
1
+ 0:00:00.378,0:00:11.378
2
+ Caption text #1
3
+
4
+ 0:00:11.378,0:00:12.305
5
+
6
+ 0:00:13.489,0:00:15.489
7
+ Caption text #3
8
+
9
+ 0:00:15.489,0:00:16.234
10
+ Caption text #4
11
+
12
+ 0:00:17.484,0:00:16.543
13
+ Caption text #5
@@ -0,0 +1,19 @@
1
+ 1
2
+ 00:00:00,500 --> 00:00:07,000
3
+ Caption text #1
4
+
5
+ 2
6
+ 00:00:07,000 --> 00:00:11,890
7
+
8
+
9
+ 3
10
+ 00:00:11,890 --> 00:00:16,320
11
+ Caption text #3
12
+
13
+ 4
14
+ 00:00:16,320 --> 00:00:21,580
15
+ Caption text #4
16
+
17
+ 5
18
+ 00:00:21,580 --> 00:00:23,880
19
+ Caption text #5
@@ -0,0 +1,15 @@
1
+ WEBVTT
2
+
3
+ 00:00:00.500 --> 00:00:07.000
4
+ Caption text #1
5
+
6
+ 00:00:07.000 --> 00:00:11.890
7
+
8
+ 00:00:11.890 --> 00:00:16.320
9
+ Caption text #3
10
+
11
+ 00:00:16.320 --> 00:00:21.580
12
+ Caption text #4
13
+
14
+ 00:00:21.580 --> 00:00:23.880
15
+ Caption text #5
@@ -0,0 +1,13 @@
1
+ 0:00:00.378,0:00:11.378
2
+ Caption text #1
3
+
4
+ Caption text #2
5
+
6
+ 0:00:13.489,0:00:15.489
7
+ Caption text #3
8
+
9
+ 0:00:15.489,0:00:16.234
10
+ Caption text #4
11
+
12
+ 0:00:17.484,0:00:16.543
13
+ Caption text #5
@@ -0,0 +1,18 @@
1
+ 1
2
+ 00:00:00,500 --> 00:00:07,000
3
+ Caption text #1
4
+
5
+ 2
6
+ Caption text #2
7
+
8
+ 3
9
+ 00:00:11,890 --> 00:00:16,320
10
+ Caption text #3
11
+
12
+ 4
13
+ 00:00:16,320 --> 00:00:21,580
14
+ Caption text #4
15
+
16
+ 5
17
+ 00:00:21,580 --> 00:00:23,880
18
+ Caption text #5
@@ -0,0 +1,21 @@
1
+ WEBVTT
2
+
3
+ 00:00:00.500 --> 00:00:07.000
4
+ Caption text #1
5
+
6
+ Caption text #2
7
+
8
+ 00:00:11.890 --> 00:00:16.320
9
+ Caption text #3
10
+
11
+ 00:00:16.320 --> 00:00:21.580
12
+ Caption text #4
13
+
14
+ 00:00:21.580 --> 00:00:23.880
15
+ Caption text #5
16
+
17
+ 00:00:23.880 --> 00:00:27.280
18
+ Caption text #6
19
+
20
+ 00:00:27.280 --> 00:00:30.280
21
+ Caption text #7