Skip to content

Commit

Permalink
Merge pull request #59 from glut23/refactor
Browse files Browse the repository at this point in the history
Refactor
  • Loading branch information
glut23 authored May 14, 2024
2 parents 87411cf + 8505d06 commit a0d1321
Show file tree
Hide file tree
Showing 65 changed files with 4,514 additions and 1,604 deletions.
32 changes: 32 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: CI

on:
push:
branches:
- master
pull_request:
branches:
- master

jobs:
build:
runs-on: ubuntu-latest

strategy:
matrix:
python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12']

steps:
- name: Checkout Repository
uses: actions/checkout@v2

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}

- name: Install tox
run: pip install tox

- name: Run tox
run: tox
12 changes: 0 additions & 12 deletions .travis.yml

This file was deleted.

2 changes: 2 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
MIT License

Copyright (c) 2016 Alejandro Mendez

Permission is hereby granted, free of charge, to any person obtaining a copy
Expand Down
43 changes: 42 additions & 1 deletion setup.cfg
Original file line number Diff line number Diff line change
@@ -1,2 +1,43 @@
[metadata]
description-file = README.rst
description_file = README.rst

[flake8]
doctests = true
radon-max-cc=10

[tox:tox]
envlist =
codestyle
py
coverage
isolated_build = True

[coverage:run]
source = webvtt
branch = true

[coverage:report]
fail_under = 100

[testenv]
deps =
coverage
description = run the tests and provide coverage metrics
commands =
coverage run -m unittest discover

[testenv:codestyle]
deps =
flake8
flake8-docstrings
radon
mypy
commands =
flake8 webvtt setup.py
mypy webvtt

[testenv:coverage]
deps = coverage
commands =
coverage html --fail-under=0
coverage report
27 changes: 12 additions & 15 deletions setup.py
Original file line number Diff line number Diff line change
@@ -1,43 +1,40 @@
import io
import re
from setuptools import setup, find_packages
"""webvtt-py setuptools configuration."""

with io.open('README.rst', 'r', encoding='utf-8') as f:
readme = f.read()
import re
import pathlib

with io.open('webvtt/__init__.py', 'rt', encoding='utf-8') as f:
version = re.search(r'__version__ = \'(.*?)\'', f.read()).group(1)
from setuptools import setup, find_packages

version = (
re.search(
r'__version__ = \'(.*?)\'',
pathlib.Path('webvtt/__init__.py').read_text()
).group(1)
)

