Streamlink is a CLI utility which pipes video streams from various services into a video player

Overview

Streamlink

Github build status codecov.io Backers on Open Collective Sponsors on Open Collective

Streamlink is a CLI utility which pipes video streams from various services into a video player, such as VLC.

The main purpose of streamlink is to avoid resource-heavy and unoptimized websites, while still allowing the user to enjoy various streamed content.

Streamlink is a fork of the Livestreamer project.

Please note that by using this application you're bypassing ads run by sites such as Twitch.tv. Please consider donating or paying for subscription services when they are available for the content you consume and enjoy.

Installation

Please refer to our documentation for different ways to install Streamlink:

Features

Streamlink is built upon a plugin system which allows support for new services to be easily added. Most of the big streaming services are supported, such as:

... and many more. A full list of plugins currently included can be found on the plugin page.

Quickstart

After installing, simply use:

streamlink STREAMURL best

The default behavior of Streamlink is to play back streams in the VLC player.

For more in-depth usage and install instructions, please refer to the detailed documentation.

Contributing

All contributions are welcome. Feel free to open a new thread on the issue tracker or submit a new pull request. Please read CONTRIBUTING.md first. Thanks!

Contributors

Backers

Thank you to all our backers! [Become a backer]

Backers on Open Collective

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]

Open Collective Streamlink Sponsor Open Collective Streamlink Sponsor Open Collective Streamlink Sponsor Open Collective Streamlink Sponsor Open Collective Streamlink Sponsor Open Collective Streamlink Sponsor Open Collective Streamlink Sponsor Open Collective Streamlink Sponsor Open Collective Streamlink Sponsor Open Collective Streamlink Sponsor

