- Replace `tool.versioningit.onbuild` hook with a custom implementation
which replaces the entire `streamlink._version` module (similar to
before) and which additionally removes `versioningit` from the
`build-system.requires` field in `pyproject.toml` and which sets
a static version string in `setup.py`
- Rewrite `streamlink._version` module
- Add and update comments
- Update docs
- Add tests
- 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
- move build directory of the shell completions from /build/shtab to
/completions due to an sdist restriction of setuptools and MANIFEST.in
- recursively include the /completions directory in MANIFEST.in
- update data_files path in setup.py (for inclusion in wheels)
- update .gitignore
- drop iso-639 and iso3166 dependencies in favor of pycountry
- remove the `STREAMLINK_USE_PYCOUNTRY` env var switch from setup.py
- move dependencies list from setup.py to setup.cfg
- update utils.l10n and its tests
- update Windows installer config
- update docs
- bump websocket-client requirement to >=1.2.1,<2.0
- avoid circular import by importing HTTPSession in session directly
- implement a common WebsocketClient based on the WebSocketApp API of
websocket-client, so that plugins don't have to re-implement basic
boilerplate code
- automatically apply User-Agent header
- automatically apply proxy settings
- set websocket log level (globally)
- add tests
- move static package metadata to setup.cfg
- rename deprecated license_file field to license_files
Remove setuptools arguments:
- test_suite:
Unneeded, as we disable the deprecated setuptools test command
Keep dynamic setuptools arguments:
- version/cmdclass:
For writing static version info via versioneer
- install_requires:
Some dependencies still depend on special environment variables
instead of package "extra" dependency fields
- entry_points:
The `gui_scripts` entry point should only be set when building wheels
for Windows via `--plat-name={win32,win-amd64,cygwin}`
- data_files:
All data files are optional and should not cause the build to fail if
they are missing, eg. when building from sdist
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.
This temporarily fixes the issue of randomly failing tests on
Windows which seems to be related to the latest requests version
2.26 and requests-mock, where mocked request responses take an
random/arbitrary time to return data, which makes the
EventedHLSStreamWriter tests miss their time frames when writing
HLS segment data to the output buffer.
Since Windows builds of Streamlink don't rely on system python
packages like on most Linux distros for example, downgrading and
forcing an older version of requests on Windows should be fine.
This commit thus partly reverts 35cb8d9f and 29a25fc7 which fixed
the broken dependencies of the Windows installer and skipped the
randomly failing tests on Windows.
- Bump requests to latest version:
This replaces transitive dependency chardet with charset-normalizer
- Fix Windows installer dependencies:
Upgrade dependencies and list them as wheels with strict versions,
where possible.
pynsist unfortunately doesn't support additional wheel checksums.
* 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
* build: fix for universal wheel on python 2.7
* release: fix build order for deploys
The script to build the sdist and wheel packages is run before the
script that uploads them to PyPI. The sdist script doesn't clean up
the environment, but extra prune options have been added to the
MANIFEST.in file (thanks @back-to).
* build: ensure twine/wheel up-to-date and upload sdist/whl separately
* 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
* package: include README for PyPI page
PyPI supports Markdown for the long_description for packages now, we
should include the README.md so that the project page looks a bit nicer.
See https://pypi.org/project/streamlink/0.12.1/#description
* package: improve the list of classifiers
* setup: added some more links and the supported python versions
As suggested by @back-to
* build: use versioneer to set the build number
* build: update the deploy scripts to use versioneer
* release: update docs version and fix tarball version
* build: no need to install versioneer on travis, etc.
Any proxy type that is supported by `requests` can be used.
For example, SOCKS proxies are support by `requests`, and can be used:
- `--http-proxy "socks5://[user:password@]host:port"`
- `--https-proxy "socks5://[user:password@]host:port"`
to set streamlink to use socks proxies for http and https.
This should resolve the issues some people are having with HTTPS
websites when using older versions of Python 2.7. As best I can tell the
any version before 2.7.10 is affected.