You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

151 KiB


Release highlights:

  • Deprecated: stream-type specific stream transport options in favor of generic options (#3893)

    • use --stream-segment-attempts instead of --{dash,hds,hls}-segment-attempts
    • use --stream-segment-threads instead of --{dash,hds,hls}-segment-threads
    • use --stream-segment-timeout instead of --{dash,hds,hls}-segment-timeout
    • use --stream-timeout instead of --{dash,hds,hls,rtmp,http-stream}-timeout

    See the documentation's deprecations page for more information.

  • Deprecated: --hls-segment-stream-data option and made it always stream segment data (#3894)

  • Updated: Python version of the Windows installer from 3.8 to 3.9 and dropped support for Windows 7 due to Python incompatibilities (#3918)
    See the documentation's install page for alternative installation methods on Windows 7.

  • Updated: FFmpeg in the Windows Installer from 4.2 (Zeranoe) to 4.4 (streamlink/FFmpeg-Builds) (#3981)

  • Added: {author}, {category}/{game}, {title} and {url} variables to --output, --record and --record-and-play (#3962)

  • Added: {time}/{time:custom-format} variable to --title, --output, --record and --record-and-play (#3993)

  • Added: --fs-safe-rules for changing character replacement rules in file outputs (#3962)

  • Added: plugin metadata to --json stream data output (#3987)

  • Fixed: named pipes not being cleaned up by FFMPEGMuxer (#3992)

  • Fixed: KeyError on invalid variables in --player-args (#3988)

  • Fixed: tests failing in certain cases when run in different order (#3920)

  • Fixed: initial HLS playlist parsing issues (#3903, #3910)

  • Fixed: various plugin issues. Please see the changelog down below.

  • Dependencies: added lxml>=4.6.3 (#3952)

  • Dependencies: switched back to requests>=2.26.0 on Windows (#3930)

  • Removed plugins: animeworld (#3951), gardenersworld (#3966), huomao (#3932)

Grabien <> (1):
      plugins.nbcnews: fix stream URL extraction (#3909)

Ian Cameron <> (2):
      plugins.huomao: plugin removal
      plugins.pluto: fix URL match for 2 letter language codes

Leonardo Nascimento <> (1):
      plugins.booyah: add support for source stream (#3969)

back-to <> (9):
      stream.hls: handle exception StreamError in Thread-HLSStreamWorker - iter_segments
      plugins.raiplay: use 'res.encoding = "UTF-8"'
      plugins.rtve: update for /play/ URLs
      plugins.zattoo: fix HLS stream, added more debug details
      tests.mixins.stream_hls: increase TIMEOUT_AWAIT_WRITE timeout, use --durations 10 for pytest
      setup: update requests version >=2.26.0 and
      plugins.abematv: skip invalid ad segments
      plugins.animelab: removed
      cli.argparser: Fixed ValueError for streamlink --help

bastimeyer <> (39):
      session: deprecate options for spec. stream types
      stream.hls: remove hls-segment-stream-data option
      docs: reorganize stream transport options
      stream.hls: except more errors raised by requests
      tests.hls: fix playlist reload time tests
      stream.hls: close stream on initial parsing error
      installer: upgrade to python 3.9
      tests: fix Plugin.bind(session) calls
      plugin: fix cookie related error messages
      docs: update python-requests version comment
      plugins.twitch: replace remaining kraken API calls
      plugins.twitch: refactor TwitchAPI class methods
      plugins.euronews: add API fallback requests
      plugins.sportschau: fix audio streams
      vendor: add lxml dependency
      plugins.deutschewelle: rewrite plugin
      plugins.gardenersworld: remove plugin
      cli: player title and file output metadata vars
      plugin.api.validate: switch to lxml.etree
      plugin.api.validate: add args+kwargs to transform
      plugin.api.validate: add parse_{json,html,xml,qsd}
      plugin: metadata attributes
      plugins: fix utils imports
      plugins.welt: rewrite and simplify using XPath
      plugins.deutschewelle: validate.parse_html
      plugins.reuters: rewrite and fix using XPath
      plugins.euronews: rewrite and fix using XPath
      installer: move assets config to local JSON file
      installer: switch to streamlink/FFmpeg-Builds
      cli.main: f-strings
      cli.main: annotate types of global vars
      cli.main: check args.json instead of console.json
      cli.console: refactor ConsoleOutput
      cli: include plugin metadata in --json output
      cli.output: fix unknown vars in --player-args / -a
      stream.ffmpegmux: always clean up named pipes
      cli.utils.formatter: rewrite Formatter
      cli.utils.formatter: implement format_spec
      cli: add {time:format} var to --output / --title

gustaf <> (1):
      plugins.svtplay: fix plugin video id

steven7851 <> (1):
      plugins.app17: fix API_URL and URL match (#3989)

Release highlights:

  • Implemented: new plugin URL matching API (#3814, #3821)
    Third-party plugins which use the old API will still be resolved, but those plugins will have to upgrade in the future. See the documentation's deprecations page for more information.
  • Implemented: HLS media initialization section (fragmented MPEG-4 streams) (#3828)
  • Upgraded: requests to >=2.26.0,<3 and set it to ==2.25.1 on Windows (#3864, #3880)
  • Fixed: YouTube channel URLs, premiering live streams, added API fallback (#3847, #3873, #3809)
  • Removed plugins: canalplus (#3841), dommune (#3818), liveedu (#3845), periscope (#3813), powerapp (#3816), rtlxl (#3842), streamingvideoprovider (#3843), teleclubzoom (#3817), tigerdile (#3819)
Hakkin Lain <> (1):
      stream.hls: set fallback playlist reload time to 6 seconds (#3887)

back-to <> (16): added API fallback
      plugins.rtvs: fixed livestream
      plugins.nos: Fixed Livestream and VOD
      plugins.vlive: fixed livestream (#3820)
      plugins.Tigerdile: removed
      plugins.Dommune: removed
      plugins.PowerApp: removed
      plugins.TeleclubZoom: removed (#3817)
      plugins.cdnbg: Fix regex and referer issues
      plugins.rtlxl: removed
      plugins.CanalPlus: removed
      plugins.liveedu: removed
      plugins.Streamingvideoprovider: removed
      plugin.api: update useragents detect Livestreams with 'isLive'
      plugins.nimotv: use 'mStreamPkg'

bastimeyer <> (30): translate embed_live URLs
      plugins.periscope: remove plugin
      plugins.mediaklikk: rewrite plugin
      stream.hls: add type hints and refactor
      stream.hls: implement media initialization section
      plugin: new matchers API
      plugins: update protocol plugins
      plugins: update basic plugins
      plugins: update plugins with URL capture groups
      plugins: update plugins with spec. can_handle_url
      plugins: update plugins with multiple URL matchers
      plugins: update plugins with URL translations
      session: resolve deprecated plugins
      plugins.zdf_mediathek: refactor plugin, drop HDS
      docs: add deprecations page
      plugins.tv8: remove API, find HLS via simple regex find videoId on channel pages
      chore: replace issue templates with forms
      chore: fix issue forms checklist
      tests: remove mock from dev dependencies
      vendor: set requests to >=2.26.0,<3
      tests: temporarily skip broken tests on win32
      tests: fix unnecessary hostname lookup in cli_main
      docs: fix headline anchors on deprecations page
      vendor: downgrade requests to 2.25.1 on Windows
      tests: refactor TestMixinStreamHLS
      streams.segmented: refactor worker and writer
      streams.segmented: refactor reader
      streams.hls: refactor worker
      streams.hls: fix playlist_reload_time

gustaf <> (1):
      plugins.tv4play: fix plugin URL regex

vinyl-umbrella <> (1):
      plugins.openrectv: update HLS URLs (#3850)

Release highlights:

  • Changed: default config file path on macOS and Windows (#3766)

    • macOS: ${HOME}/Library/Application Support/streamlink/config
    • Windows: %APPDATA%\streamlink\config
  • Changed: default custom plugins directory path on macOS and Linux/BSD (#3766)

    • macOS: ${HOME}/Library/Application Support/streamlink/plugins
    • Linux/BSD: ${XDG_DATA_HOME:-${HOME}/.local/share}/streamlink/plugins
  • Deprecated: old config file paths and old custom plugins directory paths (#3784)

    • Windows:
      • %APPDATA%\streamlink\streamlinkrc
    • macOS:
      • ${XDG_CONFIG_HOME:-${HOME}/.config}/streamlink/config
      • ${XDG_CONFIG_HOME:-${HOME}/.config}/streamlink/plugins
      • ${HOME}/.streamlinkrc
    • Linux/BSD:
      • ${XDG_CONFIG_HOME:-${HOME}/.config}/streamlink/plugins
      • ${HOME}/.streamlinkrc

    Support for these old paths will be dropped in the future.
    See the CLI documentation for all the details regarding these changes.

  • Implemented: --logfile CLI argument (#3753)

  • Fixed: Youtube 404 errors by dropping private API calls (plugin rewrite) (#3797)

  • Fixed: Twitch clips (#3762, #3775) and hosted channel redirection (#3776)

  • Fixed: Olympicchannel plugin (#3760)

  • Fixed: various Zattoo plugin issues (#3773, #3780)

  • Fixed: HTTP responses with truncated body and mismatching content-length header (#3768)

  • Fixed: scheme-less URLs with address:port for --http-proxy, etc. (#3765)

  • Fixed: rendered man page path on Sphinx 4 (#3750)

  • Added plugins: (#3584), (#3585), (#3743)

  • Removed plugins: (#3781), (#3798)

Billy2011 <> (2):
      plugins.mediaklikk: add (#3757)
      plugins.olympicchannel: fix / rewrite

DESK-coder <> (1):
      plugins.zattoo: changes to hello_v3 and new token.js (#3773)

FaceHiddenInsideTheDark <> (1):
      plugins.funimationnow: fix subtitle language (#3752)

Ian Cameron <> (2):
      plugins.bfmtv: fix/find Brightcove video data in JS (#3662)
      plugins.booyah: new plugin

back-to <> (7):
      plugins.tf1: fixed api_url
      plugins.onetv: cleanup
      plugins.mediavitrina: new plugin
      plugin.api: update useragents, remove EDGE
      plugins.ine: removed
      plugins.zattoo: cleanup, fix other domains
      plugins.playtv: removed - SEC_ERROR_EXPIRED_CERTIFICATE (#3798)

bastimeyer <> (27):
      plugins.rtpplay: fix obfuscated HLS URL parsing
      utils.url: add encoding options to update_qsd
      docs: set man_make_section_directory to false
      tests.hls: test headers on segment+key requests
      cli.argparser: fix description text
      utils.url: fix update_scheme with implicit schemes
      plugins.twitch: add access token to clips
      tests: refactor TestCLIMainLogging
      cli: implement --logfile
      plugins.twitch: fix clips URL regex
      plugin.api.http_session: refactor HTTPSession
      plugin.api.http_session: enforce_content_length
      stream.hls: replace custom PKCS#7 unpad function
      plugin.api.validate: add nested lookups to get()
      plugin.api.validate: implement union_get()
      plugins.twitch: query hosted channels on GQL
      plugins.twitch: tidy up API calls
      cli: refactor CONFIG_FILES and PLUGIN_DIRS
      cli: add XDG_DATA_HOME as first plugins dir
      cli: rename config file on Windows to "config"
      cli: use correct config and plugins dir on macOS
      cli: deprecate old config files and plugin dirs
      cli: fix order of config file deprecation log msgs clean up a bit update URL regex, translate URLs replace private API calls unescape consent form values

shirokumacode <> (1):
      plugins.mildom: new plugin for (#3584)

Patch release:

  • Fixed: youtube 404 errors (#3732), consent dialog (#3672) and added short URLs (#3677)
  • Fixed: picarto plugin (#3661)
  • Fixed: euronews plugin (#3698)
  • Fixed: bbciplayer plugin (#3725)
  • Fixed: missing removed-plugins-file in build (#3653)
  • Changed: HLS streams to use rounded bandwidth names (#3721)
  • Removed: plugin for / (#3686), (#3673)
Alexis Murzeau <> (1):
      build: include .removed file in build

Ian Cameron <> (3):
      plugins.tvplayer: plugin removal
      plugins.picarto: rewrite/fix (#3661)
      plugins.bbciplayer: fix/update state_re regex

Kagamia <> (1):
      plugins.nicolive: fix proxy arguments (#3710)

Yavuz Kömeçoğlu <> (1): add html5=1 parameter (#3732)

back-to <> (3): fix consent dialog (#3672)
      plugins.mitele: use '_{bitrate}' and remove duplicates
      stream.hls_playlist: round BANDWIDTH and parse as int (#3721)

bastimeyer <> (7): add short video URLs
      plugins.hitbox: remove plugin
      chore: remove square brackets from issue titles
      plugins.euronews: rewrite and fix live streams
      utils.named_pipe: rewrite named pipes
      docs: fix winget package link
      ci.github: add python 3.10-dev to test runners

bururaku <> (1):
      plugins.abematv: Fixed download problem again. (#3658)

Patch release:

  • Fixed: test failure due to missing removed plugins file in sdist tarball (#3644).
Sebastian Meyer <> (1):
      build: don't build sdist/bdist quietly (#3645)

bastimeyer <> (1):
      build: include removed plugins file in sdist

Release highlights:

  • Added: --interface, -4 / --ipv4 and -6 / --ipv6 (#3483)
  • Added: --niconico-purge-credentials (#3434)
  • Added: --twitcasting-password (#3505)
  • Added: Linux AppImages (#3611)
  • Added: pre-built man page to bdist wheels and sdist tarballs (#3459, #3510)
  • Added: plugin for and (#3484), (#3508)
  • Fixed: --player-http / --player-continuous-http HTTP server being bound to all interfaces (#3450)
  • Fixed: handling of languages without alpha_2 code when using pycountry (#3518)
  • Fixed: memory leak when calling streamlink.streams() (#3486)
  • Fixed: race condition in HLS related tests (#3454)
  • Fixed: --player-fifo issues on Windows with VLC or MPV (#3619)
  • Fixed: various plugins issues (see detailed changelog down below)
  • Removed: Windows portable (RosadinTV) (#3535)
  • Removed: plugin for (#3457), (#3485), btsports (#3636)
  • Dependencies: set websocket-client to >=0.58.0 (#3634)
Alexis Murzeau <> (1):
      docs: update Debian stable install instructions

Billy2011 <> (1):
      plugins.stadium: adaptions for new player api (#3506)

Ian Cameron <> (7):
      plugins.mico: plugin removal
      plugins.dogus: remove channel and update test
      plugins.turkuvaz: add channels and URL tests
      plugins.tvtoya: fix playlist regex
      plugins.nimotv: new plugin
      plugins.tvtoya: minor fixes
      plugins.mjunoon: rewrite/fix

Jefffrey <> (1):
      plugins.Nicolive: login before getting wss api url

Miguel Valadas <> (1):
      plugins.rtpplay: add schema and fix HLS URL (#3627)

Vladimir Stavrinov <> (1):
      plugins.oneplusone: fix iframe url pattern (#3503)

alnj <> (1):
      plugins.twitcasting: add support for private/password-protected streams (#3505)

back-to <> (11):
      cli.main: use *_args, **_kwargs for create_http_server (#3450)
      plugins.nicolive: added --niconico-purge-credentials
      docs: remove outdated gst-player example
      plugins.facebook: Add 'Log into Facebook' error message.
      plugins.afreeca: use 'gs_cdn_pc_web' and 'common'
      stream.dash: Fix static playlist - refresh_wait - Pipe copy aborted - Read timeout
      plugin.api: update useragents (#3637)
      plugins.zattoo: use 'dash' as default stream require websocket-client>=0.58.0
      plugins.nicolive: fixed websocket-client
      plugins.btsports: remove plugin

bastimeyer <> (36):
      tools: force LF line endings via .gitattributes
      docs: add minimalist code of conduct
      stream.hls: open reader from class attribute
      tests.hls: await all filtered-HLS writer calls
      plugins.twitch: fix access_token on invalid inputs
      ci: add netlify docs preview deploy config
      docs: add thank-you section to index page
      build: include man page in wheels
      docs: bump furo docs req to 2020.12.28.beta23
      http_session: remove HTTPAdapterWithReadTimeout
      docs: improve install-via-pip section
      docs: fix description of `--ffmpeg-fout`
      build: include man page in sdist tarballs
      utils/l10n: fix langs without alpha_2 in pycountry fix and refactor plugin
      utils: remove custom memoize decorator
      docs: remove CLI tutorial from man page
      session: implement --interface, --ipv4 and --ipv6
      docs: remove RosadinTV Windows portable version
      ci.github: increase git fetch depth of tests
      tests: fix test code coverage
      ci.codecov: 100% tests target, add patch status
      docs: clean up package maintainers list
      plugins.vtvgo: ignore duplicate params
      ci.codecov: disable GH status check annotations
      chore: reorder and improve issue templates
      plugins: fix invalid plugin class names
      tests.plugins: parametrize can_handle_url tests
      plugins: fix and update removed plugins list
      docs: add appimages section to install docs
      ci.netlify: build docs when changes
      docs: add pip to packages lists
      cli.output: fix named pipe player input on Windows
      cli: debug-log arguments set by the user
      cli: refactor log_current_versions and add tests

bururaku <> (1):
      plugins.abematv: Update (#3617)

fenopa <> (1):
      installer: upgrade to python 3.8.7

losuler <> (1):
      docs: update URL to Fedora repo

onde2rock <> (1):
      plugins.bfmtv : fix rmcstory and rmcdecouverte (#3471)

vinyl-umbrella <> (1):
      plugins.openrectv: update/fix (#3583)

Release highlights:

  • BREAKING: dropped support for Python 2 and Python 3.5 (#3232, #3269)
  • BREAKING: updated the Python version of the Windows installer to 3.8 (#3330)
    Users of Windows 7 will need their system to be fully upgraded.
  • BREAKING: removed all deprecated CLI arguments (#3277, #3349)
    • --http-cookies, --http-headers, --http-query-params
    • --no-version-check
    • --rtmpdump-proxy
    • --cmdline, -c
    • --errorlog, -e
    • --errorlog-path
    • --btv-username, --btv-password
    • --crunchyroll-locale
    • --pixiv-username, --pixiv-password
    • --twitch-oauth-authenticate, --twitch-oauth-token, --twitch-cookie
    • --ustvnow-station-code
    • --youtube-api-key
  • BREAKING: replaced various subtitle muxing CLI arguments with --mux-subtitles (#3324)
    • --funimationnow-mux-subtitles
    • --pluzz-mux-subtitles
    • --rtve-mux-subtitles
    • --svtplay-mux-subtitles
    • --vimeo-mux-subtitles
  • BREAKING: sideloading faulty plugins will now raise an Exception (#3366)
  • BREAKING: changed trace logging timestamp format (#3273)
  • BREAKING/API: removed deprecated Session compat options (#3349)
  • BREAKING/API: removed deprecated custom Logger and LogRecord (#3273)
  • BREAKING/API: removed deprecated parameters from HLSStream.parse_variant_playlist (#3347)
  • BREAKING/API: removed plugin.api.support_plugin (#3398)
  • Added: new plugin for (#3363)
  • Added: support for HLS master playlist URLs to --stream-url / --json (#3300)
  • Added: --ffmpeg-fout for changing the output format of muxed streams (#2892)
  • Added: --ffmpeg-copyts and --ffmpeg-start-at-zero (#3404, #3413)
  • Added: --streann-url for iframe referencing (#3356)
  • Added: --niconico-timeshift-offset (#3425)
  • Fixed: duplicate stream names in DASH inputs (#3410)
  • Fixed: youtube live playback (#3268, #3372, #3428)
  • Fixed: --twitch-disable-reruns (#3375)
  • Fixed: various plugins issues (see detailed changelog down below)
  • Changed: {filename} variable in --player-args / -a to {playerinput} and made both optional (#3313)
  • Changed: and fixed streamlinkrc config file in the Windows installer (#3350)
  • Changed: MPV's automated --title argument to --force-media-title (#3405)
  • Changed: HTML documentation theme to furo (#3335)
  • Removed: plugins for skai, kingkong, ellobo, trt/trtspor, tamago, streamme, metube, cubetv, willax
Billy2011 <> (2): fix live playback (#3268)
      stream.ffmpegmux: add --ffmpeg-copyts option (#3404)

Forrest Alvarez <> (1):
      Update author email to shared email

Hunter Peavey <> (1):
      docs: update wtwitch in thirdparty list (#3286)

Ian Cameron <> (9):
      plugins.skai: plugin removal
      plugins.kingkong: plugin removal
      plugins.cnews: fix video ID search, add schema
      plugins.ellobo: plugin removal
      plugins.nbcnews: fix video ID search, add schemas
      plugins.bfmtv: fix ID & embed re, use Dailymotion
      plugins.filmon: mitigate for non-JSON data response
      plugins.schoolism: fix and test for colon in title (#3421)
      plugins.dogan: fix/update

Jon Bergli Heier <> (1):
      plugins.nrk: fix/rewrite plugin (#3318)

Mark Ignacio <> (1):
      plugins.NicoLive: add --niconico-timeshift-offset option (#3425)

Martin Buck <> (1):
      plugins.zdf_mediathek: also support 3sat mediathek

Sean Greenslade <> (1):
      plugins.picarto: explicitly detect and fail on private streams (#3278)

Sebastian Meyer <> (2):
      chore: drop support for Python 3.5 (#3269)
      ci.github: run lint step before test step (#3294)

Seonjae Hyeon <> (1):
      plugins.vlive: fix URL regex and plugin (#3315)

azizLIGHT <> (1):
      docs: fix mpv property-list link in --title description (#3342)

back-to <> (26):
      plugins.facebook: remove User-Agent (#3272)
      plugins.trt/trtspor: remove plugins
      plugin.api.useragents: update User-Agent
      plugins: remove FIREFOX User-Agent imports
      plugins.abweb: fixed login issues
      plugins.huya: use FLV stream with multiple mirrors
      plugin.api.useragents: update User-Agent's
      plugins.tamago: removed dead plugin
      plugins.streamme: removed dead plugin
      plugins.metube: removed dead plugin
      plugins.cubetv: removed dead plugin
      cli.utils: remove file, use streamlink.utils import
      plugins.willax: removed plugin, they use streann
      plugins.streann: allow different source URLs
      plugins.pixiv: set headers for stream data, fixed login issue
      plugins.pluto: new plugin for (#3363)
      plugins.twitch: fix ads
      plugins.twitch: fix --twitch-disable-reruns quickfix for "/live" URL
      plugins.pluto: ignore invalid channels
      stream.dash: allow '_alt' streams with the same resolution (#3410)
      plugins.afreeca: update '_get_channel_info' with 'bno', plugin cleanup (#3408)
      plugins.plugin: use the same cls.logger 'plugins'
      stream.ffmpegmux: disable -start_at_zero for -copyts as default (#3413)
      plugin.api.useragents: update User-Agent Fix 'ytInitialData' for channel pages

bastimeyer <> (71):
      chore: drop support for Python 2
      chore: remove is_py{2,3} compat checks
      chore: remove compat imports of builtins
      chore: remove streamlink.utils.encoding
      chore: remove simple aliased compat imports
      chore: remove compat imports of removed py2 deps
      chore: remove compat import of html module
      chore: remove compat imports of urllib and queue
      chore: remove remaining inspect compat import
      chore: remove unneeded __future__ imports
      chore: remove file encoding header comments
      chore: remove compat imports from tests
      logger: replace self.logger calls in plugins
      logger: format all log messages directly
      logger: remove deprecated compat logger
      logger: refactor StringFormatter
      chore: remove old LIVESTREAMER_VERSION constant
      chore: remove deprecated CLI arguments
      flake8: add import-order linting config
      plugins.twitch: player_type access token parameter
      ci.github: install latest version of pynsist
      chore: implicit py3 super() calls
      chore: remove u-strings
      ci.github: set ubuntu to 20.04 and python to 3.9
      cli: optional player-args input variable
      cli: add support for stream manifest URL output
      installer: upgrade to Python 3.9.0
      installer: switch back to latest pynsist release
      installer: downgrade to python 3.8
      docs: add note about supported Windows versions
      docs: add autosectionlabel Sphinx extension
      docs: fix most http links
      plugin: implement global plugin arguments
      plugins: turn mux-subtitles into a global argument
      plugins.twitch: remove player_type parameter
      plugins.twitch: move access_token request to GQL
      chore: remove HLS variant playlist compat params
      chore: remove old rtmpdump/subprocess CLI args
      installer: fix + rewrite streamlinkrc config file
      stream.ffmpegmux: only close FFMPEGMuxer once
      chore: add dev version checkbox to issue templates
      chore: inherit from object implicitly
      chore: set literals and dict comprehensions
      chore: use yield from where possible
      chore: replace old errors classes with OSError
      chore: drop python six compat stuff
      chore: fix deprecated logging.Logger.warn calls
      docs: fix CLI page
      docs: split CLI args in HTML output into rows
      session: replace usage of deprecated imp module
      docs: add warning to plugin sideloading section
      refactor: test_session, move testplugin files
      plugin.api: remove support_plugin
      tests: fix test_cmdline{,_title}
      chore: add issue template config with more links
      docs: switch theme to furo, bump sphinx to >=3.0
      docs: remove custom sphinx_rtd_theme_violet
      tools: update editorconfig for docs theme files
      docs: add index page to toctree
      docs: add custom stylesheet and customize sidebar
      docs: change/fix fonts, brand colors and spacings
      docs: add version warning message
      docs: fix applications and donate pages
      cli: move plugin args into their own args group
      docs: fix scrollbar issues in both sidebars
      docs: add favicons and PWA manifest
      cli.output: replace MPV player title parameter
      stream.hls: merge hls_filtered with hls
      cli: move --stream-url to different args group
      cache: catch OverflowError in set()
      docs: fix link in readme

beardypig <> (6):
      tests: fix log tests when run on a system with a non-UTC timezone
      chore: use new py3 yield from syntax
      chore: sort imports, fix a dependency cycle and use absolute imports
      tests: validate all plugins' global arguments
      plugins.mitele: update plugin to support new website APIs (#3338)
      stream.ffmpegmux: Add support for specifying output file format and audio sync option (#2892)

enilfodne <> (1):
      plugins.cdnbg: simplify and fix iframes without schema

smallbomb <> (1):
      plugins: fix url (#3394)

Release highlights:

  • Added: new plugins for, and
  • Added: new embedded ad detection for Twitch streams (#3213)
  • Fixed: a few broken plugins and minor plugin issues (see changelog down below)
  • Fixed: arguments in config files were read too late before taking effect (#3255)
  • Fixed: Arte plugin returning too many streams and overriding primary ones (#3228)
  • Fixed: Twitch plugin error when stream metadata API response is empty (#3223)
  • Fixed: Zattoo login issues (#3202)
  • Changed: plugin request and submission guidelines (#3244)
  • Changed: refactored and cleaned up Twitch plugin (#3227)
  • Removed: platform=_ stream token request parameter from Twitch plugin (again) (#3220)
  • Removed: plugins for itvplayer, aljazeeraen, srgssr and dingittv
Alexis Murzeau <> (1):
      docs: use recommonmark as an extension

Billy2011 <> (3):
      plugins.zattoo: use hello api v2 for (#3202)
      plugins.dlive: rewrite plugin (#3239)
      utils.l10n: use DEFAULT_LANGUAGE_CODE if locale lookup fails (#3055)

Forrest <> (1):
      plugins.itvplayer: remove due to DRM (#2934)

Ian Cameron <> (8):
      plugins.mico: new plugin for (#3188)
      plugins.cdnbg: update url_re, plugin test, plugin matrix (#3205)
      plugins.tv999: new plugin for (#3199)
      plugins.aljazeeraen: plugin removal (#3207)
      plugins.srgssr: plugin removal
      plugins.tv3cat: update URL match, test and plugin matrix
      chore: update issue templates (#3250)
      docs: add plugin addition/removal infos (#3249)

Sebastian Meyer <> (2):
      Improve coverage reports on codecov (#3200)
      plugins.twitch: remove platform access token param (#3220)

back-to <> (4):
      plugin.api.useragents: update User-Agent
      plugins.livestream: remove AkamaiHDStream, use only secure HLSStream (#3243)
      plugins.dingittv: removed, website is unmaintained
      plugins: mark some plugins as broken (#3262)

bastimeyer <> (21):
      ci.coverage: increase threshold of tests status
      tests: add stream_hls mixin for testing HLSStreams
      stream.hls_filtered: refactor tests, use mixin
      plugins.twitch: refactor tests, use mixin
      stream.hls: refactor reload time tests, use mixin
      stream.hls: separate variant playlist tests
      stream.hls: separate default and encrypted tests
      stream.hls_playlist: implement EXT-X-DATERANGE tag
      plugins.twitch: filter ads by EXT-X-DATERANGE tag
      plugins.twitch: fix metadata API response handling
      ci: add python 3.9 test runners
      tests: fix early writer close in stream_hls mixin
      stream.segmented: gracefully shut down thread pool
      plugins.twitch: remove video-type distinction
      plugins.twitch: refactor Twitch API related code
      plugins.twitch: refactor _get_hls_streams
      plugins.twitch: remove stream weights and clean up
      docs: fix working tree check in deploy script
      docs: update plugin guidelines
      docs: add developing menu with basic setup steps
      docs: add generic pull request template

beardypig <> (3):
      plugins.cbsnews: support for live streams from CBS News (#3251)
      plugins.artetv: only pick the first variant of the stream (#3228)
      cli: make config based args available during early setup (#3255)

Release highlights:

  • Fixed: lots of broken plugins and minor plugin issues (see changelog down below)
  • Fixed: embedded ads on Twitch with an ads workaround, removing pre-roll and mid-stream ads (#3173)
  • Fixed: read timeout error when filtering out HLS segments (#3187)
  • Fixed: twitch plugin logging incorrect low-latency status when pre-roll ads exist (#3169)
  • Fixed: crunchyroll auth logic (#3150)
  • Added: the --hls-playlist-reload-time parameter for customizing HLS playlist reload times (#2925)
  • Added: python -m streamlink invocation style support (#3174)
  • Added: plugin for (#3097)
  • Changed: yupptv plugin and replaced email+pass with id+token authentication (#3116)
  • Removed: plugins for vaughnlive, pandatv, douyutv, cybergame, europaplus and startv
Ian Cameron <> (11):
      docs: update turkuvaz plugin matrix entry (#3114)
      docs: Add for reuters plugin entry in plugin matrix (#3124)
      Fix formatting for reuters plugin entry
      plugins.huomao: fix/rewrite (#3126)
      plugins.drdk: fix livestreams (#3115)
      plugins.tvplayer: update regex and tests for /uk/ URLs
      plugins.tv360: fix HLS URL regex and plugin (#3185)
      plugins: fix unescaped literal dots in url_re entries (#3192)
      plugins.svtplay: rewrite/fix (#3155)
      plugins.yupptv: fix/minor rewrite (#3116)
      plugins.ine: fix unescaped literal dots in js_re (#3196)

Il Harper <> (2):
      Add OBS-Streamlink into thirdparty.rst
      Apply suggestions from code review

PleasantMachine9 <> (1):
      support `python -m` cli invocation

Sebastian Meyer <> (4): fix regex module anchor (#3131)
      plugins.sportschau: rewrite and fix plugin (#3142)
      plugins.raiplay: rewrite and fix plugin (#3147)
      plugins.twitch: refactor worker, parser and tests (#3169)

Tr4sK <> (1):
      plugins.mrtmk: new plugin for (#3097)

Yahya <> (1):
      docs: update reference to minimum VLC version

back-to <> (9):
      plugins.vaughnlive: removed
      plugins.pandatv: removed
      plugins.douyutv: removed
      plugins.tv8: fix plugin with new api
      plugins.cybergame: removed
      plugins.europaplus: remove plugin
      plugins.vk: remove '\' from data
      plugins.nicolive: fix quality
      plugins.wasd: fixed plugin (#3139)

bastimeyer <> (8):
      stream.hls: customizable playlist reload times
      plugins.twitch: platform=_ in access_token request
      docs: fix NixOS link
      docs: replace easy_install macOS entry with pip
      docs: add comment regarding pip/pip3 differences
      stream.hls_filtered: implement FilteredHLSStream
      plugins.twitch: use FilteredHLS{Writer,Reader}
      stream.hls_filtered: fix tests

beardypig <> (1):
      plugins.crunchyroll: update auth logic

derFogel <> (1):
      plugins.zattoo: fix quantum tv streaming (#3108)

hymer-up <> (2):
      plugins.startv: remove plugin (#3163)
      plugins.dogus: add startv URL (#3161)

A minor release with fixes for pycountry==20.7.3 (#3057) and a few plugin additions and removals.

And of course the usual plugin fixes and upgrades, which you can see in the git shortlog down below. Thank you to everyone involved!

Support for Python2 has not been dropped yet (contrary to the comment in the last changelog), but will be in the near future.

Alexis Murzeau <> (1):
      docs: update debian install instructions

Billy2011 <> (8):
      plugins.nbcsports: fix embed_url_re (#2980)
      plugins.olympicchannel: fix/rewrite (#2981)
      plugins.foxtr: fix playervars_re (#3013)
      plugins.huya: fix _hls_re (#3007)
      plugins.ceskatelevize: add new api for some links (#2991)
      plugins.beattv: remove plugin (#3053)
      plugins.ard_live: fix / rewrite (#3052)
      plugins.ard_mediathek: fix / update (#3049)

Code <> (1):
      Streamlink was added to Windows Package Manager

Ian Cameron <> (6):
      plugins.tvplayer: Add missing platform key in the GET for stream_url (#2989)
      plugins.btv: remove login and fix API URL (#3019)
      plugins.n13tv: new plugin - replaces plugins.reshet (#3034)
      plugins.reshet: plugin removal (#3000)
      plugins.tvnbg: plugin removal (#3056)
      plugins.adultswim: fix/rewrite (#2952)

Sebastian Meyer <> (3):
      ci: no test/documentation jobs on scheduled run (#3012)
      cli.main: fix msecs format in logging output (#3025)
      utils.l10n: fix pycountry language lookup (#3057)

Vladimir Stavrinov <> (1):
      plugins.nbcnews: new plugin for (#2927)

back-to <> (11):
      plugins.showroom: use normal HLSStreams
      docs: remove unimportant note / file
      plugins.viasat: remove domain
      actions: fixed incorrect versions and use names for codecov (#2932)
      plugins.filmon: use /tv/ url and raise PluginError for invalid channels
      flake8: E741 ambiguous variable name Fix isLive and signatureCipher (#3026)
      plugins.facebook: use meta og:video:url and added basic title support (#3024)
      plugins.picarto: fixed vod url detection
      ci: fix pycountry issue temporarily with a fixed version
      plugin.api.useragents: update User-Agent

bastimeyer <> (3):
      docs/install: fix Windows package manager
      plugins.mixer: remove plugin
      ci: run scheduled tests, ignore coverage report

beardypig <> (1):
      plugins.cdnbg: update plugin to support new sites, and remove old sites (#2912)

lanroth <> (1):
      plugins.radionet: fix plugin so it works with new page format (#3018)

resloved <> (1):
      fixed typo

steven7851 <> (1):
      plugins.app17: update API (#2969)

tnira <> (1):
      Plugin.nicolive:resolve API format change (#3061)

unavailable <> (1):
      plugins.twitch: fix call_subdomain (#2958)

wiresp33d <> (2):
      plugins.bigo: use API for video URL (#3016)
      plugins.nicolive: resolve new api format (#3039)

No code changes. See the full 1.4.0 changelog here.

beardypig <> (1):
      build: include correct signing key: 0xE3DB9E282E390FA0

This will be the last release with support for Python 2, as it has finally reached its EOL at the beginning of this year.

Streamlink 1.4.0 comes with lots of plugin fixes/improvements, as well as some new features and plugins, and also a few plugin removals.

Notable changes:

  • New: low latency streaming on Twitch via --twitch-low-latency (#2513)
  • New: output HLS segment data immediately via --hls-segment-stream-data (#2513)
  • New: always show download progress via --force-progress (#2438)
  • New: URL template support for --hls-segment-key-uri (#2821)
  • Removed: Twitch auth logic, --twitch-oauth-token, --twitch-oauth-authenticate, --twitch-cookie (#2846)
  • Fixed: Youtube plugin (#2858)
  • Fixed: Crunchyroll plugin (#2788)
  • Fixed: Pixiv plugin (#2840)
  • Fixed: TVplayer plugin (#2802)
  • Fixed: Zattoo plugin (#2887)
  • Changed: set Firefox User-Agent HTTP header by default (#2795)
  • Changed: upgraded bundled FFmpeg to 4.2.2 in Windows installer (#2916)
Adam Baxter <> (1):
      stream.hls_playlist: Add extra logging for invalid #EXTM3U line (#2479)

Alexis Murzeau <> (1):
      docs: fix duplicate object description of streamlink in api docs

Colas Broux <> (2): Fix for new Youtube VOD API (#2858)
      Updating README Applying changes from 1402fb0 to the README Closes #2880

Finn <> (1):
      plugins.invintus: Add support for Invintus Media live streams and VOD (#2845)

Ian Cameron <> (3):
      Fix tvplayer plugin and tests (#2802)
      plugins.piczel: Added HLS, Removed RTMP (#2815)
      plugins.reuters: fix (#2811)

Mohamed El Morabity <> (1):
      plugins.tf1: use new API to retrieve DASH streams (#2759)

Riolu <> (1):
      plugins.radiko: Add support for (#2826)

Uinden <> (1):
      plugins.wasd: new plugin for WASD.TV (#2641)

YYY <> (1):
      plugins.nicolive: new plugin for Niconico Live (#2651)

Yavuz Kömeçoğlu <> (1):
      plugins.galatasaraytv: Add support for GALATASARAY SK TV (#2760)

Zhenyu Hu <> (1):
      plugins.kugou:  Add Kugou Fanxing live plugin (#2794)

back-to <> (17):
      plugin.api: use Firefox as default User-Agent instead of python-requests
      plugins.filmon: retry for 50X errors
      cli: New command --force-progress (#2438)
      travis-ci: don't run doctr on pull requests
      plugins.bilibili: ignore unavailable URLs (#2818)
      plugins.mlgtv: remove plugin they use DRM for Livestreams (#2829)
      plugins.twitch: Fixed clips (#2843)
      plugins.showroom: Fix HLS missing segments
      plugins.kanal7: Removed Plugin they use static URLs
      plugins.rotana: new plugin for (#2838)
      plugins.pixiv: removed not working login process via username (#2840)
      plugins.abema: support for Abema overseas version
      plugins.younow: remove plugin
      plugin.api.useragents: update User-Agent
      plugins.zattoo: fix app token and new recording URL
      plugins.zeenews: new plugin for
      AUTHORS: removed unused script and removed outdated list (#2889)

bastimeyer <> (58):
      plugins.twitch: fix rerun validation schema
      flake8: E303
      flake8: E111
      flake8: E117
      flake8: E121
      flake8: E122
      flake8: E126, E127, E128
      flake8: E203, E226, E231, E241, E261
      flake8: E265
      flake8: E302, E305
      flake8: E402
      flake8: E712
      flake8: W291, W292, W293, W391
      flake8: F401, F403
      flake8: F405
      flake8: F811
      flake8: F841
      flake8: W504
      flake8: E741
      flake8: E501
      flake8: F601
      flake8: E722
      flake8: F821
      flake8: F812
      flake8: add flake8 to TravisCI
      cleanup: remove unnecessary unittest.main() calls
      cleanup: remove unnecessary python shebangs
      PEP263: use consistent utf-8 coding header comment
      tools: add .editorconfig
      stream.hls: add hls-segment-stream-data parameter
      plugins.twitch: low latency
      plugins.twitch: disable LL when filtering ads
      plugins.twitch: print info msg if stream is not LL fix vods and live streams
      plugins.twitch: remove cookie auth
      plugins.twitch: remove oauth token login
      docs: fix multiple options on the same line
      ci.github: implement main workflow
      ci.github: add release config and rewrite scripts
      ci.github: add scheduled nightly builds
      ci.github: deploy documentation
      ci: show extra test summary info
      ci: remove old CI configs
      ci.github: fix codecov uploads
      cleanup: change build badge and link in
      cleanup: remove TravisCI from deploy scripts
      ci: remove macOS test runners
      codecov: wait before notifying
      docs: rewrite windows nightly builds section
      docs: rewrite pip/source install section
      docs: fix and rewrite index page
      docs: reformat donation page
      ci.github: fix continue on error
      installer: rewrite / clean up makeinstaller script
      installer: download ffmpeg+rtmpdump assets
      installer: delete locally included binary files
      plugins.twitch: rewrite disable ads logic
      Release 1.4.0

beardypig <> (10):
      update release signing key
      update docs deployment key
      plugins.tv360: updated URL and HLS stream extraction method
      util: fix some encoding issue when setting unicode/utf8 titles in py2
      cli.output: make sure the player arguments are properly encoded
      utils: update_qsd to leave blank values unchanged (#2869)
      plugins.eurocom: remove eurocom plugin
      plugins.tv1channel: remove tv1channel plugin
      actions: no need to use a secret for the PyPI username
      add python 2.7 deprecation warning

danieljpiazza <> (1):
      Update Crunchyroll access token. Fixes streamlink/streamlink issue #2785.

malvinas2 <> (3):
      plugins.latina: new plugin for (#2793)
      plugins.albavision: Added support for ATV and ATVMas (#2801)
      plugins.rtve: Added support for clan tve, children's channel of RTVE (#2875)

steven7851 <> (1):
      plugins.app17: fix for new layout (#2833)

tarkah <> (1):
      stream.hls: add templating for hls-segment-key-uri option (#2821)

A small patch release that addresses the removal of MPV's legacy option syntax, also with fixes of several plugins, the addition of the --twitch-disable-reruns parameter and dropped support for Python 3.4.

Hunter Peavey <> (4):
      Add wtwitch to list of thirdparty programs
      Try adding an image
      Move image position
      Make requested changes

Vladimir Stavrinov <> (1):
      plugins.nhkworld: the site migrates from xml to json stream data

back-to <> (6):
      docs/tests: remove python 3.4, use 3.8 and nightly for travis-ci
      plugins.bilibili: fix Livestreams with status 1 (set Referer) Remove itag 303
      plugins.ustream: Added support for
      plugins.bbciplayer: Fixed login params
      plugins.bbciplayer: remove test_extract_nonce

bastimeyer <> (5):
      plugins.twitch: use python logging module
      plugins.twitch: fix rerun detection
      cli.output: fix mpv player parameter format
      docs: fix MPV parameters on common issues page

skulblakka <> (1):
      Allow to disable twitch reruns (#2722)

A new release with plugin updates and fixes, including (see #2680), which had to be delayed due to back and forth API changes.

The workarounds mentioned in #2680 don't have to be applied anymore, but authenticating via --twitch-oauth-token has been disabled, regardless of the origin of the OAuth token (via --twitch-oauth-authenticate or the Twitch website). In order to not introduce breaking changes, both parameters have been kept in this release and the user name will still be logged when using an OAuth token, but receiving item drops or accessing restricted streams is not possible anymore.

Plugins for the following sites have also been added:

  • albavision
Alexis Murzeau <> (1):
      plugins.pixiv: fix doc typo thats -> that's

Mohamed El Morabity <> (1):
      plugins.idf1: HTTPS support

Mohamed El Morabity <> (1):
      plugins.playtv: Fix for new stream data API (#2388)

Ozan Karaali <> (1):
      plugins.foxtr: Extended support

Ozan Karaali <> (1):
      plugins.cinergroup: #2390 fix (#2629)

Troogle <> (1):
      plugins.bilibili: fix resolution issue

Werner Robitza <> (1):
      remove direct installation instructions, link to docs

back-to <> (6):
      setup.cfg: added flake8 settings
      plugins.vk: use html_unescape for HLS streams
      plugins.willax: new plugin for
      plugins.zattoo: _url_re update for some new urls
      plugin.api.useragents: update CHROME and FIREFOX User-Agent
      stream.hls: Fix UnicodeDecodeError for log msg and name_prefix for stream_name

bastimeyer <> (3):
      ci/travis: install pynsist 2.4
      plugins.twitch: fix API issue - 410 gone error
      docs.cli: fix and reword the tutorial section

beardypig <> (10):
      plugins.bbciplayer: update API URL to use https
      plugins.nownews: added support for the HK news site
      plugins.tv8: update regex for the stream url
      plugins.bbciplayer: fix issue with nonce extraction
      plugins.bbciplayer: extract master brand/channel id from the state json
      plugins.itvplayer: Use flash streams for ITV1/ITV4
      plugins.viutv: support for the live stream
      plugins.albavision: support for some albavision live streams fix issue where the incorrect playlist could be used
      stream.streamprocess: check that a process is usable before using it

derrod <> (1):
      plugins.vlive: Add support for V LIVE live streams

printempw <> (1):
      plugins.twitcasting: new plugin for

ssaqua <> (1):
      plugins.linelive: update to support VOD/archived streams

Here are the changes for this month's release

  • Multiple plugin fixes
  • Fixed single hyphen params at the beginning of --player-args (#2333)
  • --http-proxy will set the default value of --https-proxy to same as --http-proxy. (#2536)
  • DASH Streams will handle headers correctly (#2545)
  • the timestamp for FFMPEGMuxer streams will start with zero (#2559)
Davi Guimarães <> (1):
      plugins.cubetv: base url changes (#2430)

Forrest <> (1):
      Add a sponsor button (#2478)

Jiting <> (1): bug fix for YouTube live streams check

Juan Ramirez <> (2):
      Invalid use of console.logger in CLI
      Too many arguments for logging format string

Mohamed El Morabity <> (9):
      plugins.vimeo: new plugin for Vimeo streams
      plugins.vimeo: add subtitle support for vimeo plugin
      plugins.vimeo: fix alphabetical order in plugin matrix
      Use class parameter instead of class name in class method
      [plugins.bfmtv] Fix player regex
      [plugins.idf1] Update for new website layout
      plugins.gulli: enable HTTPS support
      plugins.gulli: fix live stream fetching
      plugins.tvrplus: fix for new website layout

Mohamed El Morabity <> (1):
      plugins.clubbingtv: new plugin for Clubbing TV website (#2569)

Viktor Kálmán <> (1):
      plugins.mediaklikk: update broken plugin (#2401)

Vladimir Stavrinov <> (2):
      plugins.live_russia_tv: adjust to site changes (#2523)
      plugins.oneplusone: fix site changes (#2425)

YuuichiMizuoka <> (1):
      add login posibility for pixiv using sessionid and devicetoken

aqxa1 <> (1):
      Handle keyboard interrupts in can_handle_url checks (#2318)

back-to <> (12):
      cli.argparser: Fix single hyphen params at the beginning of --player-args
      plugins.reuters: New Plugin
      plugins: Removed rte and tvcatchup
      utils.__init__: remove cElementTree, it's just an alias for ElementTree
      plugins.teamliquid: New domain, fix stream_weight
      plugins.vimeo: Fixed DASH Livestreams
      plugin.api.useragents: update CHROME and FIREFOX User-Agent
      ffmpegmux: use -start_at_zero with -copyts fixed reason msg, updated _url_re
      plugins.TV1Channel: Fixed new livestream iframe
      plugins.npo: removed due to DRM
      plugins.lrt: fixed livestreams

bastimeyer <> (1):
      plugins.welt: fix plugin

beardypig <> (13):
      plugins.bbciplayer: small change to where the VPID is extracted from (#2376)
      plugins.goodgame: fix for debug logging error
      plugins.cdnbg: fix for bstv url
      plugins.ustvnow: updated to handle new auth, and site design
      plugin.schoolism: bug fix for videos with subtitles (#2524)
      stream.dash: use the stream args in the writer and worker
      session: default https-proxy to the same as http-proxy, can be overridden
      plugins.beattv: partial fix for the streams
      tests: test the behaviour of setting http-proxy and https-proxy
      plugins.twitch: support for different clips URL
      plugins.wwenetwork: support for new site
      plugins.ustreamtv: add support for proxying WebSocket connections
      plugins.wwenetwork: update for small page/api change

skulblakka <> (1):
      plugins.DLive: New Plugin for (#2419)

ssaqua <> (1):
      plugins.linelive: new plugin for LINE LIVE ( (#2574)

This is just a small patch release which fixes a build/deploy issue with the new special wheels for Windows on PyPI. (#2392)

Please see the full changelog of the 1.1.0 release!

Forrest <> (1):
      build: remove cygwin from wheels for Windows (#2393)

These are the highlights of Streamlink's first minor release after the 1.0.0 milestone:

  • several plugin fixes, improvements and new plugin implementations
  • addition of the --twitch-disable-ads parameter for filtering out advertisement segments from streams (#2372)
  • DASH stream improvements (#2285)
  • documentation enhancements (#2292, #2293)
  • addition of the {url} player title variable (#2232)
  • default player title config for PotPlayer (#2224)
  • new streamlinkw executable on Windows (wheels + installer) (#2326)
  • Github release assets simplification (#2360)
Brian Callahan <> (1):
      Add OpenBSD to the installation docs

Peter Rowlands (변기호) <> (2):
      streams.dash: Support manifest strings in addition to manifest urls (#2285)
      plugins.facebook: Support manifest strings and tahoe player urls (#2286)

Roman Kornev <> (2):
      cli.main: Add {url} argument to window --title (#2232)
      cli.output: Add window title for PotPlayer (#2224)

Sebastian Meyer <> (1):
      Build additional "streamlinkw" launcher on Windows (#2326)

Steve Oswald <> (1):
      plugins.zattoo: Added support for (#2274)

Vladimir Stavrinov <> (2):
      plugins.ntv: new Plugin for (#2351)
      plugins.live_russia_tv: fix iframe format differences (#2375)

back-to <> (13):
      plugins.atresplayer: Fixed HLSStream
      plugins.streamme: Fixed source quality, added title and author
      plugins.atresplayer: update for new api schema
      plugins.mitele: plugin update
      plugins.ustreamtv: handle stream names better, allow '_alt' streams (#2267)
      plugins.rtve: Fixed content_id search (#2300)
      plugins.streamme: Fixed null error for 'origin'
      tests: detect unsupported versions for itertags
      plugins.pluzz: Fixed Video ID and logging update
      plugins.pluzz: Fixed regex, they use quotes now.
      plugins.cdnbg: New domain
      plugins.tf1: Fixed python2.7 ascii error
      plugins.okru: Fixed Plugin (#2374)
      plugins.rtpplay: fix _m3u8_re and plugin cleanup

bastimeyer <> (13):
      docs/install: git+makepkg instead of AUR helper
      docs/install: rewrite source code and pip section
      docs/install: shell code blocks, remove prompts
      docs/install: simplify pip user/system table
      docs/install: rewrite virtual env section
      docs/install: move Windows and macOS to the top
      Add force_verify=true to Twitch OAuth URL
      plugins.twitch: platform=_ in access_token request
      TravisCI: don't publish wheels on Github releases
      stream.hls: refactor M3U8Parser
      stream.hls: refactor HLSStream{,Worker}
      plugins.twitch: implement disable-ads parameter
      Release 1.1.0

beardypig <> (2):
      plugins.dogus: support for YouTube embedded streams
      plugins.bbciplayer: do not try to authenticate when not required

lon <> (1):
      plugins.crunchyroll: Allow CR's multilingual URLs to be handled (#2304)

The celebratory release of Streamlink 1.0.0!

A lot of hard work has gone into getting Streamlink to where it is. Not only is Streamlink used across multiple applications and platforms, but companies as well.

Streamlink started from the inaugural fork of Livestreamer on September 17th, 2016.

Since then, We've hit multiple milestones:

Thanks to everyone who has contributed to Streamlink (and our backers)! Without you, we wouldn't be where we are today.

Without further ado, here are the changes in release 1.0.0:

Breaking changes:

Billy2011 <> (3):
      streamlink.plugins: replace global http session by self.session.http (#1925)
      stream.hls_playlist: fix some regex pattern & code optimization (#1918)
      plugins.filmon: fix NoPluginError, if channel is not an ID (#2005)

David Bell <> (1):
      Update (#2171)

Forrest <> (2):
      Remove bountysource from donation page, update flattr
      Add a note about specifying the full player path

Forrest <> (2):
      Feature/plugin request policy update (#1838)
      Add icon, modify installer, update docs (#2165)

Hubcapp <> (1):
      Window Titles = Stream Titles + Other Attributes (#1576)

Jani Ollikainen <> (1):
      Added support for

Lukas <> (1):
      plugins.zdf_mediathek: use ptmd-template api path (#2233)

Maxwell Cody <> (1):
      Add ability to specify custom key URI override for HLS streams (#2139)

Mohamed El Morabity <> (1):
      plugins.pluzz: fixes and support (#2119)

Nick Gal <> (1):
      Update steam plugin to work with urls

Petar Kukolj <> (5):
      plugins.cubetv: support for live streams on
      plugins.ok_live: Changed URL regex to support VoDs
      plugins.bilibili: Fix plugin after API change
      plugins.twitch: Add support for {title}, {author} and {category}
      plugins.skai: Fix plugin after site update

Roman <> (2):
      [FIX] Debug log arguments string
      [FIX] Debug log arguments cross-platform

Roman Kornev <> (1):
      [FIX] Message duplicate

Sebastian Meyer <> (1):
      Reword+reformat issue templates for consistency (#1966)

Stefan de Konink <> (1):
      Update the documentation with comments for playing YouTube Live Streams (#2156)

Søren Fuglede Jørgensen <> (1):
      Update and reactivate plugin for

Twilight0 <> (1):
      plugins.ssh101: Fixed plugin (#1916)

Vincent Rozenberg <> (1):

Vinny <> (1):
      docs: Added documentation for the Funimation plugin (#2091)

Visatouch Deeying <> (1):
      Fix crash on missing output.record when using player-continous-http

back-to <> (48):
      plugins.EuropaPlusTV: Fix for "No connection adapters were found"
      utils.args: Moved streamlink_cli utils.args into streamlink package
      tests.plugins: Test that each plugin has a test file (#1885)
      plugins.zattoo: session update and allow muxed hls / dash streams (#1902)
      plugins.tv4play: Fix for updated website
      debug: Added Session Language code as a debug message
      tests: run Python 3.7 tests on AppVeyor and Travis-CI (#1928)
      plugins.rtve: Fixed AttributeError 'ZTNRClient' has no 'session'
      plugins.twitch: Fixed AttributeError and Flake8
      plugins.filmon: Fixed AttributeError
      plugins.crunchyroll: Fixed AttributeError and Flake8
      tests.localization: use en_CA instead of en_US for test_equivalent
      plugins.younow: Fix for session error and plugin cleanup
      plugins.media_ccc_de: removed plugin
      plugins.pixiv: use API for the stream URL and cache login cookies Added support for {author} and {title} (#1944)
      docs-CLI: Fix for sort and prog issue
      plugins.ceskatelevize: Fix for https issues
      plugins.mjunoon: use a User-Agent
      api.useragents: use newer and more common User-Agent's
      script.makeinstaller: use a more recent version of Python and Pycryptodome
      Removed old Livestreamer deprecations and API references
      plugins.sportal: Removed old RTMP streams, use HLS
      plugins.twitch: new video URL regex
      Removed old or unwanted Streamlink Plugins
      tests: use unittest instead of pytest for itertags error (#1999)
      utils.parse_xml: allow a tab for ignore_ns
      plugins.afreeca: ignore new preloading urls
      plugins.filmon: use the same cdn for a playlist url (#2074)
      plugins.teleclubzoom: New plugin for
      plugins.oldlivestream: remove plugin, service not available anymore (#2081)
      travis: increase git clone depth
      stream.dash_manifest: Fixed bug for dynamic playlists when is None
      plugins.ustreamtv: use Desktop instead of Mobile streams (#2082) Added support for embedded livestream urls
      versioneer: always use 7 characters
      plugins.stv: New Plugin for
      plugins.sbscokr: New Plugin for
      plugins.vtvgo: New plugin for
      travis-ci: Fixed Python 3.8 error's
      plugins.cdnbg: Update for extra channels (#2186)
      api.useragents: update User-Agent list
      plugins.afreeca: use Referer for every connection (#2204)
      plugins.trt: Added support for https url, fixed logger error
      plugins.turkuvaz: Added support for channel 'apara'
      plugins.tvrby: Fixed broken plugin. replace "gaming" with "www" subdomain
      plugins.kanal7: Fixed iframe_re/stream_re, added new domain

bastimeyer <> (6):
      Fix bug report template
      Move/rename issue templates
      Update generic issue template
      plugins.euronews: fix live stream API URL scheme
      Fix installer by moving additional files
      feature: {best,worst}-unfiltered stream synonyms

beardypig <> (23):
      plugins.live_russia_tv: fix for live streams, and support for VOD
      plugin args: if args are suppressed, ignore them
      plugin.tvtoya: refactor, add tests, plugin docs, etc.
      stream.dash: fix bug where timeline_segments.t can be None
      stream.hls: only include audio/video streams in MuxedHLSStreams
      stream.hls: if the primary video stream has audio then include it
      plugins.facebook: support for videos in posts
      plugins.steam: api requests now require a session id
      test for rounding dash stream bitrate
      stream.dash: make the bitrate name for videos more human friendly
      plugins.schoolism: add support for assignment feedback videos
      plugins.senategov: support for hearing streams on
      plugins.stadium: support for live stream on
      plugins.funimationnow: workaround for #1899, see #2088
      cli: make the HH part of HH:MM:SS options optional
      plugins.bbciplayer: change in the mediator info in the page layout
      plugins.btsports: fix for change in login flow
      plugins.filmon: fix for live tv URLs that start with channel
      plugin.powerapp: support for "tvs" URLs
      setup: update requests to latest version and set urllib3 to match
      CI: make sure all the dev dependencies are up to date
      plugins.tf1: update to support new DASH streams
      plugins.tf1: re-add support for HLS with the new API

beardypig <> (7):
      Test coverage increase (#1646)
      Handle unicode log message in Python 2 (#1886)
      Update method for finding YouTube videoIds (#1888)
      stream.dash: prefer audio streams based on the user's locale (#1927)
      plugins.openrectv: update to match site changes and title support (#1968)
      URL builder utils (#1675)
      cli: disable progress output for -o when no tty is available (#2090)

fozzy <> (1):
      update regex to support new pattern

fozzy <> (1):
      plugins.egame: new plugin for (#2070)

jackyzy823 <> (2):
      Plugin Request: new plugin for (#1949)
      Improve terminal progress display for  wide characters (#2032)

mp107 <> (1):
      plugins.ltvlmslv: new Plugin for Latvian live TV channels on (#1986)

qkolj <> (5):
      plugins.tamago: support for live streams on (#2108)
      plugins.huomao: Fix plugin after website changes (#2134)
      plugins.metube: Add support for live streams and  VoDs on (#2112)
      plugins.tvibo: Add support for livestreams on (#2130)
      Fix recording added in #920 (#2152)

remek30 <> (1):
      plugins.toya: support for

skulblakka <> (1):
      [] Fix regarding changed URL (#1935)

yoya3312 <> (1): use new "hlsManifestUrl" for Livestreams (#2238)

Just a few small fixes in this release.

NyanKiyoshi <> (1):
      Fix 404 error on oauth authorize url

back-to <> (1):
      plugins.vk: _url_re update, allow embedded content, plugin cleanup (#1874)

beardypig <> (10):
      plugins.t3cat: update validation rule, refactor plugin a little bit
      plugins.atresplayer: update to support VOD streams
      stream.dash: support for SegmentList streams with ranged segments
      plugins.mjunoon: support for live and vod streams on
      release: fix release notes manual install url
      plugins.tv8cat: plugin removed - the live broadcast is no longer available
      plugins.nineanime: no longer supported
      release: set the date of the release for UTC time
      plugin: support stream weights returned by DASHStream.parse_manifest

Here are the changes to this months release!

Alexis Murzeau <> (3):
      sdist: include tests resources (#1785)
      tests: freezegun: use object instead of lambda (#1787)
      rtlxl: use raw string to fix escape sequences (#1786)

BZHDeveloper <> (1):
      plugins.cnews : separate CNEWS data from CanalPlus plugin. (#1782)

MasterofJOKers <> (1):
      plugins.sportschau: Fix "No schema supplied" error

Mohamed El Morabity <> (2):
      plugins.pluzz: support for DASH streams
      plugins.pluzz: fix HDS streams

Mohamed El Morabity <> (1):
      [plugins.rtbf] Fix radio streams + DASH support (#1771)

Sebastian Meyer <> (1):
      Move docs version selection to sidebar (#1802)

Twilight0 <> (2):
      Convert literal comprehensive dicts to dict contructs
      Add arguments to __init__ - super to work on Python 2.7.X (#1796)

back-to <> (9):
      plugins: marked or removed broken plugins
      plugins.earthcam: Fixed hls_url - No schema supplied.
      plugins.rte: allow https
      plugins.VinhLongTV: New plugin for livestreams of
      docs.thirdparty: Added LiveProxy
      plugins.tlctr: New Plugin for
      plugins.bigo: Fix for new channelnames and plugin cleanup (#1797)
      docs: removed some notes, updated some urls
      utils.times: hours_minutes_seconds update, twitch automate time offset

beardypig <> (15):
      help: reformat all the help text so that it is <80 chars
      plugins.bbciplayer: fix bug is DASH for VOD
      sdist and wheel release fixes (#1758) find video id in page, fall back to API (#1746)
      logging: rename logger for main back to 'cli'
      plugins.vaughnlive: support for the HTML flv player
      plugins.yupptv: support for yupptv with login support
      plugins.nos: update for new page layout for live and VOD
      plugins.lrt: add support for Lithuanian National Television
      plugins.delfi: support for web portal
      plugins.vrtbe: update to new page layout/API
      plugins.itvplayer: update to new HTML5 API
      plugins.atresplayer: support new layout/API
      stream.dash: use the ID and mime-type to identify a representation
      plugins.mitele: sometimes ogn is null, html5 pdata endpoint works better

beardypig <> (5):
      plugins.crunchyroll: refactoring and updated API calls (#1820)
      Suppress/fix deprecated warnings for Python 3 (#1833)
      API for plugins to request input from the user (#1827)
      Steam Broadcast Plugin (#1717)
      USTV Now (#1840)

fozzy <> (1):
      fix bug caused by indentation and add support for url pattern like ''

Massive release this month!

Here are the changes:

BZHDeveloper <> (1):
      plugins.bfmtv : Update regular expression (#1703)

Billy <> (1):
      plugins.ok_live: fix <hlsurl> extraction

Billy2011 <> (2):
      stream.dash: fix stuttering streams & maybe high CPU load (#1718)
      stream.akamaihd: fix some log.debug... issues (#1729)

Hsiao-Ting Yu <> (1):
      Add plugin for (#1666)

LoneFox78 <> (1):
      plugins.tvcatchup: support for https URLs

back-to <> (3):
      plugins.chaturbate: only open a stream if the url is not empty
      stream.hls_playlist: removed int check from PROGRAM-ID (#1707)
      docs: PotPlayer Stdin Pipe

beardypig <> (30):
      plugins.bbciplayer: enable HD for some channels and speed up start-up
      plugins.goodgame: update for change in page layout
      tests: test to ensure each plugin listed in the plugin matrix exists
      plugins.goodgame: fix bug with streamkey extraction
      plugins.onetv: add support for and a few other related sites
      plugins.rtve: fix for m3u8 stream url formatting
      example: added an opencv face detection example
      plugins.europaplus: support for the europaplustv stream
      plugins.goltelevision: support for the live stream
      plugins.tvcatchup: add URL tests
      plugin.ustvnow: plugin to support
      hls: support for live streams when using --hls-duration
      release: update to release script
      win-installer: add missing isodate module
      plugins.onetv: fix issues with ctc channels and add DASH support
      plugins.dailymotion: fix error logging for stream errors
      logging: set the log level once the plugin config files have been loaded
      logging: fixed issue with logging from plugins using logging module
      plugins.onetv: fixed tests
      plugins.reshet: support for live and VOD streams
      dash: fix for manifest reload - should be more reliable
      tests: coverage on src instead of the modules
      plugins.crunchyroll: switch method of obtaining session id
      plugins.facebook: remove debugging code
      plugins: store cookies between sessions (#1724)
      plugins.facebook: sd_src|hd_src can contain non-dash streams
      plugins.funimationnow: login support and bug fixes (#1721)
      logging: do not log when using quiet options (--json, --quiet, etc)
      dash: fix --json for dash streams and allow custom headers (#1748)
      logging: when using the trace level, log the timestamp

beardypig <> (21):
      plugins.filmon: more robust channel_id extraction
      build: use versioneer to set the build number (#1413)
      plugins.btsports: add plugin bt sports
      Allow streamlink to exit faster when using Ctrl-C
      plugins.tf1: add lci url to the main tf1 domain (#1660)
      plugins.ine: support for updated site layout
      docs: add a note about socks4 and socks5 vs socks4a and socks5h (#1655)
      plugins.gardenersworld: updated page layout
      plugins.vidio: update to support new layout
      plugins.btsports: add missing plugin matrix entry and tests
      plugins.vidio: py2 vs. py3 unicode fix
      tests: test to ensure that all plugins are listed in the plugin matrix
      build: use _ instead of + in the Windows installer exe filename
      Plugin Arguments API (#1638)
      Change log as markdown refactor (#1667)
      Add the README file to the Python package (#1665)
      build: build and sign sdist in travis using an RSA sign-only key (#1701)
      logging: refactor to use python logging module (#1690)
      MPEG DASH Support (initial) (#1637)
      plugins.bbciplayer: add dash support
      plugins.facebook: support for DASH streams (#1727)

hoilc <> (1):
      fix checking live status

jshir <> (1):
      Fix bug 1730, vaughnlive port change

yhel <> (1):
      Feature/ sport (#1700)

Streamlink 0.12.1

Small release to fix a pip / Windows.exe generation bug!

Charlie Drage <> (1):
      0.12.0 Release

Streamlink 0.12.0

Thanks for all the contributors to this month's release!

New updates:

Alexis Murzeau <> (2):
      Avoid use of non-ASCII in dogan plugin
      Fix encoding errors in containerized environment (#1582)

BZHDeveloper <> (1):
      [TF1] Fix plugin (Fixes #1579) (#1606)

Charlie Drage <> (4):
      Add OpenCollective message to release script
      Manually update CHANGELOG.rst
      Remove livestream.patch
      Update release script

Igor Piddubnyi <> (3):
      Plugin implementation for
      Fix review coments
      Correctly exit on error

James Prance <> (1):
      Small tweaks to fix ITV player. Fixes #1622 (#1623)

Mattias Amnefelt <> (1):
      stream.hls: change --hls-audio-select to take a list and wildcard (#1591)

Mohamed El Morabity <> (1):
      Add support for international Play TV website

Mohamed El Morabity <> (1):
      Add support for RTBF

Mohamed El Morabity <> (1):
      [dailymotion] Fix for new stream data API (#1543)

Sean Greenslade <> (1):
      Added retry-max option to limit the number of fetch retries.

back-to <> (9):
      [ffmpegmux] Fixed bug of an invisible terminal
      [TVRPlus] Fix for hls_re and use headers for HLSStream
      [streann] Fixed broken plugin
      Removed some dead plugins and some Deprecated options
      [youtube] Don't use MuxedStream for livestreams
      [pixiv] New plugin for (#1550)
      [TVP] New Plugin for Telewizja Polska S.A.
      [build] Fixed AppVeyor build pip10 error (#1605)
      [ABweb] New plugin for BIS Livestreams of french AB Groupe (#1595)

bastimeyer <> (2):
      plugins.welt: add plugin
      Add OS + editor file/directory names to .gitignore

beardypig <> (7):
      plugins.rtve: add an option to parse_xml to try to fix invalid character entities
      plugins.vaughnlive: Updated server map
      plugins.brittv: fixed script layout change
      build/deploy: do not deploy streamlink-latest, and remove old nightlies (#1624)
      plugins.brittv: fix issue with stream url extraction, from 7018fc8 (#1625)
      plugins.raiplay: add user-agent header to stream redirect request
      plugins.dogan: update for page layout change

fozzy <> (1):
      update plugin for to support new url pattern

steven7851 <> (1):
      [app17] Fix HLS URL (#1600)

Streamlink 0.11.0!

Here's what's new:

Alexis Murzeau <> (3):
      Remove Debian directory
      docs/install: use sudo for Ubuntu and Solus
      docs/install: add Debian instructions (#1455)

Anton Tykhyy <> (1):
      Add plugin

BZHDeveloper <> (1):
      [TF1] Fix plugin (#1457)

Bruno Ribeiro <> (1):
      added cd streamlink

Drew J. Sonne <> (1):
      [bbciplayer] Fix authentication failures (#1411)

Hannes Pétur Eggertsson <> (1):
      Ruv plugin updated. Fixes #643. (#1486)

Mohamed El Morabity <> (1):
      Add support for IDF1

back-to <> (10):
      [cli-debug] Show current installed versions with -l debug
      [hls] New option --hls-segment-ignore-names
      [cli-debug] Renamed method and small template update
      [afreeca] Plugin update. - Login for +19 streams   --afreeca-username   --afreeca-password - Removed 15 sec countdown - Added some error messages - Removed old Global AfreecaTV plugin - Added url tests
      [zattoo] Added support for zattoo recordings
      [tests] Fixed metaclass on python 3
      [periscope] Fix for variant HLS streams
      [facebook] mark as broken, they use dash now.
      Removed furstream: dead website and file was wrong formated UTF8-BOM
      [codecov] use pytest and upload all data

bastimeyer <> (2):
      docs: fix table layout on the install page
      [neulion] Remove plugin. See #1493

beardypig <> (2):
      plugins.kanal7: fix for new streaming iframe
      plugins.foxtr: update regex to match new site layout

leshka <> (1):
      [goodgame] Fixed url regexp for handling miscellaneous symbols in username.

schrobby <> (1):
      update from github comments

sqrt2 <> (1):
      [orf_tvthek] Work around broken HTTP connection persistence (#1420)

unnutricious <> (1):
      [bigo] update video regex to match current website (#1412)

Streamlink 0.10.0!

There's been a lot of activity since our November release.


Alexis Murzeau <> (3):
      docs: remove flattr-badge.png image
      Fix various typos in comments and documentation
      Implement PKCS#7 padding decoding with AES-128 HLS

BZHDeveloper <> (1):
      [canalplus] Update plugin according to website changes (#1378)

Mohamed El Morabity <> (1):
      [pluzz] Fix video ID regex for France 3 Régions streams

RosadinTV <> (1):
      Welcome 2018 (#1410)

Sean Greenslade <> (4):
      Reworked plugin to deal with website changes. (#1359)
      Tweaked tigerdile URL regex to allow missing trailing slash.
      Added tigerdile HLS support and proper API poll for offline streams.
      Added basic URL tests for tigerdile.

back-to <> (5):
      [zdf] apiToken update
      [camsoda] Fixed broken plugin
      [mixer] moved to file requires two commits, for a proper commit history
      [mixer] replaced with
      [docs] Removed MPlayer2 - Domain expired - Not maintained anymore

back-to <> (13):
      [BTV] Fixed login return message
      [qq] New Plugin for
      [mlgtv] Fixed broken Plugin streamlink/streamlink#1362
      [viasat] Added support for urls without a stream_id - removed dead domains from _url_re - added a error message for geo blocking - new regex for stream_id from image url - Removed old embed plugin - try to find an iframe if no stream_id was found. - added tests
      [streann] Added headers for post request
      [Dailymotion] Fixed livestream id from channelpage
      [neulion] renamed to
      [neulion] Updated the ufctv plugin to make it useable for other domains
      [youtube] added Audio m4a itag 256 and 258
      [hls] Don't try to skip a stream if the offset is 0, don't raise KeyError if the m3u8 file is empty this allows the file to reload.
      [zengatv] New Plugin for
      [mitele] Update for different api response - fallback if not hls_url was found, just the suffix. - added url tests
      [youtube] New params for get_video_info (#1423)

bastimeyer <> (2):
      nsis: restore old install dir, keep multiuser
      docs: rewrite Windows binaries install section

beardypig <> (12):
      plugins.vaughnlive: try to guess the stream ID from the channel name
      plugins.vaughnlive: updated rtmp server map
      Update server map
      stream.hls: add options to skip some time at the start/end of VOD streams
      stream.hls: add option to restart live stream, if possible
      stream.hls: remove the end offset and replace with duration
      hls: add absolute start offset and duration options to the HLStream API
      duratio bug
      Fix bug with hls start offset = 0
      EOL Python 3.3
      plugins.kanal7: update to stream player URL config
      plugins.huya: fix stream URL scheme prefix

fozzy <> (1):
      fix plugin for bilibili to adapt the new API

hicrop <> (1):
      PEP8 (#1427)

steven7851 <> (1):
      [Douyutv] fix API

xela722 <> (1):
      Add plugin for (#1353)

Streamlink 0.9.0 has been released!

This release is mostly code refactoring as well as module inclusion.


  • Updates to multiple plugins (electrecetv, tvplayer, Teve2, cnnturk, kanald)
  • SOCKS module being included in the Streamlink installer (PySocks)

Many thanks to those who've contributed in this release!

Alexis Murzeau <> (2):
      docs: add new line before codeblock to fix them
      Fix sphinx warning on Directive class

Charlie Drage <> (1):
      Update the release script

Emrah Er <> (1):
      plugins.canlitv: fix URLs (#1281)

Jake Robertson <> (3):
      exit with code 130 after a KeyboardInterrupt
      refactor error code determination
      unify sys.exit() calls

RosadinTV <> (5):
      Update plugin_matrix.rst

back-to <> (3):
      [zattoo] It won't work with None in Python 3.6, set always a default date instead of None.
      [liveme] API update (#1298)
      Ignore WinError 10053 / WSAECONNABORTED

beardypig <> (10):
      plugins.tvplayer: extract the channel id when logged in as a subscriber
      installer: include the socks proxy modules
      plugins.kanal7: update for page layout change and referrer check
      plugins.turkuvaz: fix some turkuvaz sites and add support for anews
      plugins.cinergroup: support for different showtv url
      plugins.dogus/startv: fix dogus sites
      plugins.dogan: fix for teve2 and cnnturk
      plugins.dogan: fix for kanald
      plugins.tvcatchup: HLS source extraction update
      setup: fix PySocks module dependency

ficofabrid <> (1):
      Add a single newline at the end of the file. (#1235)

fozzy <> (1):
      fix plugin

steven7851 <> (1):
      plugins.pandatv: fix APIv3 (#1286)

wlerin <> (1):
      plugin.showroom: update to new api (#1311)

0.8.1 of Streamlink!

97 commits have occurred since the last release, including a large majority of plugin changes.

Here's the outline of what's new:

  • Multiple plugin fixes (twitch, vaughlive, hitbox, etc.)
  • Donations! We've gone ahead and joined the Open Collective at
  • Multiple doc updates
  • Support for SOCKS proxies
  • Code refactoring

Many thanks to those who've contributed in this release!

Benedikt Gollatz <> (1):
      Fix player URL extraction in bloomberg plugin

Forrest <> (1):
      Update donation docs to note open collective (#1105)

Journey <> (2):
      Update Arconaitv to new url
      fix arconai test plugin

Pascal Romahn <> (1):
      The site always contains the text "does not exist". This should resolve issue

RosadinTV <> (2):
      Update Windows portable version documentation
      Fix documentation font-size

Sad Paladin <> (1):
      plugins.vk: add support for vod/livestreams

Xavier Damman <> (1):
      Added backers and sponsors on the README

back-to <> (5):
      [zattoo] New plugin for / / (#1039)
      [vidio] Fixed Plugin, new Regex for HLS URL
      [arconai] Fixed plugin for new website
      [npo] Update for new website layout, Added HTTPStream support
      [liveme] url regex update

bastimeyer <> (3):
      docs: add a third party applications list
      docs: add an official streamlink applications list

beardypig <> (17):
      plugins.brittv: support for live streams on
      plugins.hitbox: fix bug when checking for hosted channels
      plugins.tvplayer: small update to channel id extraction
      plugins.vaughnlive: support for the new vaughnlive website layout
      plugins.vaughnlive: work around for a ssl websocket issue
      plugins.vaughnlive: drop HLS stream support for vaughnlive
      plugins.twitch: enable certificate verification for twitch api
      Resolve InsecurePlatformWarnings for older Python2.7 versions
      cli: remove the deprecation warnings for some of the http options
      plugins.vaughnlive: set a user agent for the initial page request
      plugins.adultswim: fix for some live streams
      plugins: separated the built-in plugins in to separate plugins
      cli: support for SOCKS proxies
      plugins.bbciplayer: fix for page formatting changes and login
      plugins.cdnbg: support for updated layout and extra channels
      plugins: add priority ordering to plugins
      plugins.bbciplayer: support for older VOD streams

fozzy <> (10):
      remove unused code
      fix douyutv plugin by using new API
      update to support multiple rates by steven7851
      update HLS Stream name to 'live'
      update weights for streams
      fix stream name
      update stream name, middle and middle2 are of different quality
      Add support for
      add eol
      remove unused importing

jgilf <> (2):

sdfwv <> (1):
      [bongacams] replace RTMP with HLS Fixed streamlink/streamlink#1074

steven7851 <> (8):
      plugins.douyutv: update post data
      plugins.app17: fix HLS url
      plugins.app17: RTMPStream is no longer used
      plugins.app17: return RTMPStream back
      plugins.douyutv: use douyu open API
      plugins.app17: new layout
      plugins.app17: use https
      plugins.app17: fix wansu cdn url

supergonkas <> (1):
      Add support for RTP Play (#1051)

unnutricious <> (2):
      bigo: add support for hls streams
      bigo: improve plugin url regex

0.7.0 of Streamlink!

Since our May release, we've incorporated quite a few changes!

Outlined are the major features in this month's release:

  • Stream types will now be sorted accordingly in terms of quality
  • Plugin added
  • Numerous plugin & bug fixes
  • Updated HomeBrew package
  • Improved CLI documentation

Many thanks to those who've contributed in this release!

If you think that this application is helpful, please consider supporting the maintainers by donating.

Alex Shafer <> (1):
      Return sorted list of streams. (#731)

Alexandre Hitchcox <> (1):
      Allow live channel links without '/c/' prefix

Alexis Murzeau <> (1):
      docs: fix typo: specifiying, neverthless

CatKasha <> (1):
      Add MPC-HC x64 in streamlinkrc

Forrest <> (1):
      Add a few more examples to the player option (#896)

Jacob Malmberg <> (3):
      Here's the plugin I wrote for (w/ some help from
      Tests for teamliquid plugin
      Now with RE!

Mohamed El Morabity <> (9):
      Update for live API changes
      Add unit tests for Euronews plugin
      Drop pcyourfreetv plugin
      Add support for regional France 3 streams
      Add support for TV5Monde
      Add support for VOD/audio streams
      Add support for
      Ignore unreliable stream status returned by

Sebastian Meyer <> (1):
      Homebrew package (#929)

back-to <> (2):
      [dailymotion] fix for broken .f4m file that is a .m3u8 file (only livestreams)
      [arte] vod api url update & add new/missing languages

bastimeyer <> (2):
      docs: fix parameters being linked in code blocks
      Improve CLI documentation

beardypig <> (1):
      plugins.hitbox: add support for

beardypig <> (21):
      plugins.bbciplayer: update to reflect slight site layout change
      plugins.bbciplayer: add option to login to a bbc account
      http_server: handle socket closed exception for Python 2.7
      docs: update Sphinx config to fix the rendering of --
      docs: pin sphinx to 1.6.+ so that no future changes affect the docs
      plugins.tvplayer: fix bug with some channels not loading
      plugins.hitbox: fix new VOD urls, and add support for hosted streams
      plugins.tvplayer: fix bug with some channels when not authenticated
      setup: exclude requests version 2.16 through 2.17.1
      win32: fix missing modules when using windows installer
      bbciplayer: fix for api changes to iplayer
      tvplayer: updated to match change token parameter name
      plugins.looch: support for live and vod streams on
      plugins.webtv: decrypt the stream URL when applicable
      plugins.dogan: small api change for
      plugins.kanal7: fix for nested iframes
      win32: update the dependencies for the windows installer
      plugins.canlitv: simplified and fixed the m3u8 regex
      plugins.picarto: support for VOD
      plugins.ine: update to extract the relocated jwplayer config
      plugin.ufctv: support for free and premium vod/live streams

cirrus <> (3):
      Rename to
      Create plugin_matrix.rst

steven7851 <> (4):
      plugins.app17: fix hls url and support UID page
      little change
      plugins.app17: change ROOM_URL
      [douyu] temporary fix by revert to previously commit (#1015)

whizzoo <> (2):
      Restore support for RTL XL
      plugin.rtlxl: Remove spaces from line 14

yhel <> (1):
      Don't return an error when the stream is offline

yhel <> (1):
      Add capability of extracting current sport.francetv stream

Another release of Streamlink!

We've updated more plugins, improved documentation, and moved out nightly builds to Bintray (S3 was costing wayyyy too much).

Again, many thanks for those who've contributed!

Thank you very much!

Daniel Draper <> (1):
      Will exit with exit code 1 if stream cannot be opened. (#785)

Forrest Alvarez <> (3):
      Update readme so users are aware using Streamlink bypasses ads
      Forgot a )
      Make notice more agnostic

Mohamed El Morabity <> (18):
      Disable HDS streams which are no more available
      Add support for
      Add support for BFMTV
      Add support for Cam4
      Disable HDS streams for live videos
      Add support for Bloomberg
      Add support for Bloomberg Radio live stream
      Add support for
      Fix unit tests for canalplus plugin
      Add authentication token to http queries
      Add support
      Add support for HLS streams
      Update for new page layout
      Update for new new page layout
      Fix for new layout
      Pluzz platform replaced by new website
      Update documentation
      Always use token generator for streams from

Mohamed El Morabity <> (1):
      plugins.brightcove: support for HLS stream URLs with query strings + RTMPE stream URLs (#790)

RosadinTV <> (5):
      Update plugin_matrix.rst
      Add support for ElTreceTV (VOD & Live) (#816)

Sebastian Meyer <> (1):
      Improve contribution guidelines (#772)

back-to <> (9):
      [chaturbate] New API for HLS url
      [chaturbate] Fixed python 3.5 bug and added regex tests
      [VRTbe] new plugin for
      [oldlivestream] New regex for cdn subdomains and embeded streams
      [] New Plugin for embeded streams on
      [cyro] New plugin for embeded streams from
      [Facebook] Added unittests
      [ArteTV] new regex, removed rtmp and better result for available streams
      [NRK.NO] fixed regex for _api_baseurl_re

beardypig <> (15):
      travis: use pytest to run the tests for coverage
      Revert "stream.hds: ensure the live edge does not go past the latest fragment"
      plugins.azubutv: plugin removed
      plugins.ustreamtv: log timeout errors and adjust retries for polling
      appveyor: update config to fix builds on Python 3.3
      plugin.tvplayer: update to support new site layout
      plugin.tvplayer: update tests to match new plugin
      plugins.tvplayer: allow https stream URLs
      plugins.tvnbg: add support for live streams on
      plugins.apac: add ustream apac wrapper
      Deploy nightly builds to Bintray instead of S3
      plugins.streann: support for
      utils.crypto: fix openssl_decrypt for py27
      build: update the bintray release notes for nightlies
      plugins.streamable: support for videos on

beardypig <> (20):
      plugins.ustreamtv: support for the new API
      plugins.ustreamtv: add suppot for redirectLocked embedded streams
      plugins.livecodingtv: renamed to livedu, and updated for new site
      plugins.ustreamtv: continue to poll the ustream API when streaming
      plugins.ustreamtv: rename the plugin class back to UStreamTV
      docs: remove references to python-librtmp
      plugins.ustream: add some comments
      plugins.ustreamtv: support for password protected streams
      plugins.nbc: support vod from
      plugins.nbcsports: add support for via theplatform
      stream.hds: ensure the live edge does not go past the latest fragment
      Dailymotion feature video and backup stream fallback (#773)
      plugin.gardenersworld: support for VOD on
      plugins.twitch: support for pop-out player URLS and fixed clips
      tests: cmdline tests can fail if there are some config options set
      plugins.ustreamtv: fix moduleInfo retry loop
      cli: add --url option that can be used in config files to set a URL
      cli: clarification of the --url option
      cli: add wildcard to --stream-types option
      plugins.rtve: stop IOError bubbling up on 404 errors

wlerin <> (2):
      Send Referer and UserAgent headers
      Fix method decorator <> (1):
      New plugin for Facebook 360p streams

Streamlink 0.5.0!

Lot's of contributions since the last release. As always, lot's of updating to plugins!

One of the new features is the addition of Google Drive / Google Docs, you can now stream videos stored on Google Docs.

We've also gone ahead and removed dead plugins (sites which have gone down) as well as added pycrypto as a dependency for future plugins.

Again, many thanks for those who have contributed!

Thank you very much!

CallMeJuf <> (2):
      Aliez plugin now accepts any TLD (#696)
      New Periscope URL #748

Daniel Draper <> (2):
      More robust url regex for bigo plugin.
      More robust url regex for bigo plugin, added unittest

Josip Ponjavic <> (4):
      fix vaugnlive info_url
      Update archlinux installation instructions and maintainer info
      setup: choose pycrypto as a dependency using an environment variable
      Add info about pycrypto and pycountry variables to install doc

Mohamed El Morabity <> (1):
      plugins.pluzz: fix SWF player URL search to bring back HDS stream support (#679)

back-to <> (5):
      plugins.camsoda Added support for
      plugins.canlitv - Added new plugin canlitv
      Removed dead plugins (#702)
      plugins.camsoda - Added tests and small update for the plugin
      plugins.garena - Added new plugin garena

beardypig <> (11):
      plugins.bbciplayer: add support for BBC iPlayer live and VOD
      plugins.vaughnlive: updated player version and info URL
      plugins.vaughnlive: search for player version, etc in the swf file
      plugins.beam: add support for VOD and HLS streams for live (#694)
      plugins.bbciplayer: add support for HLS streams
      utils.l10n: use default locale if the system returns an invalid locale
      plugins.dailymotion: play the featured video from channel pages
      plugins.rtve: support for avi/mov VOD streams
      plugins.googledocs: plugin to support playing videos stored on google docs
      plugins.googledocs: updated the url regex and added a status check
      plugins.googledrive: add googledrive support

steven7851 <> (3):
      plugins.17media: Add support for HTTP stream
      plugins.17media: fix rtmp stream
      plugins.douyutv: support vod (#706)

0.4.0 of Streamlink!

114 commits since the last release and a lot has changed.

In general, we've added some localization as well as an assortment of new plugins.

We've also introduced a change for Streamlink to not check for new updates each time Streamlink starts. We found this feature annoying as well as delaying the initial start of the stream. This feature can be re-enabled by the command line.

The major features of this release are:

  • New plugins added
  • Ongoing support to current plugins via bug fixes
  • Ensure retries to HLS streams
  • Disable update check

Many thanks to all contributors who have contributed in this release!

406NotAcceptable <406NotAcceptable@somewhere> (2):
      plugins.afreecatv: API changes
      plugins.connectcast: API changes

BackTo <> (1):
      plugins.zdf_mediathek Added missing headers for http.get (#653)

Charlie Drage <> (7):
      Updating the release script.
      0.3.1 Release
      Update release script again to include sdist
      Fix underlining issue
      Fix the CHANGELOG.rst
      0.3.2 Release
      Update underscores title release script (#563)

Forrest <> (3):
      Update license and debian copyright (#515)
      Add a donation page (#578)
      Fix up the donate docs (#672)

Forrest Alvarez <> (1):
      Update license and debian copyright

John Smith <> (1):
      plugins.bongacams: a few small changes (#429)

Mohamed El Morabity <> (1):
      Check whether videos are DRM-protected Add log messages when no stream is available

Mohamed El Morabity <> (3):
      Add support for (#468)
      plugins.pluzz: add support for and (#536)
      Add subtitle support for pluzz plugins (#646)

Scott Buettner <> (1):
      Fix Crunchyroll string.format in Python 2.6 (#539)

Sven <> (1):
      Adding Huomao plugin with possibility for different stream qualities.

Sven Anderzén <> (1):
      Huomao plugin tests (#566)

back-to <> (2):
      [earthcam] Added HLS, Fixed live RTMP and changes some stuff
      plugins.ard_mediathek added support

beardypig <> (74):
      plugins.schoolism: add support for
      plugins.earthcam: added support for live and archive cam streams
      stream.hls_playlist: invalid durations in EXTINF lines are ignored
      plugins.livecoding: update to support the new domain:
      plugins.srgssr: fix playlist reload auth issue
      Play twitch VOD stream from the beginning even if is still being recorded
      cli: wait for process to exit, not exit with non-0 error code
      Fix bug in customized Windows install
      add a general locale setting which can be used by plugins
      stream.hls: support external audio tracks
      plugins.turkuvaz: add referer to the secure token request
      localization: search for language codes in part2t+part2b+part3
      localization: invalid language/country codes are always inequivalent
      stream.hls: only support external audio tracks if ffmpeg is available
      installer: include the missing pkg_resources package
      Rewritten StreamProcess class (#441)
      plugins.dogus: fix for ntv streams not being found
      plugins.dogus: add support for eurostartv live stream
      plugins.twitch: update public API calls to use v5 API (#484)
      plugins.filmon: support for new site layout (#508)
      Support for Ceskatelevize streams (#520)
      Ensure retries with HLS Streams (#522)
      utils.l10n: add Country/Language classes, use pycountry is the iso modules are not available
      plugins.crunchyroll: added option to set the session id to a specific value
      CI: add pycountry for testing
      plugins.openrectv: add source quality for openrectv
      utils.l10n: default to en_US when an invalid locale is set
      fix some python2.6 issues
      allow failure for python2.6 in travis and update minimum supported python version to 2.7, as well as adding an annoying deprecation warning
      stream.hls: pick a better default stream language
      stream.hls: Retry HTTP requests to get the key for HLS streams
      plugins.openrectv: fixed broken vod support
      appveyor: use the build.cmd script to install streamlink, so that the sdk can be used if required
      stream.hls: last chance fallback audio
      stream: make Stream responsible for generating the stream_url
      utils.l10n: fix bug in iso3166 country lookup
      tests: speed up the cmdline tests
      Remove deprecation warning for invalid escape sequences
      tests: merged the Localization tests back in to one module
      plugins.foxtr: adjusted regex for slight site layout change
      plugins.ard_mediathek: update to support site change
      stream.hds: warn about streams being protected by DRM
      plugins.tvrplus: add support for live streams
      plugins.tvrby: support for live streams of Belarus national TV
      plugins.ovvatv: add support for live streams
      cli.utils.http_server: avoid "Address already in use" with --player-external-http
      setup: choose pycountry as a dependency using an environment variable
      plugins.ovvatv: fix b64decoding bug
      plugin.mitele: use the default plugin cache
      plugins.seetv: add support for live streams
      cli.utils.http_server: ignore errors with socket.shutdown
      plugins.daisuki: add support for VOD streams from (#609)
      plugins.daisuki: fix for truncated subtitles
      cli: disable automatic version checking by default
      plugins.rtve: update rtve plugin to support VOD (#628)
      plugins.rtve: return all the available qualities
      plugins.funimationnow: support for US and UK funimation|now streams (#629)
      cli: --no-version-check always disables the version check
      plugins.tvplayer: support for authenticated streams
      docs: updated the docs for built-in stream parameters
      utils.l10n: fix for some locales without an official name in pycountry
      plugins.wwenetwork: support for WWE Network streams
      plugins.trt: make the url test case insensitive and fix py3 bug
      plugins.tvplayer: automatically set postcode when required
      plugins.ard_live: updated to new site layout
      plugins.vidio: fix for regex, if the url is the english version
      plugins.animelab: added support for VOD
      plugin.npo: rewrite of plugin to use the new API (#642)
      plugins.goodgame: support for http URLs
      docs.donate: drop name headers to subsection level
      stream.hls: format string name input for parse_variant_playlist
      plugins.wwenetwork: use the resolution and bitrate in the stream name
      docs: make the nightly installer link more obvious
      stream.hls: option to select a specific, non-standard audio channel

fozzy <> (4):
      update douyutv plugin, use new API
      update to support different quality
      fix typo and indent
      correct typo

fozzy <> (3):
      Add support for in issue #425 (#465)
      Fix issue #426 on plugins/ (#456)
      fix douyutv issue #637 (#666)

intact <> (1):
      Add Plugin

steven7851 <> (4):
      plugins.douyutv: fix room id regex (#514)
      plugins.pandatv: use Pandatv API v3 (#410)
      Add plugin for (#502)
      plugins.zhanqi: use new api (#498)

wlerin <> (1):
      plugins.showroom: add support for live streams (#633)

0.3.2 release of Streamlink!

A minor bug release of 0.3.2 to fix a few issues with stream providers.

Thanks to all whom have contributed to this (tiny) release!

Charlie Drage <> (3):
      Update release script again to include sdist
      Fix underlining issue
      Fix the CHANGELOG.rst

Sven <> (1):
      Adding Huomao plugin with possibility for different stream qualities.

beardypig <> (7):
      Ensure retries with HLS Streams (#522)
      utils.l10n: add Country/Language classes, use pycountry is the iso modules are not available
      plugins.crunchyroll: added option to set the session id to a specific value
      CI: add pycountry for testing
      plugins.openrectv: add source quality for openrectv
      utils.l10n: default to en_US when an invalid locale is set
      stream.hls: pick a better default stream language

intact <> (1):
      Add Plugin

0.3.1 release of Streamlink

A minor release, we update our source code upload to not include the ffmpeg.exe binary as well as update a multitude of plugins.

Thanks again for all the contributions as well as updates!

Charlie Drage <> (1):
      Updating the release script.

Forrest <> (1):
      Update license and debian copyright (#515)

Forrest Alvarez <> (1):
      Update license and debian copyright

John Smith <> (1):
      plugins.bongacams: a few small changes (#429)

Mohamed El Morabity <> (1):
      Check whether videos are DRM-protected Add log messages when no stream is available

Mohamed El Morabity <> (1):
      Add support for (#468)

beardypig <> (20):
      plugins.schoolism: add support for
      stream.hls_playlist: invalid durations in EXTINF lines are ignored
      plugins.livecoding: update to support the new domain:
      plugins.srgssr: fix playlist reload auth issue
      Play twitch VOD stream from the beginning even if is still being recorded
      cli: wait for process to exit, not exit with non-0 error code
      Fix bug in customized Windows install
      add a general locale setting which can be used by plugins
      stream.hls: support external audio tracks
      plugins.turkuvaz: add referer to the secure token request
      localization: search for language codes in part2t+part2b+part3
      localization: invalid language/country codes are always inequivalent
      stream.hls: only support external audio tracks if ffmpeg is available
      installer: include the missing pkg_resources package
      Rewritten StreamProcess class (#441)
      plugins.dogus: fix for ntv streams not being found
      plugins.dogus: add support for eurostartv live stream
      plugins.twitch: update public API calls to use v5 API (#484)
      plugins.filmon: support for new site layout (#508)
      Support for Ceskatelevize streams (#520)

fozzy <> (1):
      Add support for in issue #425 (#465)

steven7851 <> (1):
      plugins.douyutv: fix room id regex (#514)

Release 0.3.0 of Streamlink!

A lot of updates to each plugin (thank you @beardypig !), automated Windows releases, PEP8 formatting throughout Streamlink are some of the few updates to this release as we near a stable 1.0.0 release.

Main features are:

  • Lot's of maintaining / updates to plugins
  • General bug and doc fixes
  • Major improvements to development (github issue templates, automatically created releases)
Agustín Carrasco <> (1):
      Links on crunchy's rss no longer contain the show name in the url (#379)

Brainzyy <> (1):
      Add basic tests for plugin (#391)

Javier Cantero <> (2):
      plugins/twitch: use version v3 of the API
      plugins/twitch: use kraken URL

John Smith <> (3):
      Added support for streams (#329)
      streamlink_cli.main: close stream_fd on exit (#427)
      streamlink_cli.utils.progress: write new line at finish (#442)

Max Riegler <> (1):
      plugins.chaturbate: new regex (#457)

Michiel Sikma <> (1):
      Update PLAYER_VERSION, as old one does not return data. Add ability to use streams with /embed/video in the URL, from embedded players. (#311)

Mohamed El Morabity <> (6):
      Add support for (#343)
      Fix ArteTV plugin (#385)
      Add support for Canal+ TV group channels (#416)
      Update installation instructions for Fedora (#443)
      Add support for Play TV (#439)
      Use token generator for HLS streams, as for HDS ones (#466)

RosadinTV <> (1):
      --can-handle-url-no-redirect parameter added (#333)

Stefan Hanreich <> (1):
      added chocolatey to the documentation (#380)

bastimeyer <> (3):
      Automatically create Github releases
      Set changelog in automated github releases
      Add a github issue template

beardypig <> (55):
      plugins.tvcatchup: site layout changed, updated the stream regex to accommodate the change (#338)
      plugins.streamlive: have added some extra protection to their streams which currently prevents us from capturing them (#339)
      cli: add command line option to specific logging path for subprocess errorlog
      plugins.trtspor: added support for (#349)
      plugins.kanal7: fixed page change in kanal7 live stream (#348)
      plugins.picarto: Remove the unreliable rtmp stream (#353)
      packaging: removed the built in backports infavour of including them as dependencies when required (#355)
      Boost the test coverage a bit (#362)
      plugins: all regex string should be raw (#361)
      ci: build and test on Python 3.6 (+3.7 on travis, with allowed failure) (#360)
      packages.flashmedia: fix bug in AMFMessage (#359)
      tests: use mock from unittest when available otherwise fallback to mock (#358)
      stream.hls: try to retry stream segments (#357)
      tests: add codecov config file (#363)
      plugins.picarto: updated plugin to use tech_switch divs to find the stream parameters
      plugins.mitele: support for live streams on
      docs: add a note about python-devel needing to be installed in some cases
      docs/release: generate the changelog as rst instead of md
      plugins.adultswim: support https urls
      use iso 8601 date format for the changelog
      plugins.tf1: added plugin to support and
      plugins.raiplay: added plugin to support
      plugins.vaughnlive: updated player version and info URL (#383)
      plugins.tv8cat: added support for live stream (#390)
      Fix plugin (#389) fix a default scheme handling for urls
      Add support for some Bulgarian live streams (#392)
      rtmp: fix bug in redirect for rtmp streams
      plugins.sportal: added support for the live stream on
      plugins.bnt: update the user agent string for the http requests
      plugins.ssh101: update to support new site layout
      Optionally use FFMPEG to mux separate video and audio streams (#224)
      Support for 4K videos in YouTube (#225)
      windows-installer: add the version info to the installer file
      include CHANGELOG.rst instead of .md in the egg
      stream.hls: output duplicate streams for HLS when multiple streams of the same quality are available
      stream.ffmpegmux: fix support for avconv, avconv will be used if ffmpeg is not found
      Adultswin VOD support (#406)
      Move streamlink_cli.utils.named_pipe in to streamlink.utils
      plugins.rtve: update plugin to support new streaming method
      stream.hds: omit HDS streams that are protected by DRM
      Adultswin VOD fix for live show replays (#418)
      plugins.rtve: add support for legacy stream URLs
      installer: remove the streamlink bin dir from %PATH% before installing
      plugins.twitch: only check hosted channels when playing a live stream
      docs: tweaks to docs and docs build process
      Fix iframe detection for BTN/ streams (#437)
      fix some regex that give deprecation warnings in python 3.6
      plugins.adultswim: correct behaviour for archived streams
      plugins.nineanime: add scheme to grabber api url if not present
      session: add an option to disable Diffie Hellman key exchange
      plugins.srgssr: added support for srg ssr sites: srf, rts and rsi
      plugins.srgssr: fixed bug in api URL and fixed akamai urls with authparams
      cli: try to terminate the player process before killing it (if terminate takes too long)
      plugins.swisstxt: add support for the SRG SSR sites sports sections

fozzy <> (1):
      Add plugin for and (#334)

sqrt2 <> (1):
      Fix swf_url in plugin (#428)

stepshal <> (1):
      Remove trailing.

stepshal <> (2):
      Add blank line after class or function definition (#408)
      PEP8 (#414)

Release 0.2.0 of Streamlink!

We've done numerous changes to plugins as well as fixed quite a few which were originally failing. Among these changes are updated docs as well as general UI/UX cleaning with console output.

The main features are:

  • Additional plugins added
  • Plugin fixes
  • Cleaned up console output
  • Additional documentation (contribution, installation instructions)

Again, thank you everyone whom contributed to this release! :D

Beardypig <> (6):
      Turkish Streams Part III (#292)
      coverage: include streamlink_cli in the coverage, but exclude the vendored packages (#302)
      Windows command line parsing fix (#300)
      plugins.atresplayer: add support for live streams on (#303)
      Turkish Streams IV (#305)
      Support for local files (#304)

Charlie Drage <> (2):
      Spelling error in release script
      Fix issue with building installer

Fishscene <> (3):
      Updated homepage
      Fixed type in

Forrest <> (3):
      Modify the browser redirect (#191)
      Update client ID (#241)
      Update requests version after bug fix (#239)

Josip Ponjavic <> (1):
      Add NixOS install instructions

Simon Bernier St-Pierre <> (1):
      add contributing guidelines

bastimeyer <> (1):
      Add metadata to Windows installer

beardypig <> (25):
      plugins.nhkworld: update the plugin to use the new HLS streams
      plugins.picarto: updated the plugin to use the new javascript and support HLS streams
      add pycryptodome==3.4.3 to the dependencies
      plugins.nineanime: added a plugin to support
      plugins.nineanime: update the plugin matrix in the docs
      plugins.atv: add support for the live stream on
      include omxplayer in the list of players in the documentation
      update the player docs with findings from @Junior1544 and @stevekmcc
      plugins.bigo: support for
      docs: move pycryptodome to the list of automatically installed libraries in the docs
      plugins.dingittv: add support for
      plugins.crunchyroll: support ultra quality for subscribers
      update URL for docs to point to the page
      stream.hls: stream the HLS segments out to the player as they are downloaded, decrypting on the fly
      installer: install the required MS VC++ runtime files beside the python installation (see takluyver/pynsist/pull/87)
      plugins.bigo: FlashVars regex updated due to site change
      add some license notices for the bundled libraries support additional live urls
      add support for a few Turkish live streams
      plugins.foxtr: add support for turkish fox live streams
      plugins.kralmuzik: basic support for the HLS stream only
      stream.hds: added option to force akamai authentication plugins.startv: refactored in to a base class, to be used in other plugins that use the same hosting as StarTV plugins.kralmuzik: refactored to use StarTVBase plugins.ntv: added NTV support
      plugins.atv: add support for a2tv which is very similar to atv
      plugins.dogan: support for teve2, kanald, dreamtv, and ccnturk via the same plugin
      plugins.trt: added support for the live channels on

che <> (1):
      plugins.twitch: support for clips added

ioblank <> (1):
      Use ConsoleOutput for run-as-root warning

mmetak <> (3):
      Update install instruction (#257)
      Add links for windows portable version. (#299)
      Add package maintainers to docs. (#301)

thatlinuxfur <> (1):
      Added support. (#221)

A major update to Streamlink.

With this release, we include a Windows binary as well as numerous plugin changes and fixes.

The main features are:

  • Windows binary (and generation!) thanks to the fabulous work by @beardypig
  • Multiple plugin fixes
  • Remove unneeded run-as-root (no more warning you when you run as root, we trust that you know what you're doing)
  • Fix stream quality naming issue
Beardypig <> (13):
      fix stream quality naming issue with py2 vs. py3, fixing #89 (#96)
      updated connectcast plugin to support the new rtmp streams; fixes #93 (#95)
      Fix for erroneous escape coding the livecoding plugin. Fixes #106 (#121) fix for 400 error, correctly set the platform parameter (#123)
      Added a method to automatically determine the encoding when parsing JSON, if no encoding is provided. (#122)
      when retry-streams and twitch-disable-hosting arguments are used the stream is retried until a non-hosted stream is found (#125)
      plugins.goodgame: Update for API change (#130)
      plugins.adultswim: added a new plugin (#139)
      plugins.goodgame: restored DDOS protection cookie support (#136)
      plugins.younow: update API url (#135)
      plugins.euronew: update to support the new site (#141)
      plugins.webtv: added a new plugin to support (#144)
      plugins.connectcast: fix regex issue with python 3 (#152)

Brainzyy <> (1):
      Add plugin (courtesy of @intact) (#114)

Charlie Drage <> (1):
      Update release scripts

Erk- <> (1):
      Changed the twitch plugin to use https instead of http as discussed in #103 (#104)

Forrest <> (2):
      Modify the changelog link (#107)
      Update cli to note a few windows issues (#108)

Simon Bernier St-Pierre <> (1):
      change icon

Simon Bernier St-Pierre <> (1):
      finish the installer (#98)

Stefan <> (1):
      Debian packaging base (#80)

Stefan <> (1):
      remove run-as-root option, reworded warning #85 (#109)

Weslly <> (1):
      Fixed url matching (#90)

bastimeyer <> (2):
      Improve NSIS installer script
      Remove shortcut from previous releases on Windows

beardypig <> (8):
      plugins.cybergame: update to support changes to the live streams on the website
      Use pycryptodome inplace of pyCrypto
      Automated build of the Windows NSIS installer
      support for relative paths for rtmpdump
      makeinstaller: install the streamlinkrc file in to the users %APPDATA% directory
      remove references to livestreamer in the win32 config template
      stream.rtmpdump: fixed the rtmpdump path issue, introduced in 6bf7fd7
      pin requests to <2.12.0 to avoid the strict IDNA2008 validation

ethanhlc <> (1):
      fixed instance of livestreamer (#99)

intact <> (1):
      plugins.livestream: Support old player urls

mmetak <> (2):
      fix info_url (#88)
      fix info_url (yet again...) (#143)

skulblakka <> (1):
      Overworked Plugin for ZDF Mediathek (#154)

sqrt2 <> (1):
      Fix ORF TVthek plugin (#113)

tam1m <> (1):
      Fix zdf_mediathek TypeError (#156)

The second ever release of Streamlink!

In this release we've not only set the stepping stone for the further development of Streamlink (documentation site updated, CI builds working) but we're already fixing bugs and implementing features past the initial fork of livestreamer.

The main features of this release are: - New windows build available and generated via pyinstaller - Multiple provider bug fixes (twitch, picarto, itvplayer, crunchyroll, periscope, douyutv) - Updated and reformed documentation which also includes our site

As always, below is a git shortlog of all changes from the previous release of Streamlink (0.0.1) to now (0.0.2).

Brainzyy <> (1):
      add to the docs

Charlie Drage <> (9):
      Add script to generate authors list / update authors
      Add release script
      Get ready for a release.
      Revert "Latest fix to plugin from livestreamer"
      0.0.1 Release
      Update the README with installation notes
      Update copyright author
      Update plugin description on README
      It's now 2016

Forrest <> (1):
      Add a coverage file (#54)

Forrest Alvarez <> (4):
      Modify release for streamlink
      Remove faraday from travis run
      Remove tox
      Add the code coverage badge

Latent Logic <> (1):
      Picarto plugin: multistream workaround (fixes #50)

Maschmi <> (1):
      added travis build status badge fixes #74 (#76)

Randy Taylor <> (1):
      Fix typo in issues docs and improve wording (#61)

Simon Bernier St-Pierre <> (8):
      add script to build & copy the docs
      move to script/
      Automated docs updates via travis-ci
      prevent the build from hanging
      fix automated commit message
      add streamboat to the docs
      disable docs on pull requests add option to disable hosting

Simon Bernier St-Pierre <> (2):
      Don't delete everything if docs build fail (#62)
      Create install script for pynsist (#27)

beardypig <> (3):
      TVPlayer plugin supports the latest version of the website
      crunchyroll: decide if to parse the stream links as HLS variant playlist or plain old HLS stream (fixes #70)
      itvplayer: updated the productionId extraction method

boda2004 <> (1):
      fixed periscope live streaming and allowed url re (#79)

ethanhlc <> (1):
      fixed instances of chrippa/streamlink to streamlink/streamlink

scottbernstein <> (1):
      Latest fix to plugin from livestreamer

steven7851 <> (1):
      Update plugin.douyutv

The first release of Streamlink!

This is the first release from the initial fork of Livestreamer. We aim to have a concise, fast review process and progress in terms of development and future releases.

Below is a git shortlog of all commits since the last change within Livestream (hash ab80dbd6560f6f9835865b2fc9f9c6015aee5658). This will serve as a base-point as we continue development of "Streamlink".

New releases will include a list of changes as we add new features / code refactors to the existing code-base.

Agustin Carrasco <> (2):
      plugins.crunchyroll: added support for locale selection
      plugins.crunchyroll: use locale parameter on the header's user-agent as well

Alan Love <> (3):
      added support for
      removed printing
      updated plugin matrix

Alexander <> (1):
      channel info url change in afreeca plugin

Andreas Streichardt <> (1):
      Add Sportschau

Anton <> (2):
      goodgame ddos validation
      add stream_id with words

Benedikt Gollatz <> (1):
      Add support for ORF TVthek livestreams and VOD segments

Benoit Dien <> (1):
      Meerkat plugin

Brainzyy <> (1):
      fix plugin

Charlie Drage <> (9):
      Update the README
      Fix travis
      Rename instances of "livestreamer" to "streamlink"
      Fix travis
      Add script to generate authors list / update authors
      Get ready for a release.
      Add release script
      Revert "Latest fix to plugin from livestreamer"
      0.0.0 Release

Charmander <> (1):
      plugins.picarto: Update for API and URL change

Chris-Werner Reimer <> (1):
      fix vaughnlive plugin #897

Christopher Rosell <> (7):
      plugins.twitch: Handle subdomains with dash in them, e.g. en-gb.
      cli: Close output on exit.
      Show a brief usage when no option is specified.
      cli: Fix typo.
      travis: Use new artifacts tool.
      docs: Fix readthedocs build.
      travis: Build installer exe aswell.

Daniel Meißner <> (2):
      plugin: added media_ccc_de api and protocol changes
      docs/plugin_matrix: removed needless characters

Dominik Sokal <> (1):
      plugins.afreeca: fix stream

Ed Holohan <> (1):
      Quick hack to handle Picarto changes

Emil Stahl <> (1):
      Add support for

Erik G <> (7):
      Added plugin for Dplay.
      Added plugin for Dplay and removed sbsdiscovery plugin.
      Add HLS support, adjust API schema, no SSL verify
      Add pvswf parameter to HDS stream parser
      Fix Video ID matching, add .no & .dk support, add error handling
      Match new URL, add HDS support, handle incorrect geolocation
      Add API support

Fat Deer <> (1):

Forrest Alvarez <> (3):
      Add some python releases
      Add coveralls to after_success
      Remove artifacts

Guillaume Depardon <> (1):
      Now catching socket errors on send

Javier Cantero <> (1):
      Add new parameter to Twitch usher URL

Jeremy Symon <> (2):
      Sort list of streams by quality
      Avoid sorting streams twice

Jon Bergli Heier <> (2):
      plugins.nrk: Updated for webpage changes.
      plugins.nrk: Fixed _id_re regex not matching series URLs.

Kari Hänninen <> (7):
      Use client ID for API calls
      Revert "update INFO_URL for VaughnLive"
      Remove spurious print statement that made the plugin incompatible with python 3. fix breakage ("TypeError: cannot use a string pattern on a bytes-like object")
      sportschau: Fix breakage ("TypeError: a bytes-like object is required, not 'str'"). Also remove debug output.
      Update the plugin matrix
      Bump version to 1.14.0-rc1

Marcus Soll <> (2):
      Added plugin for VOD
      Updated plugin

Mateusz Starzak <> (1):

Michael Copland <> (1):
      Fixed weighting of Twitch stream names

Michael Hoang <> (1):
      Add plugin and chmod 2 files

Michiel <> (1):
      Support for Tour de France stream

Paul LaMendola <> (2):
      Maybe fixed ustream validation failure.
      More strict test for weird stream.

Pavlos Touboulidis <> (2):
      Add plugin
      Update plugin matrix for antenna

Robin Schroer <> (1):
      azubutv: set video_player to None if stream is offline

Seth Creech <> (1):
      Added logic to support host mode

Simon Bernier St-Pierre <> (5):
      update the plugin
      support virtualenv
      update references to livestreamer
      add plugin
      add streamboat plugin

Summon528 <> (1):
      add support to

Swirt <> (2):
      Picarto plugin: update RTMPStream-settings
      Picarto plugin: update RTMPStream-settings

Tang <> (1):
      New provider:

Warnar Boekkooi <> (1):
      NPO token fix

WeinerRinkler <> (2):
      First version
      Error fixed when streamer offline or invalid

blxd <> (5):
      fixed plugin, the website layout changed and the method to find the stream URLs needed to be updated.
      tvcatchup now returns a variant playlist only works with a browser user agent
      not all channels return hlsvariant playlists
      add user agent header to the tvcatchup plugin

chvrn <> (4):
      added expressen plugin
      added expressen plugin
      update() => assign with subscript
      added entry for expressen

e00E <> (1):
      Fix Twitch plugin not working because bandwith was parsed as an int when it is really a float

fat deer <> (1):
      Add Plugin.

fcicq <> (1):
      add support

hannespetur <> (8):
      plugin for Ruv - the Icelandic national television - was added
      removed print statements and started to use quality key as audio if the url extensions is mp3
      the plugin added to the plugin matrix
      removed unused import
      alphabetical order is hard
      removed redundant assignments of best/worst quality
      HLS support added for the Ruv plugin
      Ruv plugin: returning generators instead of a dict

int3l <> (1):
      Refactoring and update for the VOD support

intact <> (21):
      plugins.artetv: Update json regex
      Updated plugin
      Added plugin for
      plugins.streamupcom: Check live status
      plugins.streamupcom: Update for API change
      plugins.streamupcom: Update for API change
      plugins.dailymotion: Add HLS streams support
      plugins.npo: Fix Python 3 compatibility
      plugins.livestream: Prefer standard SWF players
      plugins.tga: Support more streams
      plugins.tga: Fix offline streams
      plugins.vaughnlive: Fix INFO_URL
      Added plugin for
      plugins.vaughnlive: Update for API change
      plugins.vaughnlive: Fix app for some ingest servers
      plugins.vaughnlive: Remove debug print
      plugins.vaughnlive: Lowercase channel name
      plugins.vaughnlive: Update for API change
      plugins.vaughnlive: Update for API change
      plugins.livestream: Tolerate missing swf player URL
      plugins.livestream: Fix player URL

jkieberk <> (1):
      Change Fedora Package Manager from Yum  to Dnf

kviktor <> (2):
      plugins: stream and video support
      update mediaklikk plugin

livescope <> (1):
      Add VOD/replay support for

liz1rgin <> (2):
      Fix goodgame find Streame

maop <> (1):
      Add plugin.

mindhalt <> (1):
      Update redirect URI after successful twitch auth

neutric <> (1):
      Update issues.rst

nitpicker <daniel@localhost> (2):
      I doesn't sign the term of services, so I doesnt violate!
      update INFO_URL for VaughnLive

oyvindln <> (1):
      Allow https urls for

ph0o <> (1):

pulviscriptor <> (1):
      GoodGame URL parse fix

scottbernstein <> (1):
      Latest fix to plugin from livestreamer

steven7851 <> (16):
      plugins.douyutv: Use new api.
      update douyu
      fix cdn..
      fix for Python 3.x..
      use mobile api for reducing code
      fix for non number channel
      add middle and low quality
      fix quality
      fix room id regex
      make did by UUID module
      fix channel on event
      more retries for redirection
      remove useless lib
      try to support event page
      use https protocol
      Update plugin.douyutv

trocknet <trocknet@github> (1):
      plugins.afreeca: Fix HLS stream.

whizzoo <> (2):
      Add RTLXL plugin
      Add RTLXL plugin

wolftankk <> (3):
      get azubu live status from api
      use new api get stream info
      fix video_player error