├── .github
├── FUNDING.yml
├── ISSUE_TEMPLATE
│ ├── bug_report.md
│ └── feature_request.md
├── dependabot.yml
└── workflows
│ ├── python-package.yml
│ └── python-publish.yml
├── .gitignore
├── .vscode
└── settings.json
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── ISSUE_TEMPLATE.md
├── LICENSE
├── PULL_REQUEST_TEMPLATE.md
├── README.md
├── SECURITY.md
├── docs
├── index.html
└── vtt_to_srt.html
├── requirements.txt
├── setup.py
├── tests
├── conftest.py
├── idd.vtt
├── idd_format.vtt
├── input_alternative_iso-8859-2.vtt
├── input_alternative_utf8.vtt
├── input_iso-8859-2.vtt
├── input_utf8.vtt
├── test_base.py
├── test_convert_directory.py
├── test_convert_file.py
├── test_vtt_to_str.py
├── valid_output_idd.srt
├── valid_output_idd_format.srt
├── valid_output_iso-8859-2.srt
└── valid_output_utf8.srt
└── vtt_to_srt
├── __init__.py
└── vtt_to_srt.py
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: jsonzilla
4 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: "[BUG]"
5 | labels: bug
6 | assignees: jsonzilla
7 |
8 | ---
9 |
10 | **Note: for support questions, please use stackoverflow**.
11 | This repository's issues are reserved for feature requests and bug reports.
12 | Your issue may already be reported! Please search on the [issue tab](../) before creating one.
13 |
14 |
15 |
16 | ## Expected Behavior
17 |
18 |
19 | ## Current Behavior
20 |
21 |
22 | ## Possible Solution
23 |
24 |
25 | ## Steps to Reproduce
26 |
27 |
28 | 1.
29 | 2.
30 | 3.
31 | 4.
32 |
33 | ## Context (Environment)
34 |
35 |
36 |
37 |
38 | * **Version**:
39 | * **Platform**:
40 | * **Subsystem**:
41 | * **Files**:
42 |
43 | ## Detailed Description
44 |
45 |
46 | ## Possible Implementation
47 |
48 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: "[REQUEST]"
5 | labels: enhancement
6 | assignees: jsonzilla
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12 |
13 | **Note: for support questions, please use stackoverflow**.
14 | This repository's issues are reserved for feature requests and bug reports.
15 | Your issue may already be reported! Please search on the [issue tab](../) before creating one.
16 |
17 | **Describe the solution you'd like**
18 | A clear and concise description of what you want to happen.
19 |
20 | **Describe alternatives you've considered**
21 | A clear and concise description of any alternative solutions or features you've considered.
22 |
23 | **Additional context**
24 | Add any other context or screenshots about the feature request here.
25 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | # To get started with Dependabot version updates, you'll need to specify which
2 | # package ecosystems to update and where the package manifests are located.
3 | # Please see the documentation for all configuration options:
4 | # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
5 |
6 | version: 2
7 | updates:
8 | - package-ecosystem: "pip" # See documentation for possible values
9 | directory: "/" # Location of package manifests
10 | schedule:
11 | interval: "weekly"
12 |
--------------------------------------------------------------------------------
/.github/workflows/python-package.yml:
--------------------------------------------------------------------------------
1 | # This workflow will install Python dependencies, run tests and lint with a variety of Python versions
2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
3 |
4 | name: Python package
5 |
6 | on:
7 | push:
8 | branches: [master]
9 | pull_request:
10 | branches: [master]
11 |
12 | jobs:
13 | build:
14 | runs-on: ubuntu-latest
15 | strategy:
16 | fail-fast: false
17 | matrix:
18 | python-version: ["3.8", "3.9", "3.10", "3.11"]
19 |
20 | steps:
21 | - uses: actions/checkout@v3
22 | - name: Set up Python ${{ matrix.python-version }}
23 | uses: actions/setup-python@v3
24 | with:
25 | python-version: ${{ matrix.python-version }}
26 | - name: Install dependencies
27 | run: |
28 | python -m pip install --upgrade pip
29 | python -m pip install flake8 pytest
30 | if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
31 | - name: Lint with flake8
32 | run: |
33 | # stop the build if there are Python syntax errors or undefined names
34 | flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
35 | # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
36 | flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
37 | - name: Test with pytest
38 | run: |
39 | pytest
40 |
--------------------------------------------------------------------------------
/.github/workflows/python-publish.yml:
--------------------------------------------------------------------------------
1 | # This workflow will upload a Python Package using Twine when a release is created
2 | # For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries
3 |
4 | # This workflow uses actions that are not certified by GitHub.
5 | # They are provided by a third-party and are governed by
6 | # separate terms of service, privacy policy, and support
7 | # documentation.
8 |
9 | name: Upload Python Package
10 |
11 | on:
12 | release:
13 | types: [published]
14 |
15 | permissions:
16 | contents: read
17 |
18 | jobs:
19 | deploy:
20 |
21 | runs-on: ubuntu-latest
22 |
23 | steps:
24 | - uses: actions/checkout@v3
25 | - name: Set up Python
26 | uses: actions/setup-python@v3
27 | with:
28 | python-version: '3.x'
29 | - name: Install dependencies
30 | run: |
31 | python -m pip install --upgrade pip
32 | pip install build
33 | - name: Build package
34 | run: python -m build
35 | - name: Publish package
36 | uses: pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29
37 | with:
38 | user: __token__
39 | password: ${{ secrets.PYPI_API_TOKEN }}
40 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .Python
2 | build/
3 | develop-eggs/
4 | dist/
5 | downloads/
6 | eggs/
7 | .eggs/
8 | lib/
9 | lib64/
10 | parts/
11 | pytest_cache/
12 | sdist/
13 | var/
14 | wheels/
15 | *.egg-info/
16 | .installed.cfg
17 | *.egg
18 | *.pyc
19 | MANIFEST
20 |
21 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "editor.formatOnType": true,
3 | "editor.formatOnSave": true,
4 | }
--------------------------------------------------------------------------------
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Contributor Covenant Code of Conduct
2 |
3 | ## Our Pledge
4 |
5 | We as members, contributors, and leaders pledge to make participation in our
6 | community a harassment-free experience for everyone, regardless of age, body
7 | size, visible or invisible disability, ethnicity, sex characteristics, gender
8 | identity and expression, level of experience, education, socio-economic status,
9 | nationality, personal appearance, race, religion, or sexual identity
10 | and orientation.
11 |
12 | We pledge to act and interact in ways that contribute to an open, welcoming,
13 | diverse, inclusive, and healthy community.
14 |
15 | ## Our Standards
16 |
17 | Examples of behavior that contributes to a positive environment for our
18 | community include:
19 |
20 | * Demonstrating empathy and kindness toward other people
21 | * Being respectful of differing opinions, viewpoints, and experiences
22 | * Giving and gracefully accepting constructive feedback
23 | * Accepting responsibility and apologizing to those affected by our mistakes,
24 | and learning from the experience
25 | * Focusing on what is best not just for us as individuals, but for the
26 | overall community
27 |
28 | Examples of unacceptable behavior include:
29 |
30 | * The use of sexualized language or imagery, and sexual attention or
31 | advances of any kind
32 | * Trolling, insulting or derogatory comments, and personal or political attacks
33 | * Public or private harassment
34 | * Publishing others' private information, such as a physical or email
35 | address, without their explicit permission
36 | * Other conduct which could reasonably be considered inappropriate in a
37 | professional setting
38 |
39 | ## Enforcement Responsibilities
40 |
41 | Community leaders are responsible for clarifying and enforcing our standards of
42 | acceptable behavior and will take appropriate and fair corrective action in
43 | response to any behavior that they deem inappropriate, threatening, offensive,
44 | or harmful.
45 |
46 | Community leaders have the right and responsibility to remove, edit, or reject
47 | comments, commits, code, wiki edits, issues, and other contributions that are
48 | not aligned to this Code of Conduct, and will communicate reasons for moderation
49 | decisions when appropriate.
50 |
51 | ## Scope
52 |
53 | This Code of Conduct applies within all community spaces, and also applies when
54 | an individual is officially representing the community in public spaces.
55 | Examples of representing our community include using an official e-mail address,
56 | posting via an official social media account, or acting as an appointed
57 | representative at an online or offline event.
58 |
59 | ## Enforcement
60 |
61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be
62 | reported to the community leaders responsible for enforcement at
63 | j@jsonzilla.com.
64 | All complaints will be reviewed and investigated promptly and fairly.
65 |
66 | All community leaders are obligated to respect the privacy and security of the
67 | reporter of any incident.
68 |
69 | ## Enforcement Guidelines
70 |
71 | Community leaders will follow these Community Impact Guidelines in determining
72 | the consequences for any action they deem in violation of this Code of Conduct:
73 |
74 | ### 1. Correction
75 |
76 | **Community Impact**: Use of inappropriate language or other behavior deemed
77 | unprofessional or unwelcome in the community.
78 |
79 | **Consequence**: A private, written warning from community leaders, providing
80 | clarity around the nature of the violation and an explanation of why the
81 | behavior was inappropriate. A public apology may be requested.
82 |
83 | ### 2. Warning
84 |
85 | **Community Impact**: A violation through a single incident or series
86 | of actions.
87 |
88 | **Consequence**: A warning with consequences for continued behavior. No
89 | interaction with the people involved, including unsolicited interaction with
90 | those enforcing the Code of Conduct, for a specified period of time. This
91 | includes avoiding interactions in community spaces as well as external channels
92 | like social media. Violating these terms may lead to a temporary or
93 | permanent ban.
94 |
95 | ### 3. Temporary Ban
96 |
97 | **Community Impact**: A serious violation of community standards, including
98 | sustained inappropriate behavior.
99 |
100 | **Consequence**: A temporary ban from any sort of interaction or public
101 | communication with the community for a specified period of time. No public or
102 | private interaction with the people involved, including unsolicited interaction
103 | with those enforcing the Code of Conduct, is allowed during this period.
104 | Violating these terms may lead to a permanent ban.
105 |
106 | ### 4. Permanent Ban
107 |
108 | **Community Impact**: Demonstrating a pattern of violation of community
109 | standards, including sustained inappropriate behavior, harassment of an
110 | individual, or aggression toward or disparagement of classes of individuals.
111 |
112 | **Consequence**: A permanent ban from any sort of public interaction within
113 | the community.
114 |
115 | ## Attribution
116 |
117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage],
118 | version 2.0, available at
119 | https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
120 |
121 | Community Impact Guidelines were inspired by [Mozilla's code of conduct
122 | enforcement ladder](https://github.com/mozilla/diversity).
123 |
124 | [homepage]: https://www.contributor-covenant.org
125 |
126 | For answers to common questions about this code of conduct, see the FAQ at
127 | https://www.contributor-covenant.org/faq. Translations are available at
128 | https://www.contributor-covenant.org/translations.
129 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing
2 |
3 | ## Request for changes/ Pull Requests
4 | You first need to create a fork of the repository to commit your changes to it. Methods to fork a repository can be found in the [GitHub Documentation](https://docs.github.com/en/get-started/quickstart/fork-a-repo).
5 |
6 | Then add your fork as a local project:
7 |
8 | ```sh
9 | # Using HTTPS
10 | git clone https://github.com/jsonzilla/REPOSITORY.git
11 |
12 | # Using SSH
13 | git clone git@github.com:jsonzilla/REPOSITORY.git
14 | ```
15 |
16 | > [Which remote URL should be used ?](https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories)
17 |
18 | Then, go to your local folder
19 |
20 | ```sh
21 | cd github-issue-template
22 | ```
23 |
24 | Add git remote controls :
25 |
26 | ```sh
27 | # Using HTTPS
28 | git remote add fork https://github.com/YOUR-USERNAME/REPOSITORY.git
29 | git remote add upstream https://github.com/jsonzilla/REPOSITORY.git
30 |
31 |
32 | # Using SSH
33 | git remote add fork git@github.com:YOUR-USERNAME/REPOSITORY.git
34 | git remote add upstream git@github.com/jsonzilla/REPOSITORY.git
35 | ```
36 |
37 | You can now verify that you have your two git remotes:
38 |
39 | ```sh
40 | git remote -v
41 | ```
42 |
43 | ## Receive remote updates
44 | In view of staying up to date with the central repository :
45 |
46 | ```sh
47 | git pull upstream master
48 | ```
49 |
50 | ## Choose a base branch
51 | Before starting development, you need to know which branch to base your modifications/additions on. When in doubt, use master.
52 |
53 | | Type of change | | Branches |
54 | | :------------------ |:---------:| ---------------------:|
55 | | Documentation | | `master` or `main` |
56 | | Bug fixes | | `master` or `main` |
57 | | New features | | `master` or `main` |
58 | | New issues models | | `YOUR-USERNAME:patch` |
59 |
60 | ```sh
61 | # Switch to the desired branch
62 | git switch master
63 | # or
64 | git switch main
65 |
66 | # Pull down any upstream changes
67 | git pull
68 |
69 | # Create a new branch to work on
70 | git switch --create patch/1234-name-issue
71 | ```
72 |
73 | Commit your changes, then push the branch to your fork with `git push -u fork` and open a pull request on [the REPOSITORY repository](https://github.com/jsonzilla/REPOSITORY/) following the template provided.
--------------------------------------------------------------------------------
/ISSUE_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | **Note: for support questions, please use stackoverflow**.
2 | This repository's issues are reserved for feature requests and bug reports.
3 | Your issue may already be reported! Please search on the [issue tab](../) before creating one.
4 |
5 |
6 |
7 | ## I'm submitting a ...
8 | - [ ] bug report
9 | - [ ] feature request
10 | - [ ] support request => Please do not submit support request here, see note at the top of this template.
11 |
12 | ## Do you want to request a *feature* or report a *bug*?
13 |
14 | ## Expected Behavior
15 |
16 |
17 | ## Current Behavior
18 |
19 |
20 | ## Possible Solution
21 |
22 |
23 | ## Steps to Reproduce
24 |
25 |
26 | 1.
27 | 2.
28 | 3.
29 | 4.
30 |
31 | ## Context (Environment)
32 |
33 |
34 |
35 |
36 | * **Version**:
37 | * **Platform**:
38 | * **Subsystem**:
39 | * **Files**:
40 |
41 | ## Detailed Description
42 |
43 |
44 | ## Possible Implementation
45 |
46 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "[]"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright [yyyy] [name of copyright owner]
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | A similar PR may already be submitted! Please search among the [Pull request](../) before creating one.
2 |
3 | Thanks for submitting a pull request! Please provide enough information so that others can review your pull request:
4 |
5 | For more information, see the `CONTRIBUTING` guide.
6 |
7 |
8 | ## Summary
9 |
10 |
11 |
12 | This PR fixes/implements the following **bugs/features**
13 |
14 | * [ ] Bug 1
15 | * [ ] Bug 2
16 | * [ ] Feature 1
17 | * [ ] Feature 2
18 | * [ ] Breaking changes
19 |
20 |
21 |
22 | * **What kind of change does this PR introduce?** (Bug fix, feature, docs update, ...)
23 |
24 |
25 |
26 | * **What is the current behavior?** (You can also link to an open issue here)
27 |
28 |
29 |
30 | * **What is the new behavior (if this is a feature change)?**
31 |
32 |
33 |
34 | * **Does this PR introduce a breaking change?** (What changes might users need to make in their application due to this PR?)
35 |
36 |
37 |
38 | ## Checklist
39 |
40 | * **Please check if the PR fulfills these requirements**
41 | - [ ] The commit message follows our guidelines
42 | - [ ] Tests for the changes have been added (for bug fixes / features)
43 | - [ ] Docs have been added / updated (for bug fixes / features)
44 |
45 | ## Test plan (required)
46 |
47 | Demonstrate the code is solid. Example: The exact commands you ran and their output, screenshots / videos if the pull request changes UI.
48 |
49 |
50 |
51 | ## Closing issues
52 |
53 |
54 | Fixes #
55 |
56 | ## Other information:
57 |
58 |
59 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # vtt_to_srt3
2 | Convert vtt files to srt subtitle format
3 | > For Python 3.x
4 | * [you can get a new version for Python 2.7 here](https://github.com/jsonzilla/vtt_to_srt2)
5 | * [you can get the old version for Python 2.7 here](https://github.com/jansenicus/vtt-to-srt.py)
6 |
7 | ## Docs
8 | [https://jsonzilla.github.io/vtt_to_srt3/](https://jsonzilla.github.io/vtt_to_srt3/)
9 |
10 |
11 | ## Installation
12 | ```shell
13 | pip install vtt_to_srt3
14 | ```
15 |
16 | ```cmd
17 | python -m pip install vtt_to_srt3
18 | ```
19 |
20 | ## Usage from terminal
21 |
22 | ```shell
23 | usage: vtt_to_srt [-h] [-r] [-e ENCODING] [-rf] pathname
24 |
25 | Convert vtt files to srt files
26 |
27 | positional arguments:
28 | pathname a file or directory with files to be converted
29 |
30 | options:
31 | -h, --help show this help message and exit
32 | -r, --recursive walk path recursively
33 | -e ENCODING, --encoding ENCODING
34 | encoding format for input and output files
35 | -rf, --remove_format remove the format tags like bold & italic from output files
36 | ```
37 |
38 | ## Usage as a lib
39 |
40 | Convert vtt file
41 | ```python
42 | from vtt_to_srt.vtt_to_srt import ConvertFile
43 |
44 | convert_file = ConvertFile("input_utf8.vtt", "utf-8")
45 | convert_file.convert()
46 | ```
47 |
48 | Recursively convert all vtt files in directory
49 | ```python
50 | from vtt_to_srt.vtt_to_srt import ConvertDirectories
51 |
52 | recursive = False
53 | convert_file = ConvertDirectories(".", recursive, "utf-8")
54 | convert_file.convert()
55 | ```
56 |
57 | ## Manual build
58 |
59 | Generate wheel
60 | ```shell
61 | python -m pip install --upgrade setuptools wheel build
62 | python -m build
63 | ```
64 |
65 | ## Generate documentation
66 |
67 | Generate documentation
68 | ```shell
69 | python -m pip install pdoc3
70 | pdoc --html vtt_to_srt/vtt_to_srt.py -o docs
71 | mv docs/vtt_to_srt.html docs/index.html
72 | rm -rm docs/vtt_to_srt
73 | ```
74 |
--------------------------------------------------------------------------------
/SECURITY.md:
--------------------------------------------------------------------------------
1 | # Security Policy
2 |
3 | ## Reporting Security Issues
4 |
5 | **Please do not report security vulnerabilities through public GitHub issues.**
6 |
7 | If you prefer to submit without logging in, send email to [j@jsonzilla.com](mailto:j@jsonzilla.com). If possible, encrypt your message with our PGP key; please download it from the [PGP Key page](https://keys.openpgp.org/vks/v1/by-fingerprint/D9EAB1475BF5E6D2E13C0AEE4EA9E3DAFD05CFD4).
8 |
9 | You should receive a response within 72 hours. If for some reason you do not, please follow up via email to ensure we received your original message.
10 |
11 | Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:
12 |
13 | * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
14 | * Full paths of source file(s) related to the manifestation of the issue
15 | * The location of the affected source code (tag/branch/commit or direct URL)
16 | * Any special configuration required to reproduce the issue
17 | * Step-by-step instructions to reproduce the issue
18 | * Proof-of-concept or exploit code (if possible)
19 | * Impact of the issue, including how an attacker might exploit the issue
20 |
21 | ## Preferred Languages
22 |
23 | We prefer all communications to be in English.
24 |
--------------------------------------------------------------------------------
/docs/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
def has_timestamp(self, content):
791 | """Check if line is a timestamp srt format
792 |
793 | :contents -- contents of vtt file
794 | """
795 | return re.match(r"((\d\d:){2}\d\d),(\d{3}) --> ((\d\d:){2}\d\d),(\d{3})", content) is not None
def has_timestamp(self, content: str) -> bool:
822 | """Check if line is a timestamp srt format
823 |
824 | :contents -- contents of vtt file
825 | """
826 | return re.match(r"((\d\d:){2}\d\d),(\d{3}) --> ((\d\d:){2}\d\d),(\d{3})", content) is not None