setup(
name='webvtt-py',
version=version,
description='WebVTT reader, writer and segmenter',
long_description=readme,
long_description=pathlib.Path('README.rst').read_text(),
author='Alejandro Mendez',
author_email='[email protected]',
url='https://github.com/glut23/webvtt-py',
packages=find_packages('.', exclude=['tests']),
include_package_data=True,
install_requires=[
'docopt'
],
entry_points={
'console_scripts': [
'webvtt=webvtt.cli:main'
]
},
license='MIT',
python_requires='>=3.4',
python_requires='>=3.7',
classifiers=[
'Development Status :: 3 - Alpha',
'Intended Audience :: Developers',
'License :: OSI Approved :: MIT License',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
Expand Down
10 changes: 0 additions & 10 deletions tests/generic.py

This file was deleted.

File renamed without changes.
4 changes: 3 additions & 1 deletion tests/subtitles/comments.vtt → tests/samples/comments.vtt
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,6 @@ NOTE This last line may not translate well.
3
00:02:25.000 --> 00:02:30.000
- Ta en kopp
- Ta en kopp

NOTE end of file
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
23 changes: 23 additions & 0 deletions tests/samples/styles_with_comments.vtt
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
WEBVTT
NOTE Sample of comments with styles
STYLE
::cue {
background-image: linear-gradient(to bottom, dimgray, lightgray);
color: papayawhip;
}
NOTE This is the second block of styles
NOTE
Multiline comment for the same
second block of styles
STYLE
::cue(b) {
color: peachpuff;
}
00:00:00.000 --> 00:00:10.000
- Hello <b>world</b>.
File renamed without changes.
File renamed without changes.
File renamed without changes.
182 changes: 182 additions & 0 deletions tests/test_cli.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,182 @@
import unittest
import tempfile
import os
import pathlib
import textwrap

from webvtt.cli import main


class CLITestCase(unittest.TestCase):

def test_cli(self):
vtt_file = (
pathlib.Path(__file__).resolve().parent
/ 'samples' / 'sample.vtt'
)

with tempfile.TemporaryDirectory() as temp_dir:

main(['segment', str(vtt_file.resolve()), '-o', temp_dir])
_, dirs, files = next(os.walk(temp_dir))

self.assertEqual(len(dirs), 0)
self.assertEqual(len(files), 8)
for expected_file in ('prog_index.m3u8',
'fileSequence0.webvtt',
'fileSequence1.webvtt',
'fileSequence2.webvtt',
'fileSequence3.webvtt',
'fileSequence4.webvtt',
'fileSequence5.webvtt',
'fileSequence6.webvtt',
):
self.assertIn(expected_file, files)

self.assertEqual(
(pathlib.Path(temp_dir) / 'prog_index.m3u8').read_text(),
textwrap.dedent(
'''
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-VERSION:3
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:30.00000
fileSequence0.webvtt
#EXTINF:30.00000
fileSequence1.webvtt
#EXTINF:30.00000
fileSequence2.webvtt
#EXTINF:30.00000
fileSequence3.webvtt
#EXTINF:30.00000
fileSequence4.webvtt
#EXTINF:30.00000
fileSequence5.webvtt
#EXTINF:30.00000
fileSequence6.webvtt
#EXT-X-ENDLIST
'''
).lstrip())
self.assertEqual(
(pathlib.Path(temp_dir) / 'fileSequence0.webvtt').read_text(),
textwrap.dedent(
'''
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:900000,LOCAL:00:00:00.000
00:00:00.500 --> 00:00:07.000
Caption text #1
00:00:07.000 --> 00:00:11.890
Caption text #2
'''
).lstrip())
self.assertEqual(
(pathlib.Path(temp_dir) / 'fileSequence1.webvtt').read_text(),
textwrap.dedent(
'''
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:900000,LOCAL:00:00:00.000
00:00:07.000 --> 00:00:11.890
Caption text #2
00:00:11.890 --> 00:00:16.320
Caption text #3
00:00:16.320 --> 00:00:21.580
Caption text #4
'''
).lstrip())
self.assertEqual(
(pathlib.Path(temp_dir) / 'fileSequence2.webvtt').read_text(),
textwrap.dedent(
'''
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:900000,LOCAL:00:00:00.000
00:00:16.320 --> 00:00:21.580
Caption text #4
00:00:21.580 --> 00:00:23.880
Caption text #5
00:00:23.880 --> 00:00:27.280
Caption text #6
00:00:27.280 --> 00:00:30.280
Caption text #7
'''
).lstrip())
self.assertEqual(
(pathlib.Path(temp_dir) / 'fileSequence3.webvtt').read_text(),
textwrap.dedent(
'''
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:900000,LOCAL:00:00:00.000
00:00:27.280 --> 00:00:30.280
Caption text #7
00:00:30.280 --> 00:00:36.510
Caption text #8
00:00:36.510 --> 00:00:38.870
Caption text #9
00:00:38.870 --> 00:00:45.000
Caption text #10
'''
).lstrip())
self.assertEqual(
(pathlib.Path(temp_dir) / 'fileSequence4.webvtt').read_text(),
textwrap.dedent(
'''
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:900000,LOCAL:00:00:00.000
00:00:38.870 --> 00:00:45.000
Caption text #10
00:00:45.000 --> 00:00:47.000
Caption text #11
00:00:47.000 --> 00:00:50.970
Caption text #12
'''
).lstrip())
self.assertEqual(
(pathlib.Path(temp_dir) / 'fileSequence5.webvtt').read_text(),
textwrap.dedent(
'''
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:900000,LOCAL:00:00:00.000
00:00:47.000 --> 00:00:50.970
Caption text #12
00:00:50.970 --> 00:00:54.440
Caption text #13
00:00:54.440 --> 00:00:58.600
Caption text #14
00:00:58.600 --> 00:01:01.350
Caption text #15
'''
).lstrip())
self.assertEqual(
(pathlib.Path(temp_dir) / 'fileSequence6.webvtt').read_text(),
textwrap.dedent(
'''
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:900000,LOCAL:00:00:00.000
00:00:58.600 --> 00:01:01.350
Caption text #15
00:01:01.350 --> 00:01:04.300
Caption text #16
'''
).lstrip())
Loading

0 comments on commit a0d1321

Please sign in to comment.