- Add mypy and available typing stubs to dev-requirements
- Add mypy config
- Add py.typed to streamlink + streamlink_cli packages (PEP 561):
This is required, so that mypy can import types from streamlink when
installed in editable mode. Don't publish this file for now.
Once various streamlink APIs are properly typed, typing stub files
can be added instead.
- Add basic pyproject.toml with build-system information
- Drop versioneer in favor of versioningit
- Delete versioneer install module and remove its setup.cfg config
- Replace `src/streamlink/_version.py` and load streamlink's version
string via versioningit. The module's `__version__` export will get
replaced by a static string on build-time when creating sdists/wheels,
which results in the old versioneer behavior with support for
editable installs.
- Make versioningit use the same version format as versioneer
- Update MANIFEST.in and .coveragerc
Show an error message when the python_requires classifier of the
package gets ignored, so that users can't accidentally install
an incompatible version of Streamlink with their unsupported
Python version / environment.
Also bump the required version of pip to >=9 in dev-requirements.
* Build additional "streamlinkw" launcher on Windows
1/2: Windows installer (using a pre-release version of pynsist)
* Build additional "streamlinkw" launcher on Windows
2/2: Windows specific wheels
- removed versionchange references as Streamlink does not use it.
- removed old code that was deprecated in Livestreamer
- removed DeprecatedWarning for 2.6 as it is already mentioned in
`setup.py`
a14f170a04/setup.py (L82)
- removed unittest2
- Flake8 for some lines/files that I changed.
* stream.dash: parser for dash manifest files
* stream.dash: stream player for dash with plugin to support dash:// prefixed urls
* cli.main: make sure that streams are closed on errors
* stream.dash: fix some parsing bugs
* stream.dash: tidy up the segment number generation
* plugins.dash: wip segment timeline
* stream.dash: update to segment timeline parsing
* stream.dash: py3 support
* stream.dash: raise an error for DRM protected streams
* stream.dash: fixes for timescaling and some segment templates
* docs: add DASHStream to docs with other Stream classes
* dash: fix for video only stream
* plugins.dash: fix bug where all URLs were matched
* stream.dash: fix issue with manifest reload
* plugin.dash: add tests and fix a couple of bugs found in testing
* stream.dash: add some tests to cover the DASHStream classes
* WIP: audio only streams
* add some debugging for threads and remove the thread joins
* dash: startNumber should default to 1
* dash: follow redirects to get the base url
* dash: fix bool parser, and segment template parser
* dash: fixed some issues...
...with some segment templates, as well as improving the presentation
delay handling
* dash: add a back-off for checking for manifest changes
* dash: fix broken tests
* dash: incomplete support for Segment@r
* dash: fixed audio/video sync issue
Added a `copyts` option to the FFMPEG muxer class so that the timestamps
given in the source files are maintained, this appears to fix the a/v
sync issues.
NB. The timestamp can get weird, but that's how it is :)
* dash: support for Time _and_ Number in segment timeline
* tests: add some dash parser tests + a little refactor
* tests: add dash to built in plugins
* tests: more coverage of dash_parser
Added a new module for tests, `freezegun`, for mocking time.
* dash: fix for missing publishTime
* dash: update available_at times to be datetime
This should fix any timezone or leap-second issues, etc.
* fixed timing issue for 1tv.ru
* dash: fix availability timeline for segment timeline
* dash: flake8 tweaks
* dash: add a few debug logging messages
According to the the HLS RFC [0], AES-128 streams use PKCS#7 padding.
This commit implement PKCS#7 padding decoding.
Although streamlink wasn't implementing this padding, MPEG TS streams
are working because they use a synchronization byte so the non-removed
padding was ignored by video players.
This require to have the full segment buffer instead of iterating the
result in chunks, but requests was still downloading the full segment in
memory as stream=True is not set. See [1].
[0] https://tools.ietf.org/html/rfc8216#section-4.3.2.4
[1] http://docs.python-requests.org/en/master/api/#requests.Response.iter_content
* Enable automated testing on Windows via AppVeyor
* tests: add some tests for the command line argument parsing
* cli: fixed windows argument parsing with escaped quotes, etc.
* tests: python2.6 requires unittest2
* tests: fixed awful typo!