Comments
  • plugins.twitch: 410 Client Error (Gone for url)

    plugins.twitch: 410 Client Error (Gone for url)

    This just started happening today sadly.

    Unable to open URL: https://api.twitch.tv/api/channels/sjow/access_token.json (410 Client Error: Gone for url: https://api.twitch.tv/api/channels/sjow/access_token.json?as3=t&platform=_)

    This happens for any stream I try to start. Not sure what is wrong.

    plugin issue 
    opened by gimli520 108
  • vaughnlive plugin is buggy

    vaughnlive plugin is buggy

    Checklist

    • [x] This is a bug report.
    • [x] This is a feature request.
    • [ ] This is a plugin (improvement) request.
    • [x] I have read the contribution guidelines.

    Description

    vaughnlive streams may not work all the time as it shows not found

    Expected / Actual behavior

    ...

    Reproduction steps / Explicit stream URLs to test

    1. vaughnlive.tv/sherming66

    Environment details

    Operating system and version: Windows 7 Streamlink and Python version: 0.6.0

    Comments, logs, screenshots, etc.

    plugin issue 
    opened by bobvargas 104
  • plugins.ustream: improved plugin

    plugins.ustream: improved plugin

    This is a new and improved plugin for ustream.com. Changes include:

    • switched to websockets client, and no longer depends on python-librtmp
    • support for desktop streams, including fragmented mp4

    Note to maintainers: this patch introduces two new dependencies websocket-client==0.37.0 and pymp4==1.0.0. websocket-client is used to connect to the websockets service for ustream, and pymp4 (maintained by myself) is used to mux the fragmented mp4 fragments. I don't know how this may affect the Windows installer.

    It would be good to have some other people test this out. Note that if you simply replace your existing ustream.py you will need to install two python packages: websocket-client==0.37.0 and pymp4==1.0.0. If you use the Windows installer I am not sure how you can install these packages, if you installed streamlink with pip you can simply use pip to install these new dependencies:

    pip install websocket-client==0.37.0 pymp4==1.0.0
    

    This PR is intended to fix #58, #57, and #110.

    bug enhancement 
    opened by beardypig 101
  • Can someone update/fix the afreeca.py plugin?

    Can someone update/fix the afreeca.py plugin?

    Checklist

    • [x] This is a bug report.
    • [ ] This is a feature request.
    • [ ] This is a plugin (improvement) request.
    • [ ] I have read the contribution guidelines.

    Description

    Plugin seems to no longer work for me. Also, seems this plugin's line 10 was never updated. Rtmp streams almost never show up as available (some channels do), mostly only hls streams. But rtmp streams can be fixed. Line 10 can be changed to: "rtmp": "http://resourcemanager.afreeca.tv:9090/broad_stream_assign.html", (I did not figure this out, I don't know how to do any of this. I was still using Livestreamer and someone else had the fix in Livestreamer issues... so I never bothered to use Streamlink.)

    However, hls streams aren't working now (worked fine yesterday). Any help? There were way to many versions/fixes of this plugin floating around with Livestreamer. I just want ONE simple plugin that will work and regularly be updated.

    Edit: Weird... sometimes hls will work if I'm lucky, but I didn't have problems until recent. Otherwise I get the error below.

    Environment details

    Operating system and version: Windows 10 Pro Streamlink version: 0.5.0

    Comments, logs, screenshots, etc.

    This is what I get:

    C:\Users\User>streamlink http://play.afreeca.com/ch1716 live_hls [cli][info] Found matching plugin afreeca for URL http://play.afreeca.com/ch1716 [cli][info] Available streams: live_hls, live (worst, best) [cli][info] Opening stream: live_hls (hls) [cli][error] Try 1/1: Could not open stream <HLSStream('http://chromecast.afreeca.gscdn.com/livestream-28/auth_playlist.m3u8?aid=.A32.7bbT56vyHM9fKZk.bUMFaDsLjB6UQ89wrGN6JCEZOm7dvh-EQZ94HZ2CYXtsWb_fyxh4el48lL2zKVSR4nAIiSJ26NDVNI0-RkboTLpRqJaLKUgvWs-gfGbl3a8SOq4y0u6ft5MKfbaK9gLo')> (Could not open stream: Unable to open URL: http://chromecast.afreeca.gscdn.com/livestream-28/auth_playlist.m3u8?aid=.A32.7bbT56vyHM9fKZk.bUMFaDsLjB6UQ89wrGN6JCEZOm7dvh-EQZ94HZ2CYXtsWb_fyxh4el48lL2zKVSR4nAIiSJ26NDVNI0-RkboTLpRqJaLKUgvWs-gfGbl3a8SOq4y0u6ft5MKfbaK9gLo (500 Server Error: Internal Server Error for url: http://chromecast.afreeca.gscdn.com/livestream-28/auth_playlist.m3u8?aid=.A32.7bbT56vyHM9fKZk.bUMFaDsLjB6UQ89wrGN6JCEZOm7dvh-EQZ94HZ2CYXtsWb_fyxh4el48lL2zKVSR4nAIiSJ26NDVNI0-RkboTLpRqJaLKUgvWs-gfGbl3a8SOq4y0u6ft5MKfbaK9gLo&aid=.A32.7bbT56vyHM9fKZk.bUMFaDsLjB6UQ89wrGN6JCEZOm7dvh-EQZ94HZ2CYXtsWb_fyxh4el48lL2zKVSR4nAIiSJ26NDVNI0-RkboTLpRqJaLKUgvWs-gfGbl3a8SOq4y0u6ft5MKfbaK9gLo)) error: Could not open stream <HLSStream('http://chromecast.afreeca.gscdn.com/livestream-28/auth_playlist.m3u8?aid=.A32.7bbT56vyHM9fKZk.bUMFaDsLjB6UQ89wrGN6JCEZOm7dvh-EQZ94HZ2CYXtsWb_fyxh4el48lL2zKVSR4nAIiSJ26NDVNI0-RkboTLpRqJaLKUgvWs-gfGbl3a8SOq4y0u6ft5MKfbaK9gLo')>, tried 1 times, exiting

    plugin issue 
    opened by tenminute 76
  • Twitch.tv embedded ads (last update: 2021-11-21)

    Twitch.tv embedded ads (last update: 2021-11-21)

    Since we're seeing reports of new changes on Twitch regarding the embedded ads situation (once again), I feel the need of opening a new thread before it gets too messy again with the issues on the issue tracker here. I will update this post once we've got new informations, so that the current state can be found and read easily without digging through issue threads.


    Edit 15 (November 2022)

    See the new thread: https://github.com/streamlink/streamlink/issues/4949

    Edit 14 (2021-11-21)

    Updated the stream access token request parameter again to reduce the number of preroll and midroll ads. See #4194 Published in the 3.0.2 release (2021-11-25)

    Edit 13 (2021-10-19)

    Twitch has made new changes and embedded ads are back again and don't get filtered out correctly. See #4106

    Edit 12 (2021-10-10)

    New device ID headers implemented for preventing ads: #4086

    Edit 11 (2021-06-21)

    Re-pinning the thread, as it's still relevant.

    If you don't want to see ads on Twitch, or if your player can't handle the stream's discontinuity between the ads and regular content and then crashes (eg. VLC), then set the --twitch-disable-ads parameter, which will filter out ads and pre-roll ads and will pause the stream output during that time.

    CLI documentation: https://streamlink.github.io/cli.html#twitch

    Streamlink Twitch GUI https://github.com/streamlink/streamlink-twitch-gui/wiki/Embedded-ads

    Issue changelog

    Edit 10 (2020-12-23)

    Streamlink 2.0.0 has been released yesterday with the workaround from edit 9, but it doesn't seem to be working reliably anymore. Ads can still be filtered out via --twitch-disable-ads.

    Edit 9 (2020-11-28)

    Added a new access token request workaround in #3373 which again prevents ads from being embedded into the stream. (additional note: the access token requests have been moved to the GQL API already in #3344).

    Like usual when there's a new change, you can install Streamlink from the master branch, or wait for the next nightly installer to be built if you're on Windows, or wait for the next release.

    Edit 8 (2020-11-05)

    The ad prevention request parameter workaround has stopped working again, as predicted, and the ad "placeholder" screen seems to have been replaced with real ads now :boom:

    Filtering out ads via --twitch-disable-ads is however still working.

    Edit 7 (2020-10-28)

    A new ad prevention has been discovered (#3301) and has been merged into master on 2020-10-28. If you don't want to wait until the next release (2.0.0 - release date unknown), you can install Streamlink from the master branch, or apply the small change yourself (cf978c5), or as a Windows user, wait for the next nightly build of the installer (>= 2020-10-29).

    If you're using the Twitch GUI, you will have to use a debug / pre-release due to other breaking Streamlink changes in regards to the upcoming 2.0.0 release: streamlink/streamlink-twitch-gui#757

    Edit 6 (2020-10-18)

    1.7.0 has been released on 2020-10-18.

    Edit 5 (2020-10-03)

    #3220 has been merged as well, which should prevent the embedded ads again (for now (edit: broken again)).

    Edit 4 (2020-10-03)

    #3213 with the new ad filtering implementation has been merged into the master branch. You can install Streamlink from there, as described in the docs, or if you're on Windows without a Python environment, wait until the 2020-10-04 nightly installer has been built.

    Edit 3 (2020-10-03)

    Removing the platform=_ parameter again from the stream access token API request once again results in no ads being embedded into the stream. This is a game of cat and mouse at this point, which is ridiculous. https://github.com/streamlink/streamlink/issues/3210#issuecomment-703022351

    Edit 2 (2020-09-30)

    I've opened a pull request (see #3213) with the new filtering implementation. Feedback is highly appreciated, since I still don't get any ads myself and therefore can't verify it.

    If you want to test this and give feedback, install it via python-pip like this (more details in the install docs), but beware that there will be more changes on that branch. Alternatively, install it in a virtual-env, so that it doesn't interfere with your main install.

    pip install --user 'git+https://github.com/bastimeyer/[email protected]/twitch/embedded-ads-2020-09-29'
    

    Edit 1 (2020-09-29)

    Twitch has changed the annotated titles of the ads, and Streamlink doesn't expect this and thus can't filter them out. The issue can be fixed with a trivial change (see post below), but this may introduce other issues in the future. A better filtering approach is being worked on. This trivial change won't prevent embedded ads from happening and only fixes the filtering.


    Issue triage (old stuff)

    As you can read in the changelog, we have recently (re-)added changes in the latest release (1.6.0) to prevent the embedded ads on Twitch from happening. This workaround basically sets the platform=_ request parameter when acquiring the stream URL and that made Twitch not embed pre-roll and mid-stream ads into the HLS stream. I've already said in #3173 that this probably won't last long, just like last time we had it implemented, and now here we are and it's broken again after Twitch has pushed another set of changes.

    Another issue seems to be that the ads themselves are now annotated differently and this breaks the current ad-filtering implementation, which exists in addition to the workaround request parameter. We have gone through multiple iterations here as well, because the way ads were embedded has changed quite a lot.

    It appears though that Twitch is only rolling out new embedded ads in certain regions right now, because it's not reproducible for me at the time (with a German IP address).


    Checking the HLS playlist content of the new ads (DONE, thanks for the posts)

    ~~Because of that, I'm interested in the content of HLS playlists with embedded ads, so we can debug this. Please share a link to a Github gist post with the playlist content. You can check this by running~~

    curl -s "$(streamlink --stream-url twitch.tv/CHANNEL best)"
    

    The content should NOT look like this (notice the EXTINF tags and their "live" attribute):

    #EXTM3U
    #EXT-X-VERSION:3
    #EXT-X-TARGETDURATION:6
    #EXT-X-MEDIA-SEQUENCE:1234
    #EXT-X-TWITCH-ELAPSED-SECS:1337.000
    #EXT-X-TWITCH-TOTAL-SECS:1338.000
    #EXT-X-DATERANGE:ID="source-1234567890",CLASS="twitch-stream-source",START-DATE="2020-09-29T00:00:00.000Z",END-ON-NEXT=YES,X-TV-TWITCH-STREAM-SOURCE="live"
    #EXT-X-DATERANGE:ID="trigger-1234567890",CLASS="twitch-trigger",START-DATE="2020-09-29T00:00:00.000Z",END-ON-NEXT=YES,X-TV-TWITCH-TRIGGER-URL="https://video-weaver.XXXXX.hls.ttvnw.net/trigger/some-long-base64-string"
    #EXT-X-PROGRAM-DATE-TIME:2020-09-29T00:00:00.000Z
    #EXTINF:2.000,live
    https://video-edge-XXXXXX.XXXXX.abs.hls.ttvnw.net/v1/segment/some-long-base64-string.ts
    [... list of remaining segments and program date metadata]
    #EXT-X-TWITCH-PREFETCH:https://video-edge-XXXXXX.XXXXX.abs.hls.ttvnw.net/v1/segment/some-long-base64-string.ts
    #EXT-X-TWITCH-PREFETCH:https://video-edge-XXXXXX.XXXXX.abs.hls.ttvnw.net/v1/segment/some-long-base64-string.ts
    
    opened by bastimeyer 72
  • Streamlink for Windows (Release)

    Streamlink for Windows (Release)

    With this program you can build a ready to work Streamlink release for Windows with a few clicks. The generated release is always the latest available because the source is master.zip Download: https://github.com/RosadinTV/Streamlink-for-Windows/archive/master.zip Look at README.txt for requirements.

    enhancement 
    opened by ghost 69
  • vaughnlive plugin not working..

    vaughnlive plugin not working..

    Checklist

    • [x] This is a bug report.
    • [ ] This is a feature request.
    • [ ] This is a plugin (improvement) request.
    • [ ] I have read the contribution guidelines.

    Description

    Vaughnlive streams are not working

    Expected / Actual behavior

    ...

    Reproduction steps / Explicit stream URLs to test

    seems to be a replica of the closed issue https://github.com/streamlink/streamlink/issues/1034

    Every stream just comes back with "error: No playable streams found"

    Environment details

    Operating system and version: Windows 10 x64 Streamlink and Python version: 0.7.0 ( and the latest dev buld from https://dl.bintray.com/streamlink/streamlink-nightly/ )

    Comments, logs, screenshots, etc.

    This is happening even on the latest night/dev build Doing "-l debug" doesn't seem to produce anything at all either, just throws the same error: no playable streams found even though the streams are working just fine in browser..

    Love Streamlink? Please consider supporting our collective. Thanks!

    more info required plugin issue 
    opened by JourneyOver 60
  • Window Titles = Stream Titles

    Window Titles = Stream Titles

    This pull request is based on https://github.com/chrippa/livestreamer/pull/1167/

    I reworked it to only use the first commit though, so that instead of being restricted to just VLC, it allows the user to specify whatever command line argument they need for their special player.

    example usage:

    streamlink https://www.twitch.tv/coolstreamer source -p 'vlc --meta-title="{title}"'
    
    streamlink https://www.twitch.tv/coolstreamer source -p 'mpv --title="{title}"'
    

    In this pull request, I've only implemented Twitch support. Other sources we'll try to give them just the channel name as the title, and if we can't do that, we just give them back the url they entered as the title.

    There is a mild security concern in this pull request. Because we are putting the stream title into subprocess.Popen, if this were implemented in the worst way possible, a streamer could name their stream e.g. ";echo "hacked and get arbitrary code execution. Because we don't have shell=True set in subprocess.Popen anywhere and I've replaced ", it should be fine. I'd like confirmation anyway.

    It would also be nice to replace the title by default instead of requiring the --player argument, but this pull request doesn't do that.

    enhancement 
    opened by Hubcapp 59
  • Plugin for Livestream.com not working right?  exit's quickly for hls and not at all for normal streams

    Plugin for Livestream.com not working right? exit's quickly for hls and not at all for normal streams

    I am trying to get a live stream on livestreamer.com to work and i can't get it to play more then about 35 seconds...

    When I run this command: streamlink "http://livestream.com/Miraclenet/events/5004281" 270p --fifo --player omxplayer

    it gives me an error about an swf being needed. When I run this command: streamlink "http://livestream.com/Miraclenet/events/5004281" 270p_hls --fifo --player omxplayer

    it will play the stream but just for about 35 seconds or so... I kinda don't want to have to restart it every 35 seconds to watch this stream... I'd like it to run until I stop it myself...

    Any help for this non-python, non-linux guy would be very helpful...

    btw, this is running on a Raspberry Pi. Just got a nice little 7 inch lcd for it and set it up on my desk to be able to watch it while I work, but can't get it to play for long at a time...

    (edited to correct commands used)

    bug question 
    opened by Junior1544 55
  • Please fix the ustream plugin

    Please fix the ustream plugin

    The plugin seems to not be able to detect desktop streams... (This was ported directly from livestreamer, where it was never fixed. using librmtp never worked to download desktop streams, i am linking the post) https://github.com/chrippa/livestreamer/issues/1122

    Some streams that are in 720p don't show up, due to it only detecting mobile versions of the streams. See here:

    [cli][info] Found matching plugin ustreamtv for URL http://www.ustream.tv/nasahdtv Available streams: mobile_240p (worst), mobile_360p, mobile_480p, mobile_720p (best) While this specific stream has 720p (not sure why), other streams do not.

    This is a problem with the plugin only detecting mobile versions of streams.

    Ustream Livestreamer plugin history: https://github.com/chrippa/livestreamer/commits/develop/src/livestreamer/plugins/ustreamtv.py

    bug 
    opened by TheSneakySniper 55
  • WWEN plugin?

    WWEN plugin?

    Checklist

    • [ ] This is a bug report.
    • [x] This is a plugin request.
    • [ ] This is a feature request.
    • [ ] I used the search function to find already opened/closed issues or pull requests.

    Description

    WWEN works on kodi but i'm asking can we get this on streamlink as a fully active py? i tried using it on livestreamer but it has a few py files one for setting and others for logins since its for kodi. streamlink has a bug so i can't get it to start up but read its a problem a dev was going to fix.

    Edited: (missing info) this plugin is a WWE Network plugin for kodi url is ( http://network.wwe.com ) Plugin url ( http://forum.kodi.tv/showthread.php?tid=233467 ), some info can be found on that site with the download links for the plugin.

    When using on kodi if temp bans your account after 15min so be careful, atres is used for the lower resolutions but it is hidden for some 4500K files like live PPV you have to wait a week for it to show up.

    WWE uses the master m3u8 file with the 500k to 4500k m3u8 links.

    Expected / Actual behavior

    AIO py to catch 1280x720p files on wwe and not the 3000k 720p, after 4500k ones (they are there but just hidden for a week)

    Reproduction steps / Stream URLs to test

    1. Above

    Environment details (operating system, python version, etc.)

    win 7 and server 03, all updated.

    Comments, logs, screenshots, etc.

    Any more info say it simple of what you need, not cutting corners and thinking i'm a mind reader like below. (not rude but even a child can see what i'm on about below)

    plugin request 
    opened by whitetop 54
  • tubitv.com - live stream

    tubitv.com - live stream

    Checklist

    Description

    Hello,

    TubiTV allows users to watch movies, TV shows, and live television on 29 different kinds of devices, for free and without any cable subscription requirement. The content is available in 10 countries. This service is similar to Pluto.tv, which streamlink already supports: https://streamlink.github.io/plugins.html#pluto

    This is a request for streamlink to support the live TV aspect of Tubi. Example URL of Forensic files: https://tubitv.com/live/671083/forensic-files

    yd-dlp has support for Tubi videos, movies, and TV shows: https://github.com/yt-dlp/yt-dlp/blob/master/yt_dlp/extractor/tubitv.py

    Please consider support for Tubi live.

    Input URLs

    1. https://tubitv.com/live
    plugin request restriction: geo blocked 
    opened by jungle-boogie 0
  • plugins.euronews: fix and rewrite plugin

    plugins.euronews: fix and rewrite plugin

    Fixes #5062

    Actually worthy of a plugin removal, because the vast majority of live streams are just embedded youtube streams, so the plugin is just a wrapper plugin except for a few languages and for VODs. And some languages aren't even supported by the plugin, as euronews is using different websites for those languages.

    $ echo -e 'from tests.plugins.test_euronews import TestPluginCanHandleUrlEuronews as test\nfor item in test.should_match:print(item)' \
      | python \
      | xargs -P1 -n1 streamlink
    [cli][info] Found matching plugin euronews for URL https://www.euronews.com/live
    Available streams: 144p (worst), 240p, 360p, 480p, 720p (best)
    [cli][info] Found matching plugin euronews for URL https://fr.euronews.com/live
    Available streams: 144p (worst), 240p, 360p, 480p, 720p (best)
    [cli][info] Found matching plugin euronews for URL https://de.euronews.com/live
    Available streams: 144p (worst), 240p, 360p, 480p, 720p (best)
    [cli][info] Found matching plugin euronews for URL https://it.euronews.com/live
    Available streams: 144p (worst), 240p, 360p, 480p, 720p (best)
    [cli][info] Found matching plugin euronews for URL https://es.euronews.com/live
    Available streams: 144p (worst), 240p, 360p, 480p, 720p (best)
    [cli][info] Found matching plugin euronews for URL https://pt.euronews.com/live
    Available streams: 144p (worst), 240p, 360p, 480p, 720p (best)
    [cli][info] Found matching plugin euronews for URL https://ru.euronews.com/live
    Available streams: 144p (worst), 240p, 360p, 480p, 720p (best)
    [cli][info] Found matching plugin euronews for URL https://ua.euronews.com/live
    Available streams: 144p (worst), 240p, 360p, 480p, 720p (best)
    [cli][info] Found matching plugin euronews for URL https://tr.euronews.com/live
    Available streams: 240p (worst), 360p, 480p, 576p, 720p_alt, 720p (best)
    [cli][info] Found matching plugin euronews for URL https://gr.euronews.com/live
    Available streams: 144p (worst), 240p, 360p, 480p, 720p (best)
    [cli][info] Found matching plugin euronews for URL https://hu.euronews.com/live
    Available streams: 144p (worst), 240p, 360p, 480p, 720p (best)
    [cli][info] Found matching plugin euronews for URL https://fa.euronews.com/live
    Available streams: 240p (worst), 360p, 480p, 576p, 720p_alt, 720p (best)
    [cli][info] Found matching plugin euronews for URL https://arabic.euronews.com/live
    Available streams: 144p (worst), 240p, 360p, 480p, 720p (best)
    [cli][info] Found matching plugin euronews for URL https://www.euronews.com/video
    Available streams: vod (worst, best)
    [cli][info] Found matching plugin euronews for URL https://www.euronews.com/2023/01/02/giving-europe-a-voice-television-news-network-euronews-turns-30
    Available streams: vod (worst, best)
    
    plugin issue 
    opened by bastimeyer 2
  • plugins.ceskatelevize: update for ct24 and sport

    plugins.ceskatelevize: update for ct24 and sport

    @duunsupen, could you check this is working for all channels by sideloading the updated plugin, please? I think it's probably working OK, but they seem to detect VPS based proxies, so I just get the short clip telling me the channel isn't available for all except CT24.


    For some reason, the subdomains are both different to the main channels in terms of HTML and JSON data, and different to each other as well. The API response is slightly different for sport too. All a bit strange.

    I didn't bother going through the process of finding the id for CT24, as it seems unlikely it'll change.

    I notice that sometimes the streaming URL gets an empty response, but it seems intermittent. I've seen that happen in the web browser too via the network tab on the dev console.

    closes #5055

    plugin issue restriction: geo blocked 
    opened by mkbloke 5
  • plugins.euronews: 404 Client Error

    plugins.euronews: 404 Client Error

    Checklist

    Streamlink version

    Latest stable release

    Description

    Hello I m facing an issue with euronews

    Debug log

    /usr/local/bin/streamlink --loglevel debug  "https://fr.euronews.com/live"
    [cli][info] streamlink is running as root! Be careful!
    [cli][debug] OS:         Linux-5.15.0-56-generic-x86_64-with-glibc2.29
    [cli][debug] Python:     3.8.10
    [cli][debug] Streamlink: 5.1.2
    [cli][debug] Dependencies:
    [cli][debug]  certifi: 2019.11.28
    [cli][debug]  isodate: 0.6.0
    [cli][debug]  lxml: 4.8.0
    [cli][debug]  pycountry: 22.3.5
    [cli][debug]  pycryptodome: 3.9.9
    [cli][debug]  PySocks: 1.7.1
    [cli][debug]  requests: 2.27.1
    [cli][debug]  urllib3: 1.26.13
    [cli][debug]  websocket-client: 1.3.2
    [cli][debug] Arguments:
    [cli][debug]  url=https://fr.euronews.com/live
    [cli][debug]  --loglevel=debug
    [cli][info] Found matching plugin euronews for URL https://fr.euronews.com/live
    error: Unable to open URL: https://fr.euronews.com/api/watchlive.json (404 Client Error: Not Found for url: https://fr.euronews.com/api/watchlive.json)
    
    plugin issue 
    opened by campones 5
  • plugins.ceskatelevize: URL updates needed for CT24 and CT Sport

    plugins.ceskatelevize: URL updates needed for CT24 and CT Sport

    Checklist

    Streamlink version

    Latest stable release

    Description

    Ceska Televize offers five channels. For three of them, ceskatelevize.py still works fine (CT1, CT 2, CT :D/Art). However, the remaining two channels have recently changed their URLs., i.e.

    CT 24: formerly https://www.ceskatelevize.cz/zive/ct24/ , now redirects to https://ct24.ceskatelevize.cz/#live

    CT Sport: formerly https://www.ceskatelevize.cz/zive/sport/ , now redirects to https://sport.ceskatelevize.cz/#live

    These two new URLs will not be recognised by ceskatelevize.py anymore as it basically looks for www.ceskatelevize.cz/zive/... It yould be great if you could update ceskatelevize.py to enable it again for CT 24 and CT Sport. Please note that CT Sport is geoblocked for the Czech Republic. This is not the case for CT 24.

    Debug log

    Debug für CT24 with its now outdated URL:
    [streamlinksrv][debug] Arguments:
    [streamlinksrv][debug]  url=https://www.ceskatelevize.cz/zive/ct24/
    [streamlinksrv][debug]  stream=['best']
    [streamlinksrv][info] Found matching plugin ceskatelevize for URL https://www.ceskatelevize.cz/zive/ct24/
    [streamlinksrv][error] No playable streams found on this URL: https://www.ceskatelevize.cz/zive/ct24/
    [streamlinksrv][debug] Send Offline clip
    
    plugin issue restriction: geo blocked 
    opened by duunsupen 0
  • exceptions: PluginError gets shared between HTTPSession requests and validation schemas

    exceptions: PluginError gets shared between HTTPSession requests and validation schemas

    Checklist

    Streamlink version

    Latest stable release

    Description

    While trying to use the SSLKEYLOGFILE feature of python's SSL module, I set the value of this env variable to an invalid path string (I added quotes around the path which are not expected by the Windows API) which gets rejected by openssl/kernel layer.

    This raises a specific kind of error (obtained by running the process in Pdb):

    Traceback (most recent call last):
      File "C:\Users\Admin\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\connectionpool.py", line 701, in urlopen
        httplib_response = self._make_request(
      File "C:\Users\Admin\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\connectionpool.py", line 384, in _make_request
        self._validate_conn(conn)
      File "C:\Users\Admin\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\connectionpool.py", line 1013, in _validate_conn
        conn.connect()
      File "C:\Users\Admin\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\connection.py", line 402, in connect
        self.ssl_context = create_urllib3_context(
      File "C:\Users\Admin\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\util\ssl_.py", line 350, in create_urllib3_context
        context.keylog_filename = sslkeylogfile
    OSError: [Errno 22] Invalid argument: '"C:\\Users\\Admin\\SSLKEYLOGFILE.txt"'
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "C:\Users\Admin\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\adapters.py", line 439, in send
        resp = conn.urlopen(
      File "C:\Users\Admin\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\connectionpool.py", line 757, in urlopen
        retries = retries.increment(
      File "C:\Users\Admin\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\util\retry.py", line 532, in increment
        raise six.reraise(type(error), error, _stacktrace)
      File "C:\Users\Admin\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\packages\six.py", line 769, in reraise
        raise value.with_traceback(tb)
      File "C:\Users\Admin\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\connectionpool.py", line 701, in urlopen
        httplib_response = self._make_request(
      File "C:\Users\Admin\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\connectionpool.py", line 384, in _make_request
        self._validate_conn(conn)
      File "C:\Users\Admin\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\connectionpool.py", line 1013, in _validate_conn
        conn.connect()
      File "C:\Users\Admin\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\connection.py", line 402, in connect
        self.ssl_context = create_urllib3_context(
      File "C:\Users\Admin\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\util\ssl_.py", line 350, in create_urllib3_context
        context.keylog_filename = sslkeylogfile
    urllib3.exceptions.ProtocolError: ('Connection aborted.', OSError(22, 'Invalid argument'))
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "C:\Users\Admin\AppData\Local\Programs\Python\Python310\lib\site-packages\streamlink\plugin\api\http_session.py", line 153, in request
        res = super().request(
      File "C:\Users\Admin\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\sessions.py", line 542, in request
        resp = self.send(prep, **send_kwargs)
      File "C:\Users\Admin\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\sessions.py", line 655, in send
        r = adapter.send(request, **kwargs)
      File "C:\Users\Admin\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\adapters.py", line 498, in send
        raise ConnectionError(err, request=request)
    requests.exceptions.ConnectionError: ('Connection aborted.', OSError(22, 'Invalid argument'))
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "C:\Users\Admin\AppData\Local\Programs\Python\Python310\lib\site-packages\streamlink\plugins\twitch.py", line 619, in _access_token
        sig, token = self.api.access_token(is_live, channel_or_vod)
      File "C:\Users\Admin\AppData\Local\Programs\Python\Python310\lib\site-packages\streamlink\plugins\twitch.py", line 424, in access_token
        return self.call(query, schema=validate.Schema(
      File "C:\Users\Admin\AppData\Local\Programs\Python\Python310\lib\site-packages\streamlink\plugins\twitch.py", line 264, in call
        res = self.session.http.post(
      File "C:\Users\Admin\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\sessions.py", line 590, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "C:\Users\Admin\AppData\Local\Programs\Python\Python310\lib\site-packages\streamlink\plugin\api\http_session.py", line 172, in request
        raise err
    streamlink.exceptions.PluginError: Unable to open URL: https://gql.twitch.tv/gql (('Connection aborted.', OSError(22, 'Invalid argument')))
    

    However this relatively clearly communicated error is swallowed by ~the twitch plugin code~a generic streamlink exception, and is converted into a vague NoStreamsError here:

        def _access_token(self, is_live, channel_or_vod):
            try:
                sig, token = self.api.access_token(is_live, channel_or_vod)
            except (PluginError, TypeError):
                raise NoStreamsError(self.url)
    

    ...which eventually results in the end of the process with only a single and misleading message like this:

    error: No playable streams found on this URL: twitch.tv/insert_live_channel
    

    While the root cause in this case is user error, I think it's worth noting that the exception catch clause is way too broad; unexpected exceptions bubbling up from the ssl/os/socket layers shouldn't be treated as "no stream available to play", they should bubble up to the top and be properly logged to the end user in some form.

    My guess is that the "true" no-stream-to-play case raises a few or just one specific kind of (inner)exception; the best practice would be for only those to be caught, while everything else should be raised further up.

    Debug log

    Loaded config from deprecated path, see CLI docs for how to migrate: C:\Users\Admin\AppData\Roaming\streamlink\streamlinkrc
    [cli][warning] Loaded config from deprecated path, see CLI docs for how to migrate: C:\Users\Admin\AppData\Roaming\streamlink\streamlinkrc
    [cli][debug] OS:         Windows 10
    [cli][debug] Python:     3.10.8
    [cli][debug] Streamlink: 5.1.2
    [cli][debug] Dependencies:
    [cli][debug]  certifi: 2021.10.8
    [cli][debug]  isodate: 0.6.0
    [cli][debug]  lxml: 4.6.4
    [cli][debug]  pycountry: 20.7.3
    [cli][debug]  pycryptodome: 3.11.0
    [cli][debug]  PySocks: 1.7.1
    [cli][debug]  requests: 2.26.0
    [cli][debug]  urllib3: 1.26.7
    [cli][debug]  websocket-client: 1.2.1
    [cli][debug] Arguments:
    [cli][debug]  url=twitch.tv/insert_live_channel
    [cli][debug]  stream=['best']
    [cli][debug]  --loglevel=debug
    [cli][debug]  --player="C:\Program Files\MPC-HC\mpc-hc64.exe"
    [cli][debug]  --twitch-low-latency=True
    [cli][info] Found matching plugin twitch for URL twitch.tv/insert_live_channel
    [plugins.twitch][debug] Getting live HLS streams for insert_live_channel
    error: No playable streams found on this URL: twitch.tv/insert_live_channel
    
    API: http-session API: validate 
    opened by PleasantMachine9 2
Releases(5.1.2)
  • 5.1.2(Dec 3, 2022)

    Patch release:

    • Fixed: ValueError being raised while muxing streams (#4998)
    • Fixed: ad filtering bug in Twitch plugin (#5007)
    • Fixed: SVTPlay plugin (#4994)
    • Fixed: TVP plugin (#4997)
    • Docs: updated Linux AppImage and Windows builds install sections (#4999)
    • Docs: fixed man page links in HTML docs (#4995)

    📦 Download and Installation

    Please see the installation instructions for a list of available install methods and packages on the supported operating systems.

    ⚠️ PLEASE NOTE ⚠️
    Streamlink's Windows installers have been moved to streamlink/windows-builds.

    ⚙️ Configuration and Usage

    Please see the CLI documentation for how to configure and use Streamlink.

    ❤️ Support

    If you think that Streamlink is useful and if you want to keep the project alive, then please consider supporting its maintainers by sending a small and optionally recurring tip via the available options.
    Your support is very much appreciated, thank you!

    🙏 Contributors

    • 9: @bastimeyer
    • 1: @streamlinkbot

    🗒️ Full changelog

    bastimeyer <[email protected]> (9):
          docs: fix changelog of 5.1.1 release
          docs: fix man page links in HTML docs
          plugins.tvp: fix channel ID lookup
          stream.ffmpegmux: abort on ValueError during read
          plugins.svtplay: rewrite plugin and add HLS
          docs: rewrite Windows + AppImage install sections
          docs: remove unnecessary note from install page
          docs: explain XDG base dir and parameter expansion
          plugins.twitch: fix ad filtering bug
    
    streamlinkbot <[email protected]> (1):
          plugin.api: update useragents
    
    Source code(tar.gz)
    Source code(zip)
    streamlink-5.1.2.tar.gz(482.75 KB)
    streamlink-5.1.2.tar.gz.asc(833 bytes)
  • 5.1.1(Nov 23, 2022)

    Patch release:

    • Changed: WebsocketClient to use CA certificates bundled by certifi (#4977)
    • Fixed: SegmentedStreamReader not properly getting closed (#4972)
    • Fixed: CLI argument links throughout the entire docs (#4989)
    • Build: added certifi as a direct dependency (#4977)

    📦 Download and Installation

    Please see the installation instructions for a list of available install methods and packages on the supported operating systems.

    ⚠️ PLEASE NOTE ⚠️
    Streamlink's Windows installers have been moved to streamlink/windows-builds.

    ⚙️ Configuration and Usage

    Please see the CLI documentation for how to configure and use Streamlink.

    ❤️ Support

    If you think that Streamlink is useful and if you want to keep the project alive, then please consider supporting its maintainers by sending a small and optionally recurring tip via the available options.
    Your support is very much appreciated, thank you!

    🙏 Contributors

    • 5: @bastimeyer
    • 1: @mkbloke

    🗒️ Full changelog

    Ian Cameron <[email protected]> (1):
          docs: add pipx install info
    
    bastimeyer <[email protected]> (5):
          docs: add missing urllib3 to install page
          stream.segmented: properly close StreamIO
          stream: add FilteredStream and abstract filtering
          plugin.api.websocket: use certifi's cacert.pem
          ci.github: temporarily downgrade Sphinx to 5.2.3
    
    Source code(tar.gz)
    Source code(zip)
    streamlink-5.1.1.tar.gz(480.90 KB)
    streamlink-5.1.1.tar.gz.asc(833 bytes)
  • 5.1.0(Nov 14, 2022)

    • Added: debug log messages of the FFmpeg version in use (#4861)
      Checking the FFmpeg version can be disabled via --ffmpeg-no-validation
    • Added: --twitch-access-token-param for changing access token API request params (#4952)
    • Added: new log level all (#4941)
    • Updated: sbscokr plugin and removed the --sbscokr-id parameter (#4865)
    • Updated: Twitch authentication docs (#4940, #4956)
    • Fixed: broken --twitch-disable-ads mid-roll ad filering (#4942)
    • Fixed: incorrect module name for trace logs on Python 3.11 (#4863)
    • Fixed: bloomberg plugin (#4919)
    • Fixed: dailymotion plugin (#4910)
    • Fixed: raiplay plugin (#4851)
    • Fixed: tvp plugin (#4905)
    • Fixed: vinhlongtv plugin (#4850)
    • Fixed: various other plugin issues (see full changelog)
    • Removed plugins: egame (#4866)
    • Build: added urllib3 as a direct dependency and set it to >=1.26.0 (#4950)
    • Build: added pytest-asyncio to dev-requirements (#4861)

    📦 Download and Installation

    Please see the installation instructions for a list of available install methods and packages on the supported operating systems.

    ⚠️ PLEASE NOTE ⚠️
    Streamlink's Windows installers have been moved to streamlink/windows-builds.

    ⚙️ Configuration and Usage

    Please see the CLI documentation for how to configure and use Streamlink.

    ❤️ Support

    If you think that Streamlink is useful and if you want to keep the project alive, then please consider supporting its maintainers by sending a small and optionally recurring tip via the available options.
    Your support is very much appreciated, thank you!

    🙏 Contributors

    • 37: @bastimeyer
    • 4: @mkbloke
    • 2: @streamlinkbot
    • 1: @fenopa
    • 1: @kuon
    • 1: @pzhlkj6612

    🗒️ Full changelog

    Ian Cameron <[email protected]> (4):
          plugins.tv8: update stream URL regex
          plugins.bloomberg: update/fix headers to avoid bot detection
          docs: add code style section
          plugins.vtvgo: update to get required cookies
    
    Mozi <[email protected]> (1):
          docs: add mypy for checking typing error
    
    Nicolas Goy <[email protected]> (1):
          docs: fix twitch oauth token header name (#4940)
    
    bastimeyer <[email protected]> (37):
          plugin.api.http_session: update and fix typing
          ci.github: bump actions to latest version
          plugins.vinhlongtv: rewrite and fix plugin
          plugins.raiplay: update and fix plugin
          plugin: remove broken decorator
          plugin: fix get_argument()
          plugins.hiplayer: fix plugin
          logger: fix trace() module name on py311
          utils: implement ProcessOutput
          stream.ffmpegmux: validate FFmpeg version
          plugins.sbscokr: rewrite and fix plugin
          plugins.egame: remove plugin
          plugins.qq: rewrite and fix plugin
          plugins.tvrplus: rewrite plugin
          plugins.goltelevision: add missing HTTP headers
          plugins.atresplayer: update input URLs
          plugins.btv: fix validation schema
          plugins.tf1: rewrite plugin, add "stream" VODs
          chore: update issue forms
          plugins.tvp: rewrite and fix plugin, add VODs
          plugins.dailymotion: fix validation schema
          ci.github: add regular Python 3.11 runners
          tests: fix plugins metadata encoding
          chore: fix new mypy warnings and errors
          tools: move list of files to mypy config
          stream.hls: add more debug messages to write calls
          build: add urllib3 directly and set it to >=1.26.0
          plugins.twitch: add --twitch-access-token-param
          logger: add new log level "all"
          logger: implement StreamlinkLogger.iter()
          stream.hls: log HLS playlist content while parsing
          plugins: make $notes metadata repeatable
          plugins.twitch: improve plugin notes and arg texts
          plugins.twitch: fix date offset of prefetch ads
          plugins.twitch: add segment ad detection fallback
          docs: fix and update man page
          cli: fix log format for log level "all"
    
    fenopa <[email protected]> (1):
          plugins.tv8: filter out ad segments
    
    streamlinkbot <[email protected]> (2):
          plugin.api: update useragents
          plugin.api: update useragents
    
    Source code(tar.gz)
    Source code(zip)
    streamlink-5.1.0.tar.gz(479.94 KB)
    streamlink-5.1.0.tar.gz.asc(833 bytes)
  • 5.0.1(Sep 22, 2022)

    Patch release:

    • Fixed: truncation of relative paths in progress output on Windows (#4830)
    • Fixed: mitele plugin's validation schema (#4839)
    • Fixed: infinite loop in rtve plugin (#4840)

    📦 Download and Installation

    Please see the installation instructions for a list of available install methods and packages on the supported operating systems.

    ⚠️ PLEASE NOTE ⚠️
    Streamlink's Windows installers have been moved to streamlink/windows-builds.

    ⚙️ Configuration and Usage

    Please see the CLI documentation for how to configure and use Streamlink.

    ❤️ Support

    If you think that Streamlink is useful and if you want to keep the project alive, then please consider supporting its maintainers by sending a small and optionally recurring tip via the available options.
    Your support is very much appreciated, thank you!

    🙏 Contributors

    • 4: @bastimeyer
    • 1: @UltraHDR

    🗒️ Full changelog

    UltraHDR <[email protected]> (1):
          plugins.hiplayer: remove cnbcarabia.com (#4836)
    
    bastimeyer <[email protected]> (4):
          cli.utils.progress: fix relative Windows paths
          docs: bump furo theme version to 2022.09.15
          plugins.mitele: strip whitespace from stream URLs
          plugins.rtve: fix ZTNR.translate
    
    Source code(tar.gz)
    Source code(zip)
    streamlink-5.0.1.tar.gz(472.34 KB)
    streamlink-5.0.1.tar.gz.asc(833 bytes)
  • 5.0.0(Sep 16, 2022)

    Breaking changes:

    Release highlights:

    • Added: official support for Python 3.11 (#4806)
    • Added: --player-external-http-continuous (#4739)
    • Added: file path to progress output (--output, --record, etc.) (#4764)
    • Added: warning message when FFmpeg is not available and muxing is unsupported (#4781)
    • Changed: logging channel of deprecation messages to "warning" (#4785)
    • Disabled: --twitch-disable-hosting and removed its logic (#4805)
    • Fixed: memory leak when initializing the Streamlink session (#4768)
    • Fixed: cbsnews plugin (#4743)
    • Fixed: steam plugin authentication (#4745)
    • Fixed: ustreamtv plugin (#4761)
    • Fixed: huya plugin (#4763)
    • Fixed: atresplayer, mitele and rtve plugins (#4759, #4760, #4766)
    • Fixed: albavision, hiplayer and htv plugins (#4770)
    • Fixed: OKru plugin with support for the mobile page (#4780)
    • Fixed: trovo plugin VODs (#4812)
    • API: added Streamlink and HTTPSession typing informations to Plugin and Stream (including its various subclasses) (#4802, #4814)
    • API: added pluginargument decorator (#4747)
    • Docs: updated pluginmatcher and pluginargument documentation (#4771)

    📦 Download and Installation

    Please see the installation instructions for a list of available install methods and packages on the supported operating systems.

    ⚠️ PLEASE NOTE ⚠️
    Streamlink's Windows installers have been moved to streamlink/windows-builds.

    ⚙️ Configuration and Usage

    Please see the CLI documentation for how to configure and use Streamlink.

    ❤️ Support

    If you think that Streamlink is useful and if you want to keep the project alive, then please consider supporting its maintainers by sending a small and optionally recurring tip via the available options.
    Your support is very much appreciated, thank you!

    🙏 Contributors

    • 59: @bastimeyer
    • 3: @omergorur
    • 1: @Mehavoid
    • 1: @UltraHDR
    • 1: @ohaiibuzzle
    • 1: @streamlinkbot

    🗒️ Full changelog

    Mehavoid <[email protected]> (1):
          plugins.trovo: fix VODs (#4812)
    
    OHaiiBuzzle <[email protected]> (1):
          plugins.huya: update `liveId` to type `str` (#4763)
    
    UltraHDR <[email protected]> (1):
          plugins.hiplayer: add alwasat.ly (#4778)
    
    bastimeyer <[email protected]> (57):
          plugins.cbsnews: fix regex, add metadata
          plugins.steam: fix login
          plugin: remove user_input_requester from bind()
          plugin: set Plugin.arguments class attr to None
          plugin: add pluginargument decorator
          plugins: switch to new pluginargument decorator
          docs: update plugins extension for new arguments
          plugin: add explicit pluginargument tests
          tests: rewrite plugin cookies tests
          plugins.mitele: fix and refactor plugin
          plugins.atresplayer: fix plugin
          cli: implement --player-external-http-continuous
          plugins.ustreamtv: fix matcher
          plugins.rtve: fix plugin
          cli.utils.progress: refactor
          cli.utils.progress: add output path to formats
          tests: refactor options tests
          plugins: fix regex capture groups
          docs: add plugin{matcher,argument} docstrings
          chore: use f-strings for concatenation
          plugin.api.validate: refactor ValidationError
          plugins.okru: translate mobile URLs
          plugins.okru: support mobile page
          stream.ffmpegmux: show warning if unavailable
          plugins: update plugin constructors
          plugin: remove Plugin.bind()
          plugin: wrappers for incompatible custom plugins
          docs: add Plugin + Session changes to deprecations
          cli.utils.progress: refactor
          logger: log deprecation messages as warnings
          tests: rewrite and split up string formatter tests
          tests: rewrite logger tests
          tests: reorganize test modules
          tests: remove custom catch_warnings function
          cli: refactor version check
          cli: refactor setup of session options
          tests: move versioncheck test to intended dir
          cli: remove custom `ignored` contextmanager
          chore: inline-immediately-returned-variable
          chore: generators
          chore: dicts
          chore: lists
          chore: if-else blocks
          chore: strings
          plugin.api.http_session: remove parse_* methods
          docs: handle suppressed plugin arguments
          plugins.twitch: remove disable-hosting
          build: add Python 3.11 to package classifiers
          ci: install custom lxml wheel on cp311 win-amd64
          plugin: add session typing information
          stream: add session typing information
          plugin: fix type of url property
          plugins.tv3cat: rewrite
          plugins.linelive: rewrite
          plugins.dailymotion: rewrite and fix plugin
          plugins.piczel: rewrite
          stream.ffmpegmux: remove avconv
    
    streamlinkbot <[email protected]> (1):
          plugin.api: update useragents
    
    Ömer Görür <[email protected]> (3):
          plugins.cinergroup: rewrite, add bloomberght (#4813)
          plugins.cinergroup: fix showtvcomtr (#4817)
          plugins.turkuvaz: rewrite, update supported sites (#4819)
    
    Source code(tar.gz)
    Source code(zip)
    streamlink-5.0.0.tar.gz(471.34 KB)
    streamlink-5.0.0.tar.gz.asc(833 bytes)
  • 4.3.0(Aug 15, 2022)

    Release highlights:

    • Improved: CLI download progress output (#4656)
    • Fixed: consecutive FFmpeg executable lookups not being cached (#4660)
    • Fixed: --ffmpeg-verbose-path not expanding ~ to the user's home directory (#4688)
    • Fixed: deprecated stdlib API calls in the upcoming Python 3.11 release (#4651, #4654)
    • Fixed: huya plugin (#4685)
    • Fixed: livestream plugin (#4679)
    • Fixed: picarto plugin (#4729)
    • Fixed: nbcnews plugin (#4668)
    • Fixed: deutschewelle plugin (#4725)
    • Added plugins: atpchallenger (#4700)
    • Removed plugins: nbc + nbcsports + theplatform (#4731), common_jwplayer (#4733)
    • Docs: various CLI related improvements (#4659)
    • Docs: removed OpenBSD and Ubuntu from install docs (#4681)
    • Plugin API: added new validation schemas and updated validators (#4691, #4709, #4732)

    📦 Download and Installation

    Please see the installation instructions for a list of available install methods and packages on the supported operating systems.

    ⚠️ PLEASE NOTE ⚠️
    Streamlink's Windows installers have been moved to streamlink/windows-builds.

    ⚙️ Configuration and Usage

    Please see the CLI documentation for how to configure and use Streamlink.

    ❤️ Support

    If you think that Streamlink is useful and if you want to keep the project alive, then please consider supporting its maintainers by sending a small and optionally recurring tip via the available options.
    Your support is very much appreciated, thank you!

    🙏 Contributors

    • 56: @bastimeyer
    • 8: @pzhlkj6612
    • 1: @skulblakka
    • 1: @streamlinkbot
    • 1: @yxiao1996

    🗒️ Full changelog

    Mozi <[email protected]> (8):
          plugins.nicolive: docs: apply bold style to "--timeshift-offset"
          docs: use valid or full-length options to create links
          docs: use bulleted list to organize content
          docs: include the option itself in its example
          docs: apply option links in indented lines
          docs: add names for special characters
          docs: use single-backtick inline code block
          docs: put inline code to code blocks in examples
    
    NeedMilk! <[email protected]> (1):
          plugins.atpchallenger: new plugin (#4700)
    
    bastimeyer <[email protected]> (54):
          ci: add cpython 3.11-dev test runners
          ci: fix git fetch in netlify build config
          cli: refactor nested argparse argument groups
          plugins.vidio: fix referer HTTP header
          utils.l10n: switch to locale.getlocale()
          cli: rewrite progress output
          stream.ffmpegmux: cache executable lookups
          plugins.nbcnews: fix plugin
          stream.ffmpegmux: rewrite tests
          stream.ffmpegmux: add ffmpeg-verbose{,-path} tests
          docs: fix windows-builds repo links
          plugins.livestream: rewrite and fix plugin
          refactor: is_darwin/is_win32 compat exports
          docs: remove OpenBSD from install docs
          docs: remove Ubuntu from install docs
          docs: add linux appimage maintainer note
          docs: add package availability section
          plugins.huya: rewrite and fix plugin
          stream.ffmpegmux: expand user in verbose-path
          ci: fix new flake8 5.0.0 linting issues
          chore: update GitHub release message body
          plugin.api.validate: more DRY schema definitions
          plugin.api.validate: add ListSchema
          plugin.api.validate: add re.Pattern validation
          plugin.api.validate: add NoneOrAllSchema
          plugins.ard_mediathek: fix plugin
          plugins.zdf_mediathek: replace regex with XPath
          plugins.tv360: rewrite plugin
          plugins.huajiao: rewrite and fix plugin
          plugins.cinergroup: rewrite and fix plugin
          plugin.api.validate: fix pattern input type
          plugin.api.validate: add RegexSchema
          plugin.api.http_session: suppress type error
          plugins: refactor validation schemas
          plugins: move and refactor validation schemas
          plugins.dlive: refactor
          plugins.cmmedia: refactor
          plugins.ltv_lsm_lv: fix plugin
          plugins.olympicchannel: rewrite
          plugins.btv: rewrite
          plugins.raiplay: refactor
          plugins.blazetv: refactor
          plugins: call schema.validate(value)
          docs: add missing changes to the 4.1.0 changelog
          plugins.deutschewelle: rewrite and fix plugin
          plugins.bloomberg: fix default US live stream
          plugins.nbc: remove plugin
          plugins.nbcsports: remove plugin
          plugins.theplatform: remove plugin
          plugin.api.validate: rework XML validators
          plugins: replace XPath f-strings with variables
          docs: add custom html_template_vars extension
          docs: add Open Graph metadata
          plugins: remove common_jwplayer module
    
    skulblakka <[email protected]> (1):
          plugins.picarto: fix streams and VODs (#4729)
    
    streamlinkbot <[email protected]> (1):
          plugin.api: update useragents
    
    Source code(tar.gz)
    Source code(zip)
    streamlink-4.3.0.tar.gz(463.07 KB)
    streamlink-4.3.0.tar.gz.asc(833 bytes)
  • 4.2.0(Jul 9, 2022)

    Release highlights:

    • Added: new Windows portable builds (#4581)
    • Added: more dependency versions to debug log header (#4575)
    • Added: parsed multivariant playlist reference to HLSStream and MuxedHLSStream (#4568)
    • Fixed: unnecessary delay when closing DASHStreams (#4630)
    • Fixed: FFmpegMuxer not closing sub-streams concurrently (#4634)
    • Fixed: threading issue when closing WebsocketClient connections (#4608)
    • Fixed: handling of PluginErrors when outputting JSON data via --json (#4590)
    • Fixed: broken YouTube plugin when setting custom authentication headers (#4576)
    • Fixed: "source" Twitch VODs not being considered "best" (#4625)
    • Fixed: and rewritten FilmOn plugin (#4573)
    • Fixed: websocket issue in Twitcasting plugin (#4608, #4628)
    • Fixed: VK plugin (#4613, #4638)
    • Fixed: various other plugin issues (see full changelog)
    • New plugins: Aloula (#4572)
    • Removed plugins: Eltrecetv (#4593)
    • Docs: added openSUSE (#4596) and Scoop (#4600) packages
    • Docs: improved some links in CLI docs (#4623)
    • Docs: upgraded furo theme to 2022.06.04.1, require sphinx >=4, and replace recommonmark with myst-parser (#4610)
    • Build: fixed outdated python_requires value in setup.cfg (#4580)
    • Build: upgraded versioningit build dependency to >=2.0.0 <3 (#4597)

    ⚙️ Installation and configuration

    Please see the detailed installation instructions and CLI guide on Streamlink's website.

    ⚠️ PLEASE NOTE ⚠️
    Streamlink's Windows installers have been moved to streamlink/windows-installer.

    ❤️ Support

    If you think that Streamlink is useful and if you want to keep the project alive, then please consider supporting its maintainers by sending a small and optionally recurring tip via the available options.
    Your support is very much appreciated, thank you!

    🙏 Contributors

    • 34: @bastimeyer
    • 6: @mkbloke
    • 5: @back-to
    • 3: @pzhlkj6612
    • 1: @bnavigator
    • 1: @streamlinkbot

    🗒️ Full changelog

    Ben Greiner <[email protected]> (1):
          build: fix python_requires (#4580)
    
    Ian Cameron <[email protected]> (6):
          plugins.aloula: new plugin
          plugins.aloula: update login required message
          plugins.pandalive: update/fix
          plugins.vk: fix
          plugins.trovo: update URL matching, tests
          plugins.vk: add support for WAF cookie
    
    Mozi <[email protected]> (3):
          docs: change "defaults" to "default" to apply bold style
          docs: use full-length parameters to create links
          docs: make cross-link to "metadata variables" in cli docs
    
    back-to <[email protected]> (5):
          plugins.rtpa: fix 401 error, added self.title
          plugins.mediavitrina: fix invalid url_json
          plugins.idf1: fix plugin
          plugins.eltrecetv: removed
          plugins.telefe: fix livestream (#4592)
    
    bastimeyer <[email protected]> (34):
          plugins.tvtoya: rewrite plugin
          stream.hls: cache parsed multivariant playlist
          stream.hls: add methods for fetching playlists
          plugins.filmon: rewrite plugin
          cli: list all dependencies in debug output
          plugins.youtube: fix InitialPlayerResponse regex
          docs: update windows binaries section
          cli: fix pluginerror in handle_url if json is True
          ci: update deploy-docs script
          plugin.api: add update-user-agents script
          ci: add useragents workflow
          docs: remove windows portable maintainer note
          docs: add openSUSE package
          build: upgrade versioningit to >=2.0.0, <3
          docs: fix versioningit version
          docs: add scoop package
          plugin.api.websocket: don't join current thread
          plugin.api.websocket: fix typing, export opcodes
          plugins.twitcasting: fix websocket stream data
          docs: bump furo theme version to 2022.06.04.1
          docs: replace recommonmark with myst-parser
          docs: update homebrew package link
          ci: lint sphinx extensions and setup.py
          plugins.twitch: fix stream weight
          plugins.twitcasting: discard text frames
          plugins.rtve: rewrite plugin
          stream.ffmpegmux: close sub-streams concurrently
          stream.segmented: add AwaitableMixin
          tests: refactor DashStreamWorker tests
          stream.dash: update DASHStreamWorker.iter_segments
          stream.dash: update DASHStreamWriter.fetch
          plugins.vidio: rewrite plugin
          stream.hls: turn url_master into property
          release: 4.2.0
    
    streamlinkbot <[email protected]> (1):
          plugin.api: update useragents
    
    Source code(tar.gz)
    Source code(zip)
    streamlink-4.2.0.tar.gz(441.74 KB)
    streamlink-4.2.0.tar.gz.asc(833 bytes)
  • 4.1.0(May 30, 2022)

    Release highlights:

    • Improved: decryption of HLS streams (#4533)
    • Improved: HLS playlist parsing (#4540, #4552)
    • Improved: string representations of Stream implementations (#4521)
    • Fixed: new YouTube consent dialog (#4515)
    • Fixed: crunchyroll plugin (#4510)
    • Fixed: nicolive email logins (#4553)
    • Fixed: threading issue when closing segmented streams (#4517)
    • Removed: suppression of InsecureRequestWarning (#4525)
    • New plugins: blazetv (#4548), hiplayer (#4507), useetv (#4536)
    • Removed plugins: rotana (#4512)

    ⚙️ Installation and configuration

    Please see the detailed installation instructions and CLI guide on Streamlink's website.

    ⚠️ PLEASE NOTE ⚠️
    Streamlink's Windows installers have been moved to streamlink/windows-installer.

    ❤️ Support

    If you think that Streamlink is useful and if you want to keep the project alive, then please consider supporting its maintainers by sending a small and optionally recurring tip via the available options.
    Your support is very much appreciated, thank you!

    🙏 Contributors

    • 45: @bastimeyer
    • 7: @mkbloke
    • 1: @amurzeau
    • 1: @gravyboat
    • 1: @sknebel
    • 1: @yhhsin

    🗒️ Full changelog

    Alexis Murzeau <[email protected]> (1):
          tests: mock user euid to be able to run tests as root
    
    Forrest <[email protected]> (1):
          docs: clean up gravyboat donation links (#4534)
    
    Ian Cameron <[email protected]> (7):
          plugins.rotana: plugin removal
          plugins.hiplayer: new plugin
          plugins.crunchyroll: update/fix
          plugins.mildom: fix/update
          plugins.useetv: new plugin
          plugins.blazetv: new plugin
          plugin.api: update useragents
    
    Sebastian Meyer <[email protected]> (1):
          plugins.useetv: geo+subscription error messages (#4550)
    
    Sven <[email protected]> (1):
          docs: fix broken relative link
    
    bastimeyer <[email protected]> (43):
          docs: update dependencies section in install docs
          docs: use cross-reference instead of direct link
          plugins.youtube: fix consent dialog
          changelog: remove git shortlogs
          script: rewrite github release script
          script: rename github release script
          ci: use GITHUB_TOKEN for deploying to GitHub
          plugin.api.validate: refactor all + any
          plugin.api.validate: refactor get
          plugin.api.validate: refactor callable
          plugin.api.validate: fix xml_element
          plugin.api.validate: refactor Schema class
          plugin.api.validate: turn module into package
          plugin.api.validate: implement ValidationError
          plugin.api.validate: truncate error messages
          plugin.api.validate: rewrite tests
          tests: move FileStream tests
          http_session: don't disable InsecureRequestWarning
          session: fix deprecated imports
          plugin.api.http_session: add prepare_new_request
          stream: refactor to_url and string representation
          stream.hls: simplify discard logic in writer
          docs: rewrite API guide
          stream.hls: refactor segment decryption
          stream.hls_playlist: refactor M3U8Parser
          plugin.api: fix typing issues
          utils: fix typing issues
          session: fix typing issues
          options: fix typing issues
          logger: fix typing issues
          stream.dash: fix typing issues
          stream.hls: fix typing issues
          plugins: fix typing issues
          cli: fix typing issues
          tests: fix typing issues
          docs: temporarily disable intersphinx
          docs: enable intersphinx again
          chore: fix import typing issues
          tools: add mypy config
          ci: new linting config
          tests: fix typing issue in HLSStreamReadThread
          stream.hls: parse M3U8 from Response obj directly
          plugins.nicolive: fix email logins
    
    yhhsin <[email protected]> (1):
          stream.segmented: join worker+writer on close (#4517)
    
    Source code(tar.gz)
    Source code(zip)
    streamlink-4.1.0.tar.gz(437.17 KB)
    streamlink-4.1.0.tar.gz.asc(833 bytes)
  • 4.0.1(May 1, 2022)

    No code changes.
    Please see the changelog of the 4.0.0 release, as it contains breaking changes.

    • Fixed: missing source-dist tarballs on GitHub release page (#4503)

    ⚙️ Installation and configuration

    Please see the detailed installation instructions and CLI guide on Streamlink's website.

    ⚠️ PLEASE NOTE ⚠️
    Streamlink's Windows installers have been moved to streamlink/windows-installer.

    ❤️ Support

    If you think that Streamlink is useful and if you want to keep the project alive, then please consider supporting its maintainers by sending a small and optionally recurring tip via the available options.
    Your support is very much appreciated, thank you!

    bastimeyer <[email protected]> (1):
          ci: fix github deploy config
    
    Source code(tar.gz)
    Source code(zip)
    streamlink-4.0.1.tar.gz(500.95 KB)
    streamlink-4.0.1.tar.gz.asc(833 bytes)
  • 4.0.0(May 1, 2022)

    Breaking changes:

    • BREAKING: dropped support for Python 3.6 (#4442)
    • BREAKING/API: removed streamlink.plugin.api.utils module (#4467)
    • BREAKING/setup: switched to PEP 518 build system declaration and replaced versioneer in favor of versioningit (#4440)
    • BREAKING/packaging: replaced Windows installers with new ones built at streamlink/windows-installer (#4405)
      • Added: new embedded Python builds for 3.8 and 3.10, both x86 and x86_64
      • Updated: embedded FFmpeg to 5.0

    Release highlights:

    • Added: support for --record=-, for writing data to stdout while watching at the same time (#4462)
    • Added: plugin variable for --title, --output, --record and --record-and-pipe (#4437)
    • Added: missing CLI protocol parameter support for DASH streams (#4434)
    • Updated: CLI and API documentation (#4415, #4424, #4430)
    • Updated: plugin description documentation (#4391)
    • Fixed: nicolive email logins (#4380)
    • Fixed: various other plugin issues (see the changelog down below)
    • New plugins: cmmedia (#4416), htv (#4431), mdstrm (#4395), trovo (#4471)
    • Removed plugins: abweb (#4270), garena (#4460), senategov (#4458), teamliquid (#4393), tlctr (#4432), vrtbe (#4459)

    ⚙️ Installation and configuration

    Please see the detailed installation instructions and CLI guide on Streamlink's website.

    ⚠️ PLEASE NOTE ⚠️
    Streamlink's Windows installers have been moved to streamlink/windows-installer.

    ❤️ Support

    If you think that Streamlink is useful and if you want to keep the project alive, then please consider supporting its maintainers by sending a small and optionally recurring tip via the available options.
    Your support is very much appreciated, thank you!

    Ekang Monyet <[email protected]> (1):
          plugins.nicolive: fix timeshift-offset option
    
    Ian Cameron <[email protected]> (7):
          plugins: add missing "description" metadata tags
          plugins.teamliquid: plugin removal
          plugins.cmmedia: new plugin
          docs: README.md update link to plugins list
          plugins.htv: new plugin
          cli.argparser: update help with dir/subdir creation info
          plugins.trovo: new plugin
    
    Mozi <[email protected]> (1):
          cli: add "overwrite" to --force help text (#4396)
    
    back-to <[email protected]> (4):
          plugins.mdstrm: new plugin for mdstrm.com livestreams (#4395)
          plugins.oneplusone: fix iframe
          plugins.tlctr: remove plugin
          plugins.garena: remove plugin
    
    bastimeyer <[email protected]> (34):
          chore: clean up some imports
          installer: bump python to 3.9.11
          chore: remove unneeded release script
          docs: fix CLI argument line breaks
          docs: split CLI into submenus
          installer: drop Windows installer build config
          docs: split cli/plugin, add cli/plugin/twitch
          docs: update API page, add type annotations
          plugins.dash: add support for parameters
          docs: add protocol-plugin parameters documentation
          docs: add intersphinx config
          tests: add proper tests for CLI metadata variables
          cli: add `plugin` metadata variable
          build: drop removed plugins file from package_data
          chore: drop support for Python 3.6
          build: add pyproject.toml, switch to versioningit
          build: move imports in setup.py
          plugins.cdnbg: rewrite plugin
          plugins.funimationnow: replace itertags
          plugins.vrtbe: remove plugin
          plugins.senategov: remove plugin
          cli: add support for --record=-
          chore: remove unnecessary collection.OrderedDict
          ci: fix netlify PR preview builds
          plugins.facebook: replace itertags
          plugin.api: remove utils module
          docs: update debian backports info
          plugins.showroom: fix plugin
          chore: move coverage config to pyproject.toml
          chore: clean up flake8 config
          chore: update GitHub release template
          docs: update and fix donations page
          docs: fix incorrect min setuptools version
          tests.plugins: make description metadata mandatory
    
    code-review-doctor <[email protected]> (1):
          tests: fix accidental URL string concatenation (#4387)
    
    iwconfig <[email protected]> (1):
          plugins.svtplay: oppetarkiv.se is not functional anymore (#4443)
    
    takayuki <[email protected]> (1):
          plugins.linelive: fix API URL
    
    Source code(tar.gz)
    Source code(zip)
  • 3.2.0(Mar 5, 2022)

    Release highlights:

    • Added: log message for the resolved path when writing output to file (#4336)
    • Added: new plugins for rtpa.es (#4344) and lnk.lt (#4364)
    • Changed: metadata requirements for built-in plugins (#4374)
    • Improved: plugins documentation (#4374)
    • Fixed: filmon plugin, requires at least OpenSSL 1.1.0 (#4335, #4345)
    • Fixed: mildom plugin (#4375)
    • Fixed: nicolive email logins with confirmation codes (#4380)
    • Fixed: various other plugin issues, see the changelog down below
    • Upgraded: Windows installer's Python and dependency versions (#4330, #4347)

    Installation

    See the detailed installation instructions on Streamlink's website.

    Supporting Streamlink

    If you think that this application is helpful, please consider supporting the maintainers by donating via the Open collective. Not only becoming a backer, but also a sponsor for the (open source) project.

    Dylan <[email protected]> (1):
          typo of "steams" to "streams" in opencv-face.py
    
    Ian Cameron <[email protected]> (3):
          plugin.api.http_session: add class TLSSecLevel1Adapter()
          plugins.filmon: fix/update
          docs: correct minor typo
    
    Justinas Stankevičius <[email protected]> (1):
          plugins.lnk: add new plugin (#4364)
    
    back-to <[email protected]> (1):
          plugins.nicolive: fix login via email (#4380)
    
    bastimeyer <[email protected]> (22):
          plugins.pluzz: fix workflow value in API schema
          installer: upgrade python from 3.9.8 to 3.9.10
          cli: log resolved file output path
          plugins.rtpa: add new plugin
          installer: update wheels to latest versions
          plugins.pandalive: fix plugin
          plugins.ard_live: fix live.daserste.de inputs
          tests.plugins: implement should_match_groups
          tests.plugins: test URL capture groups
          plugins.goltelevision: fix API URL
          tests: rewrite TestPlugins using pytest fixtures
          tests: add parametrized TestPluginTests
          tests: add parametrized TestRemovedPluginsFile
          tests: move global plugin arguments test
          docs: update Streamlink Twitch GUI image
          docs: fix GithubReferences transform
          docs: add icon to external links
          plugins: add metadata header comments
          docs: rename plugin_matrix to plugins
          docs: dynamically build list of plugins
          docs: update developing page
          docs: fix plugin metadata example
    
    fireattack <[email protected]> (1):
          plugins.openrectv: get URLs from subs_trial_media (#4349)
    
    vvto33 <[email protected]> (1):
          plugins.mildom: get token for livestream (#4375)
    
    Source code(tar.gz)
    Source code(zip)
    streamlink-3.2.0.exe(38.30 MB)
    streamlink-3.2.0.tar.gz(505.42 KB)
    streamlink-3.2.0.tar.gz.asc(833 bytes)
  • 3.1.1(Jan 25, 2022)

    Patch release:

    • Fixed: broken streamlink.exe/streamlinkw.exe executables in Windows installer (#4308)

    Installation

    See the detailed installation instructions on Streamlink's website.

    Supporting Streamlink

    If you think that this application is helpful, please consider supporting the maintainers by donating via the Open collective. Not only becoming a backer, but also a sponsor for the (open source) project.

    Mozi <[email protected]> (1):
          cli: tell users the stream could be saved or piped
    
    back-to <[email protected]> (1):
          plugins.twitcasting: Fix error messages
    
    bastimeyer <[email protected]> (1):
          installer: set pynsist to 2.7 and distlib to 0.3.3
    
    Source code(tar.gz)
    Source code(zip)
    streamlink-3.1.1.exe(38.09 MB)
    streamlink-3.1.1.tar.gz(499.01 KB)
    streamlink-3.1.1.tar.gz.asc(833 bytes)
  • 3.1.0(Jan 22, 2022)

    Release highlights:

    • Changed: file overwrite prompt to wait for user input before opening streams (#4252)
    • Fixed: log messages appearing in --json output (#4258)
    • Fixed: keep-alive TCP connections when filtering out HLS segments (#4229)
    • Fixed: sort order of DASH streams with the same video resolution (#4220)
    • Fixed: HLS segment byterange offsets (#4301, #4302)
    • Fixed: YouTube /live URLs (#4222)
    • Fixed: UStream websocket address (#4238)
    • Fixed: Pluto desync issues by filtering out bumper segments (#4255)
    • Fixed: various plugin issues - please see the changelog down below
    • Removed plugins: abweb (#4270), latina (#4269), live_russia_tv (#4263), liveme (#4264)

    Installation

    See the detailed installation instructions on Streamlink's website.

    Supporting Streamlink

    If you think that this application is helpful, please consider supporting the maintainers by donating via the Open collective. Not only becoming a backer, but also a sponsor for the (open source) project.

    Christian Kündig <[email protected]> (1):
          plugins.yupptv: override encoding, set Origin header (#4261)
    
    Ian Cameron <[email protected]> (4):
          plugins.pluto: rewrite/fix
          plugins.albavision: fix/update
          plugins.albavision: update plugin_matrix.rst
          plugins.pluto: add filtering of bumper segments
    
    PleasantMachine9 <[email protected]> (1):
          stream.hls: read and discard filtered sequences properly
    
    back-to <[email protected]> (8):
          stream.dash: sort video duplicated resolutions by bandwidth
          plugins.onetv: added support for channel with different timezone +4
          plugins.ceskatelevize: Fix Livestreams
          plugins.mediavitrina: better support for different channel names
          plugins.live_russia_tv: removed outdated plugin
          plugins.liveme: removed
          plugins.abweb: removed
          plugins.dogus: update and cleanup
    
    bastimeyer <[email protected]> (21):
          plugins.youtube: fix metadata on /live URLs
          plugins.ustreamtv: fix websocket address
          plugins.steam: refactor plugin
          plugins.stadium: rewrite
          cli: create file output before opening the stream
          logger: change NONE loglevel to sys.maxsize
          cli.console: ignore msg() calls if json=True
          tests: fix named pipe being created in CLI tests
          plugins.vtvgo: remove itertags
          plugins.vk: rewrite and remove itertags
          plugins.latina: remove plugin
          plugins.streann: remove itertags
          plugins.nos: remove itertags
          tests: rewrite plugins_meta tests
          2022
          plugins.foxtr: fix regex
          plugins.delfi: rewrite plugin
          plugins.twitch: fix pluginmatcher regex
          docs: fix linux package infos
          stream.hls: fix byterange parser
          stream.hls: refactor segment byterange calculation
    
    zappepappe <[email protected]> (1):
          plugins.svtplay: fix live channel URL matching (#4219)
    
    Source code(tar.gz)
    Source code(zip)
    streamlink-3.1.0.exe(38.09 MB)
    streamlink-3.1.0.tar.gz(498.81 KB)
    streamlink-3.1.0.tar.gz.asc(833 bytes)
  • 3.0.3(Nov 27, 2021)

    Patch release:

    • Fixed: broken output of the --help CLI argument (#4213)
    • Fixed: parsing of invalid HTML5 documents (#4210)

    Please see the changelog of 3.0.0, as it contains breaking changes that may require user interaction.

    Installation

    See the detailed installation instructions on Streamlink's website.

    Supporting Streamlink

    If you think that this application is helpful, please consider supporting the maintainers by donating via the Open collective. Not only becoming a backer, but also a sponsor for the (open source) project.

    bastimeyer <[email protected]> (3):
          utils.parse: parse invalid XHTML5 documents
          cli: prioritize --help and fix its output
          plugins.youtube: add category metadata
    
    Source code(tar.gz)
    Source code(zip)
    streamlink-3.0.3.exe(38.10 MB)
    streamlink-3.0.3.tar.gz(498.00 KB)
    streamlink-3.0.3.tar.gz.asc(833 bytes)
  • 3.0.2(Nov 25, 2021)

    Patch release:

    • Added: support for the id plugin metadata property (#4203)
    • Updated: Twitch access token request parameter regarding embedded ads (#4194)
    • Fixed: early SIGINT/SIGTERM signal handling (#4190)
    • Fixed: broken character set decoding when parsing HTML documents (#4201)
    • Fixed: missing home directory expansion (tilde character) in file output paths (#4204)
    • New plugin: tviplayer (#4199)

    Please see the changelog of 3.0.0, as it contains breaking changes that may require user interaction.

    Installation

    See the detailed installation instructions on Streamlink's website.

    Supporting Streamlink

    If you think that this application is helpful, please consider supporting the maintainers by donating via the Open collective. Not only becoming a backer, but also a sponsor for the (open source) project.

    back-to <[email protected]> (1):
          plugins.tviplayer: new plugin
    
    bastimeyer <[email protected]> (14):
          cli: override default signal handlers
          chore: add GH gist link to issue templates
          plugins.twitch: set playerType back to embed
          plugins.twitch: add type annotations
          plugins.twitch: avg duration for prefetch segments
          plugins.ard_mediathek: rewrite plugin
          utils.parse: fix encoding in parse_html
          plugins.ard_mediathek: fix plugin
          cli: expand user in file output paths
          cli.output: remove MPV title variable escape logic
          plugin: add 'id' metadata property
          plugins.youtube: add 'id' metadata
          plugins.twitch: add 'id' metadata
          docs: add dedicated metadata variables section
    
    kyldery <[email protected]> (1):
          plugins.crunchyroll: add metadata attributes (#4185)
    
    Source code(tar.gz)
    Source code(zip)
    streamlink-3.0.2.exe(38.10 MB)
    streamlink-3.0.2.tar.gz(497.02 KB)
    streamlink-3.0.2.tar.gz.asc(833 bytes)
  • 3.0.1(Nov 17, 2021)

    Patch release:

    • Fixed: broken pycountry import in Windows installer's Python environment (#4180)

    Please see the changelog of 3.0.0 for all the breaking and regular changes of this major release.

    Installation

    See the detailed installation instructions on Streamlink's website.

    Supporting Streamlink

    If you think that this application is helpful, please consider supporting the maintainers by donating via the Open collective. Not only becoming a backer, but also a sponsor for the (open source) project.

    bastimeyer <[email protected]> (1):
          installer: rewrite wheels config, fix pycountry
    
    Source code(tar.gz)
    Source code(zip)
    streamlink-3.0.1.exe(38.09 MB)
    streamlink-3.0.1.tar.gz(495.25 KB)
    streamlink-3.0.1.tar.gz.asc(833 bytes)
  • 3.0.0(Nov 17, 2021)

    Breaking changes:

    • BREAKING: dropped support for RTMP, HDS and AkamaiHD streams (#4169, #4168)
      • removed the rtmp://, hds:// and akamaihd:// protocol plugins
      • removed all Flash related code
      • upgraded all plugins using these old streaming protocols
      • dropped RTMPDump dependency
    • BREAKING: removed the following CLI arguments (and respective session options): (#4169, #4168)
      • --rtmp-rtmpdump, --rtmpdump, --rtmp-proxy, --rtmp-timeout
        Users of Streamlink's Windows installer will need to update their config file.
      • --subprocess-cmdline, --subprocess-errorlog, --subprocess-errorlog-path
      • --hds-live-edge, --hds-segment-attempts, --hds-segment-threads, --hds-segment-timeout, --hds-timeout
    • BREAKING: switched from HTTP to HTTPS for all kinds of scheme-less input URLs. If a site or http-proxy doesn't support HTTPS, then HTTP needs to be set explicitly. (#4068, #4053)
    • BREAKING/API: changed Session.resolve_url() and Session.resolve_url_no_redirect() to return a tuple of a plugin class and the resolved URL instead of an initialized plugin class instance. This fixes the availability of plugin options in a plugin's constructor. (#4163)
    • BREAKING/requirements: dropped alternative dependency pycrypto and removed the STREAMLINK_USE_PYCRYPTO env var switch (#4174)
    • BREAKING/requirements: switched from iso-639+iso3166 to pycountry and removed the STREAMLINK_USE_PYCOUNTRY env var switch (#4175)
    • BREAKING/setup: disabled unsupported Python versions, disabled the deprecated test setuptools command, removed the NO_DEPS env var, and switched to declarative package data via setup.cfg (#4079, #4107, #4115 #4113)

    Release highlights:

    • Deprecated: --https-proxy in favor of a single --http-proxy CLI argument (and respective session option). Both now set the same proxy for all HTTPS/HTTP requests and websocket connections. --https-proxy will be removed in a future release. (#4120)
    • Added: official support for Python 3.10 (#4144)
    • Added: --twitch-api-header for only setting Twitch.tv API requests headers (for authentication, etc.) as an alternative to --http-header (#4156)
    • Added: BASH and ZSH completions to sdist tarball and wheels. (#4048, #4178)
    • Added: support for creating parent directories via metadata variables in file output paths (#4085)
    • Added: new WebsocketClient implementation (#4153)
    • Updated: plugins using websocket connections - nicolive, ustreamtv, twitcasting (#4155, #4164, #4154)
    • Updated: circumvention for YouTube's age verification (#4058)
    • Updated: and fixed lots of other plugins, see the detailed changelog below
    • Reverted: HLS segment downloads always being streamed, and added back --hls-segment-stream-data to prevent connection issues (#4159)
    • Fixed: URL percent-encoding for sites which require the lowercase format (#4003)
    • Fixed: XML parsing issues (#4075)
    • Fixed: broken method parameter when using the httpstream:// protocol plugin (#4171)
    • Fixed: test failures when the brotli package is installed (#4022)
    • Requirements: bumped lxml to >4.6.4,<5.0 and websocket-client to >=1.2.1,<2.0 (#4143, #4153)
    • Windows installer: upgraded Python to 3.9.8 and FFmpeg to n4.4.1 (#4176, #4124)
    • Documentation: upgraded to first stable version of the Furo theme (#4000)
    • New plugins: pandalive (#4064)
    • Removed plugins: tga (#4129), viasat (#4087), viutv (#4018), webcast_india_gov (#4024)

    Installation

    See the detailed installation instructions on Streamlink's website.

    Supporting Streamlink

    If you think that this application is helpful, please consider supporting the maintainers by donating via the Open collective. Not only becoming a backer, but also a sponsor for the (open source) project.

    Ian Cameron <[email protected]> (4):
          plugins.bbciplayer: remove HDSStream, upgrade scheme (#4041)
          plugins.pandalive: new plugin
          plugins.facebook: update onion address
          plugins.picarto: update URL regex and logic
    
    MinePlayersPE <[email protected]> (1):
          plugins.youtube: better API age-gate bypassing (#4058)
    
    back-to <[email protected]> (14):
          ci: temporary windows python 3.10 fix for missing `lxml 4.6.3` wheel
          stream.hls: Fix error msg for 'Unable to decrypt cipher ...'
          plugins.viutv: removed
          plugins.webcast_india_gov: removed
          plugins.oneplusone: cleanup and add auto session reload (#4049)
          plugins.showroom: cleanup (#4065)
          plugins.tv999: use parse_html
          plugins.ssh101: use parse_html
          plugins.app17: remove RTMPStream, cleanup
          plugins.viasat: removed
          plugins.twitch: add device-id headers (#4086)
          plugin.api: update useragents
          plugins.twitch: new plugin command --twitch-api-header
          plugins.goltelevision: fix api url and update plugin url
    
    bastimeyer <[email protected]> (70):
          docs: fix CLI argument example in manpage
          docs: bump furo docs req to 2021.09.08
          http_session: override urllib3 percent-encoding
          installer: upgrade python from 3.9.6 to 3.9.7
          tests: fix typo in pytest skipif marker
          tests: fix deprecated module imports on py310
          plugins.ardlive: rewrite plugin
          utils: replace LazyFormatter with new Formatter
          utils: move all URL methods to utils.url
          tests: fix Accept-Encoding headers in stream_json
          plugins.pluzz: rewrite plugin
          plugins: clean up imports of parse_* utils
          utils: split into submodules and fix imports
          plugins.artetv: rewrite plugin using v2 API
          plugins.bloomberg: rewrite plugin
          stream: clean up imports
          tests: move tests/streams to tests/stream
          plugins.earthcam: rewrite plugin, remove rtmp
          build: include bash and zsh completions in wheels
          plugins.picarto: fix HLS URL hostname
          utils.url: make update_scheme always update target
          plugins: fix update_scheme calls
          plugins.bfmtv: rewrite plugin using XPath
          plugins.youtube: replace itertags with XPath
          tests: fix partial coverage in can_handle_url
          session: don't override https-proxy scheme
          session: move from http to https as default scheme
          plugins.brightcove: rewrite plugin
          ci.github: add regular py310 test runners
          utils.parse: fix ignore_ns in parse_xml
          script: fix update-removed-plugins bash script
          plugins.tv5monde: remove plugin
          plugins.tv5monde: re-implement plugin
          setup: show error on older python versions
          cli: refactor FileOutput and Formatter
          plugin.api: remove StreamMapper
          plugins.okru: rewrite plugin, drop RTMP
          ci.github: switch to [email protected]
          setup: disable test command
          docs: fix Solus package link
          plugins.twitch: remove device-id headers
          installer: remove unneeded 3rd party license texts
          setup: switch to declarative package metadata
          setup: remove NO_DEPS env var
          plugin: trim metadata strings
          plugins.brightcove: add more HLS source types
          installer: bump ffmpeg to n4.4.1
          plugins.tga: remove plugin
          vendor: bump lxml to >4.6.4,<5.0
          setup: add Python 3.10 to classifiers list
          ci.github: check for unicode bidi control chars
          installer: bump lxml to 4.6.4
          logger: fix warning import and trace export
          plugin.api: implement WebsocketClient
          plugins.twitcasting: re-implement websocket client
          plugins.nicolive: re-implement plugin
          revert: stream.hls: remove hls-segment-stream-data option
          plugin.api.websocket: add reconnect method
          plugins.ustreamtv: re-implement plugin
          session.resolve_url: return plugin class + URL
          cli.main: add plugin type annotations
          plugins.twitch: refactor api-headers
          streams: remove HDS/AkamaiHD and flashmedia pkg
          stream: remove RTMP and RTMPDump dependency
          plugins.rtmp: add to removed plugins list
          stream.http: fix custom method argument
          setup: drop pycrypto support
          setup: drop iso-639/iso3166, default to pycountry
          installer: upgrade python from 3.9.7 to 3.9.8
          setup: include shell completions in sdist
    
    beardypig <[email protected]> (2):
          cli: deprecate the --https-proxy option as well as the Session options
          plugins.ltv_lsm_lv: update the plugin for the new page layout
    
    nnrm <[email protected]> (1):
          plugins.nicolive: add support for community urls
    
    vinyl-umbrella <[email protected]> (1):
          plugins.openrectv: be able to get subscription video (#4130)
    
    Source code(tar.gz)
    Source code(zip)
    streamlink-3.0.0.exe(37.91 MB)
    streamlink-3.0.0.tar.gz(495.03 KB)
    streamlink-3.0.0.tar.gz.asc(833 bytes)
  • 2.4.0(Sep 7, 2021)

    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)

    Installation

    See the detailed installation instructions on Streamlink's website.

    Supporting Streamlink

    If you think that this application is helpful, please consider supporting the maintainers by donating via the Open collective. Not only becoming a backer, but also a sponsor for the (open source) project.

    Grabien <[email protected]> (1):
          plugins.nbcnews: fix stream URL extraction (#3909)
    
    Ian Cameron <[email protected]> (2):
          plugins.huomao: plugin removal
          plugins.pluto: fix URL match for 2 letter language codes
    
    Leonardo Nascimento <[email protected]> (1):
          plugins.booyah: add support for source stream (#3969)
    
    back-to <[email protected]> (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 makeinstaller.sh
          plugins.abematv: skip invalid ad segments
          plugins.animelab: removed
          cli.argparser: Fixed ValueError for streamlink --help
    
    bastimeyer <[email protected]> (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 <[email protected]> (1):
          plugins.svtplay: fix plugin video id
    
    steven7851 <[email protected]> (1):
          plugins.app17: fix API_URL and URL match (#3989)
    
    Source code(tar.gz)
    Source code(zip)
    streamlink-2.4.0.exe(31.32 MB)
    streamlink-2.4.0.tar.gz(514.03 KB)
    streamlink-2.4.0.tar.gz.asc(833 bytes)
  • 2.3.0(Jul 26, 2021)

    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)

    Installation

    See the detailed installation instructions on Streamlink's website.

    Supporting Streamlink

    If you think that this application is helpful, please consider supporting the maintainers by donating via the Open collective. Not only becoming a backer, but also a sponsor for the (open source) project.

    Hakkin Lain <[email protected]> (1):
          stream.hls: set fallback playlist reload time to 6 seconds (#3887)
    
    back-to <[email protected]> (16):
          plugins.youtube: 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
          plugins.youtube: detect Livestreams with 'isLive'
          plugins.nimotv: use 'mStreamPkg'
    
    bastimeyer <[email protected]> (30):
          plugins.youtube: 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
          plugins.youtube: 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 <[email protected]> (1):
          plugins.tv4play: fix plugin URL regex
    
    vinyl-umbrella <[email protected]> (1):
          plugins.openrectv: update HLS URLs (#3850)
    
    Source code(tar.gz)
    Source code(zip)
    streamlink-2.3.0.exe(24.87 MB)
    streamlink-2.3.0.tar.gz(507.61 KB)
    streamlink-2.3.0.tar.gz.asc(833 bytes)
  • 2.2.0(Jun 19, 2021)

    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: mildom.com (#3584), booyah.live (#3585), mediavitrina.ru (#3743)

    • Removed plugins: ine.com (#3781), playtv.fr (#3798)

    Installation

    See the detailed installation instructions on Streamlink's website.

    Supporting Streamlink

    If you think that this application is helpful, please consider supporting the maintainers by donating via the Open collective. Not only becoming a backer, but also a sponsor for the (open source) project.

    Billy2011 <[email protected]> (2):
          plugins.mediaklikk: add m4sport.hu (#3757)
          plugins.olympicchannel: fix / rewrite
    
    DESK-coder <[email protected]> (1):
          plugins.zattoo: changes to hello_v3 and new token.js (#3773)
    
    FaceHiddenInsideTheDark <[email protected]> (1):
          plugins.funimationnow: fix subtitle language (#3752)
    
    Ian Cameron <[email protected]> (2):
          plugins.bfmtv: fix/find Brightcove video data in JS (#3662)
          plugins.booyah: new plugin
    
    back-to <[email protected]> (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 <[email protected]> (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
          plugins.youtube: clean up a bit
          plugins.youtube: update URL regex, translate URLs
          plugins.youtube: replace private API calls
          plugins.youtube: unescape consent form values
    
    shirokumacode <[email protected]> (1):
          plugins.mildom: new plugin for mildom.com (#3584)
    
    Source code(tar.gz)
    Source code(zip)
    streamlink-2.2.0.exe(35.15 MB)
    streamlink-2.2.0.tar.gz(506.57 KB)
    streamlink-2.2.0.tar.gz.asc(833 bytes)
  • 2.1.2(May 20, 2021)

    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 setup.py build (#3653)
    • Changed: HLS streams to use rounded bandwidth names (#3721)
    • Removed: plugin for hitbox.tv / smashcast.tv (#3686), tvplayer.com (#3673)

    Installation

    See the detailed installation instructions on Streamlink's website.

    Supporting Streamlink

    If you think that this application is helpful, please consider supporting the maintainers by donating via the Open collective. Not only becoming a backer, but also a sponsor for the (open source) project.

    Alexis Murzeau <[email protected]> (1):
          build: include .removed file in build
    
    Ian Cameron <[email protected]> (3):
          plugins.tvplayer: plugin removal
          plugins.picarto: rewrite/fix (#3661)
          plugins.bbciplayer: fix/update state_re regex
    
    Kagamia <[email protected]> (1):
          plugins.nicolive: fix proxy arguments (#3710)
    
    Yavuz Kömeçoğlu <[email protected]> (1):
          plugins.youtube: add html5=1 parameter (#3732)
    
    back-to <[email protected]> (3):
          plugins.youtube: fix consent dialog (#3672)
          plugins.mitele: use '_{bitrate}' and remove duplicates
          stream.hls_playlist: round BANDWIDTH and parse as int (#3721)
    
    bastimeyer <[email protected]> (7):
          plugins.youtube: 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 <[email protected]> (1):
          plugins.abematv: Fixed download problem again. (#3658)
    
    Source code(tar.gz)
    Source code(zip)
    streamlink-2.1.2.exe(35.15 MB)
    streamlink-2.1.2.tar.gz(497.35 KB)
    streamlink-2.1.2.tar.gz.asc(833 bytes)
  • 2.1.1(Mar 25, 2021)

    Patch release:

    • Fixed: test failure due to missing removed plugins file in sdist tarball (#3644).

    Installation

    See the detailed installation instructions on Streamlink's website.

    Supporting Streamlink

    If you think that this application is helpful, please consider supporting the maintainers by donating via the Open collective. Not only becoming a backer, but also a sponsor for the (open source) project.

    Sebastian Meyer <[email protected]> (1):
          build: don't build sdist/bdist quietly (#3645)
    
    bastimeyer <[email protected]> (1):
          build: include removed plugins file in sdist
    
    Source code(tar.gz)
    Source code(zip)
    streamlink-2.1.1.exe(35.14 MB)
    streamlink-2.1.1.tar.gz(498.96 KB)
    streamlink-2.1.1.tar.gz.asc(833 bytes)
  • 2.1.0(Mar 23, 2021)

    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 ahaber.com.tr and atv.com.tr (#3484), nimo.tv (#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 micous.com (#3457), ntvspor.net (#3485), btsports (#3636)
    • Dependencies: set websocket-client to >=0.58.0 (#3634)

    Installation

    See the detailed installation instructions on Streamlink's website.

    Supporting Streamlink

    If you think that this application is helpful, please consider supporting the maintainers by donating via the Open collective. Not only becoming a backer, but also a sponsor for the (open source) project.

    Alexis Murzeau <[email protected]> (1):
          docs: update Debian stable install instructions
    
    Billy2011 <[email protected]> (1):
          plugins.stadium: adaptions for new player api (#3506)
    
    Ian Cameron <[email protected]> (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 <[email protected]> (1):
          plugins.Nicolive: login before getting wss api url
    
    Miguel Valadas <[email protected]> (1):
          plugins.rtpplay: add schema and fix HLS URL (#3627)
    
    Vladimir Stavrinov <[email protected]> (1):
          plugins.oneplusone: fix iframe url pattern (#3503)
    
    alnj <[email protected]> (1):
          plugins.twitcasting: add support for private/password-protected streams (#3505)
    
    back-to <[email protected]> (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
          setup.py: require websocket-client>=0.58.0
          plugins.nicolive: fixed websocket-client
          plugins.btsports: remove plugin
    
    bastimeyer <[email protected]> (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
          2021
          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
          plugins.bloomberg: 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 CHANGELOG.md 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 <[email protected]> (1):
          plugins.abematv: Update abematv.py (#3617)
    
    fenopa <[email protected]> (1):
          installer: upgrade to python 3.8.7
    
    losuler <[email protected]> (1):
          docs: update URL to Fedora repo
    
    onde2rock <[email protected]> (1):
          plugins.bfmtv : fix rmcstory and rmcdecouverte (#3471)
    
    vinyl-umbrella <[email protected]> (1):
          plugins.openrectv: update/fix (#3583)
    
    Source code(tar.gz)
    Source code(zip)
    streamlink-2.1.0.exe(35.14 MB)
    streamlink-2.1.0.tar.gz(498.12 KB)
    streamlink-2.1.0.tar.gz.asc(833 bytes)
  • 2.0.0(Dec 22, 2020)

    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 pluto.tv (#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

    Installation

    See the detailed installation instructions on Streamlink's website.

    Supporting Streamlink

    If you think that this application is helpful, please consider supporting the maintainers by donating via the Open collective. Not only becoming a backer, but also a sponsor for the (open source) project.

    Billy2011 <[email protected]> (2):
          plugins.youtube: fix live playback (#3268)
          stream.ffmpegmux: add --ffmpeg-copyts option (#3404)
    
    Forrest Alvarez <[email protected]> (1):
          Update author email to shared email
    
    Hunter Peavey <[email protected]> (1):
          docs: update wtwitch in thirdparty list (#3286)
    
    Ian Cameron <[email protected]> (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 <[email protected]> (1):
          plugins.nrk: fix/rewrite plugin (#3318)
    
    Mark Ignacio <[email protected]> (1):
          plugins.NicoLive: add --niconico-timeshift-offset option (#3425)
    
    Martin Buck <[email protected]> (1):
          plugins.zdf_mediathek: also support 3sat mediathek
    
    Sean Greenslade <[email protected]> (1):
          plugins.picarto: explicitly detect and fail on private streams (#3278)
    
    Sebastian Meyer <[email protected]> (2):
          chore: drop support for Python 3.5 (#3269)
          ci.github: run lint step before test step (#3294)
    
    Seonjae Hyeon <[email protected]> (1):
          plugins.vlive: fix URL regex and plugin (#3315)
    
    azizLIGHT <[email protected]> (1):
          docs: fix mpv property-list link in --title description (#3342)
    
    back-to <[email protected]> (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 named_pipe.py 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 https://pluto.tv/ (#3363)
          plugins.twitch: fix ads
          plugins.twitch: fix --twitch-disable-reruns
          plugins.youtube: 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
          plugins.youtube: Fix 'ytInitialData' for channel pages
    
    bastimeyer <[email protected]> (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 <[email protected]> (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 <[email protected]> (1):
          plugins.cdnbg: simplify and fix iframes without schema
    
    smallbomb <rockon590+[email protected]> (1):
          plugins: fix radiko.py url (#3394)
    
    Source code(tar.gz)
    Source code(zip)
    streamlink-2.0.0.exe(35.28 MB)
    streamlink-2.0.0.tar.gz(486.14 KB)
    streamlink-2.0.0.tar.gz.asc(833 bytes)
  • 1.7.0(Oct 18, 2020)

    Release highlights:

    • Added: new plugins for micous.com, tv999.bg and cbsnews.com
    • 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

    Installation

    See the detailed installation instructions on Streamlink's website.

    Supporting Streamlink

    If you think that this application is helpful, please consider supporting the maintainers by donating via the Open collective. Not only becoming a backer, but also a sponsor for the (open source) project.

    Alexis Murzeau <[email protected]> (1):
          docs: use recommonmark as an extension
    
    Billy2011 <[email protected]> (3):
          plugins.zattoo: use hello api v2 for zattoo.com (#3202)
          plugins.dlive: rewrite plugin (#3239)
          utils.l10n: use DEFAULT_LANGUAGE_CODE if locale lookup fails (#3055)
    
    Forrest <[email protected]> (1):
          plugins.itvplayer: remove due to DRM (#2934)
    
    Ian Cameron <[email protected]> (8):
          plugins.mico: new plugin for http://www.micous.com/ (#3188)
          plugins.cdnbg: update url_re, plugin test, plugin matrix (#3205)
          plugins.tv999: new plugin for http://tv999.bg/live.html (#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 <[email protected]> (2):
          Improve coverage reports on codecov (#3200)
          plugins.twitch: remove platform access token param (#3220)
    
    back-to <[email protected]> (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 <[email protected]> (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 <[email protected]> (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)
    
    Source code(tar.gz)
    Source code(zip)
    streamlink-1.7.0.exe(29.25 MB)
    streamlink-1.7.0.tar.gz(711.87 KB)
    streamlink-1.7.0.tar.gz.asc(833 bytes)
  • 1.6.0(Sep 23, 2020)

    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 mrt.com.mk (#3097)
    • Changed: yupptv plugin and replaced email+pass with id+token authentication (#3116)
    • Removed: plugins for vaughnlive, pandatv, douyutv, cybergame, europaplus and startv

    Installation

    See the detailed installation instructions on Streamlink's website.

    Supporting Streamlink

    If you think that this application is helpful, please consider supporting the maintainers by donating via the Open collective. Not only becoming a backer, but also a sponsor for the (open source) project.

    Ian Cameron <[email protected]> (11):
          docs: update turkuvaz plugin matrix entry (#3114)
          docs: Add reuters.com 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 <[email protected]> (2):
          Add OBS-Streamlink into thirdparty.rst
          Apply suggestions from code review
    
    PleasantMachine9 <[email protected]> (1):
          support `python -m` cli invocation
    
    Sebastian Meyer <[email protected]> (4):
          plugins.bloomberg: 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 <[email protected]> (1):
          plugins.mrtmk: new plugin for http://play.mrt.com.mk/ (#3097)
    
    Yahya <[email protected]> (1):
          docs: update reference to minimum VLC version
    
    back-to <[email protected]> (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 <[email protected]> (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 <[email protected]> (1):
          plugins.crunchyroll: update auth logic
    
    derFogel <[email protected]> (1):
          plugins.zattoo: fix quantum tv streaming (#3108)
    
    hymer-up <[email protected]> (2):
          plugins.startv: remove plugin (#3163)
          plugins.dogus: add startv URL (#3161)
    
    Source code(tar.gz)
    Source code(zip)
    streamlink-1.6.0.exe(29.25 MB)
    streamlink-1.6.0.tar.gz(707.76 KB)
    streamlink-1.6.0.tar.gz.asc(833 bytes)
  • 1.5.0(Jul 7, 2020)

    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.

    Installation

    See the detailed installation instructions on Streamlink's website.

    Supporting Streamlink

    If you think that this application is helpful, please consider supporting the maintainers by donating via the Open collective. Not only becoming a backer, but also a sponsor for the (open source) project.

    Alexis Murzeau <[email protected]> (1):
          docs: update debian install instructions
    
    Billy2011 <[email protected]> (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 <[email protected]> (1):
          Streamlink was added to Windows Package Manager
    
    Ian Cameron <[email protected]> (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 <[email protected]> (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 <[email protected]> (1):
          plugins.nbcnews: new plugin for http://nbcnews.com/now (#2927)
    
    back-to <[email protected]> (11):
          plugins.showroom: use normal HLSStreams
          docs: remove unimportant note / file
          plugins.viasat: remove play.nova.bg 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
          plugins.youtube: 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 <[email protected]> (3):
          docs/install: fix Windows package manager
          plugins.mixer: remove plugin
          ci: run scheduled tests, ignore coverage report
    
    beardypig <[email protected]> (1):
          plugins.cdnbg: update plugin to support new sites, and remove old sites (#2912)
    
    lanroth <[email protected]> (1):
          plugins.radionet: fix plugin so it works with new page format (#3018)
    
    resloved <[email protected]> (1):
          fixed typo
    
    steven7851 <[email protected]> (1):
          plugins.app17: update API (#2969)
    
    tnira <[email protected]> (1):
          Plugin.nicolive:resolve API format change (#3061)
    
    unavailable <[email protected]> (1):
          plugins.twitch: fix call_subdomain (#2958)
    
    wiresp33d <[email protected]> (2):
          plugins.bigo: use API for video URL (#3016)
          plugins.nicolive: resolve new api format (#3039)
    
    Source code(tar.gz)
    Source code(zip)
    streamlink-1.5.0.exe(29.26 MB)
    streamlink-1.5.0.tar.gz(705.73 KB)
    streamlink-1.5.0.tar.gz.asc(833 bytes)
  • 1.4.1(Apr 24, 2020)

    No code changes. See the full 1.4.0 changelog here.

    Installation

    See the detailed installation instructions on Streamlink's website.

    Supporting Streamlink

    If you think that this application is helpful, please consider supporting the maintainers by donating via the Open collective. Not only becoming a backer, but also a sponsor for the (open source) project.

    beardypig <[email protected]> (1):
          build: include correct signing key: 0xE3DB9E282E390FA0
    
    Source code(tar.gz)
    Source code(zip)
    streamlink-1.4.1.exe(29.25 MB)
    streamlink-1.4.1.tar.gz(703.41 KB)
    streamlink-1.4.1.tar.gz.asc(833 bytes)
  • 1.4.0(Apr 22, 2020)

    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)

    Installation

    See the detailed installation instructions on Streamlink's website.

    Supporting Streamlink

    If you think that this application is helpful, please consider supporting the maintainers by donating via the Open collective. Not only becoming a backer, but also a sponsor for the (open source) project.

    Adam Baxter <[email protected]> (1):
          stream.hls_playlist: Add extra logging for invalid #EXTM3U line (#2479)
    
    Alexis Murzeau <[email protected]> (1):
          docs: fix duplicate object description of streamlink in api docs
    
    Colas Broux <[email protected]> (2):
          plugins.youtube: Fix for new Youtube VOD API (#2858)
          Updating README Applying changes from 1402fb0 to the README Closes #2880
    
    Finn <[email protected]> (1):
          plugins.invintus: Add support for Invintus Media live streams and VOD (#2845)
    
    Ian Cameron <[email protected]> (3):
          Fix tvplayer plugin and tests (#2802)
          plugins.piczel: Added HLS, Removed RTMP (#2815)
          plugins.reuters: fix (#2811)
    
    Mohamed El Morabity <[email protected]> (1):
          plugins.tf1: use new API to retrieve DASH streams (#2759)
    
    Riolu <[email protected]> (1):
          plugins.radiko: Add support for radiko.jp (#2826)
    
    Uinden <[email protected]> (1):
          plugins.wasd: new plugin for WASD.TV (#2641)
    
    YYY <[email protected]> (1):
          plugins.nicolive: new plugin for Niconico Live (#2651)
    
    Yavuz Kömeçoğlu <[email protected]> (1):
          plugins.galatasaraytv: Add support for GALATASARAY SK TV (#2760)
    
    Zhenyu Hu <[email protected]> (1):
          plugins.kugou:  Add Kugou Fanxing live plugin (#2794)
    
    back-to <[email protected]> (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 rotana.net (#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 https://zeenews.india.com/live-tv
          AUTHORS: removed unused script and removed outdated list (#2889)
    
    bastimeyer <[email protected]> (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
          plugins.bloomberg: 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 README.md
          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 <[email protected]> (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 <[email protected]> (1):
          Update Crunchyroll access token. Fixes streamlink/streamlink issue #2785.
    
    malvinas2 <[email protected]> (3):
          plugins.latina: new plugin for https://www.latina.pe/tvenvivo (#2793)
          plugins.albavision: Added support for ATV and ATVMas (#2801)
          plugins.rtve: Added support for clan tve, children's channel of RTVE (#2875)
    
    steven7851 <[email protected]> (1):
          plugins.app17: fix for new layout (#2833)
    
    tarkah <[email protected]> (1):
          stream.hls: add templating for hls-segment-key-uri option (#2821)
    
    Source code(tar.gz)
    Source code(zip)
    streamlink-1.4.0.exe(29.25 MB)
    streamlink-1.4.0.tar.gz(703.34 KB)
    streamlink-1.4.0.tar.gz.asc(833 bytes)
  • 1.3.1(Jan 27, 2020)

    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.

    Installation

    See the detailed installation instructions on Streamlink's website.

    Supporting Streamlink

    If you think that this application is helpful, please consider supporting the maintainers by donating via the Open collective. Not only becoming a backer, but also a sponsor for the (open source) project.

    Hunter Peavey <[email protected]> (4):
          Add wtwitch to list of thirdparty programs
          Try adding an image
          Move image position
          Make requested changes
    
    Vladimir Stavrinov <[email protected]> (1):
          plugins.nhkworld: the site migrates from xml to json stream data
    
    back-to <[email protected]> (6):
          docs/tests: remove python 3.4, use 3.8 and nightly for travis-ci
          plugins.bilibili: fix Livestreams with status 1 (set Referer)
          plugins.youtube: Remove itag 303
          plugins.ustream: Added support for video.ibm.com
          plugins.bbciplayer: Fixed login params
          plugins.bbciplayer: remove test_extract_nonce
    
    bastimeyer <[email protected]> (5):
          plugins.twitch: use python logging module
          plugins.twitch: fix rerun detection
          cli.output: fix mpv player parameter format
          2020
          docs: fix MPV parameters on common issues page
    
    skulblakka <[email protected]> (1):
          Allow to disable twitch reruns (#2722)
    
    Source code(tar.gz)
    Source code(zip)
    streamlink-1.3.1.exe(38.71 MB)
    streamlink-1.3.1.tar.gz(679.42 KB)
    streamlink-1.3.1.tar.gz.asc(819 bytes)
Owner
Streamlink, a CLI tool for extracting streams to a video player of your choice.
720p FPGA Media Player (RISC-V + Motion JPEG + SD + HDMI on an Artix 7)

FPGA Media Player This project is a FPGA based media player which is capable of playing Motion JPEG encoded video over HDMI or VGA on commonly availab

179 Dec 02, 2022
Youtube-dislikes-adder - Add dislikes to the description of your YouTube videos.

Add number of dislikes to the description of your YouTube videos. Number of dislikes are updated if you let this function as a bot.

fluks 1 Aug 23, 2022
A Telegram bot to convert videos into x265/x264 format via ffmpeg.

Video Encoder Bot A Telegram bot to convert videos into x265/x264 format via ffmpeg. Configuration Add values in environment variables or add them in

Adnan Ahmad 82 Jan 03, 2023
Terminal-Video-Player - A program that can display video in the terminal using ascii characters

Terminal-Video-Player - A program that can display video in the terminal using ascii characters

15 Nov 10, 2022
A youtube video link or id to video thumbnail python package.

Youtube-Video-Thumbnail A youtube video link or id to video thumbnail python package. Made with Python3

Fayas Noushad 10 Oct 21, 2022
Lightweight, zero-dependency proxy and storage RTSP server

python-rtsp-server Python-rtsp-server is a lightweight, zero-dependency proxy and storage server for several IP-cameras and multiple clients. Features

Vlad 39 Nov 23, 2022
A wrapper around ffmpeg to make it work in a concurrent and memory-buffered fashion.

Media Fixer Have you ever had a film or TV show that your TV wasn't able to play its audio? Well this program is for you. Media Fixer is a program whi

Halit Şimşek 3 May 04, 2022
Filtering user-generated video content(SberZvukTechDays)Filtering user-generated video content(SberZvukTechDays)

Filtering user-generated video content(SberZvukTechDays) Table of contents General info Team members Technologies Setup Result General info This is a

Roman 6 Apr 06, 2022
Simple background blur for your webcam

backgroundblur Simple background blur for your webcam. This script will capture your webcams output, add a blur effect to the background and output th

Stefan Wagner 4 Dec 07, 2021
MPV remote controller is a program for remote controlling mpv player with device in your local network through web browser.

MPV remote controller is a program for remote controlling mpv player with device in your local network through web browser.

5 May 26, 2022
Python retagging utility for mkv files using mkvmerge.

pyretag A python script to retag mkv files. Setting Up pip install pyfiglet pip install rich Move the mkv files to input folder.

25 Dec 04, 2022
Rune - a video miniplayer made with Python.

Rune - a video miniplayer made with Python.

1 Dec 13, 2021
Wonkey - an open source programming language for the creation of cross-platform video games

Wonkey Programming Language Wonkey is an open source programming language for the creation of cross-platform video games, highly inspired by the “Blit

Wonkey Coders 110 Nov 09, 2022
A GUI based glitch tool that uses FFMPEG to create motion interpolated glitches in your videos.

FF Dissolve Glitch This is a GUI based glitch tool that uses FFmpeg to create awesome and wierd motion interpolated glitches in videos. I call it FF d

Akash Bora 19 Nov 10, 2022
Uncompress DEFLATE streams in pure Python

stream-deflate Uncompress DEFLATE streams in pure Python. Work in progress. This README serves as a rough design spec. Installation pip install stream

Michal Charemza 7 Oct 13, 2022
A python youtube search module

A python youtube search module

Fayas Noushad 4 Dec 01, 2021
Youtube as covert-channel - Control systems remotely and execute commands by uploading videos to Youtube

covert-tube A program to control systems remotely by uploading videos to Youtube using Python to create the videos and the listener, emulating some ma

Ricardo Ruiz 101 Nov 01, 2022
A Python extension that provides bindings to WebRTC M92

This project follows the W3C specification with some modifications and additions to make it work better with Python applications, with useful APIs like programmatic audio and video.

Il'ya 104 Dec 26, 2022
Playing videos through S3 buckets (Wasabi, AWS, etc.) through client-side VideoJS player

Playing videos through S3 buckets (Wasabi, AWS, etc.) through client-side VideoJS player without incurring ingress/egree traffic on EC2 Instance.

Syed Umar Arfeen 8 Mar 28, 2022
Add a "flame" effect on each hand's index onto a video stream.

Add a "flame" effect on each hand's index onto a video stream. recording.webm.mov This script is just a quick hack, it's a bit of glue between mediapi

Paul Willot 7 Sep 15, 2022