1{
2 lib,
3 python3Packages,
4 fetchPypi,
5 replaceVars,
6 ffmpeg,
7 extras ? [
8 "decompress"
9 ],
10}:
11
12python3Packages.buildPythonApplication rec {
13 pname = "streamlink";
14 version = "7.5.0";
15 pyproject = true;
16
17 src = fetchPypi {
18 inherit pname version;
19 hash = "sha256-wJG8d6PMjhKaIy2z4sjYuuLf75aBP83sYu4CB5QGj7k=";
20 };
21
22 patches = [
23 (replaceVars ./ffmpeg-path.patch {
24 ffmpeg = lib.getExe ffmpeg;
25 })
26 ];
27
28 nativeBuildInputs = with python3Packages; [
29 setuptools
30 ];
31
32 nativeCheckInputs = with python3Packages; [
33 pytestCheckHook
34 mock
35 requests-mock
36 freezegun
37 pytest-trio
38 ];
39
40 disabledTests = [
41 # requires ffmpeg to be in PATH
42 "test_no_cache"
43 ];
44
45 propagatedBuildInputs =
46 with python3Packages;
47 [
48 certifi
49 isodate
50 lxml
51 pycountry
52 pycryptodome
53 pysocks
54 requests
55 trio
56 trio-websocket
57 urllib3
58 websocket-client
59 ]
60 ++ lib.attrVals extras optional-dependencies;
61
62 optional-dependencies = with python3Packages; {
63 decompress = urllib3.optional-dependencies.brotli ++ urllib3.optional-dependencies.zstd;
64 };
65
66 meta = {
67 changelog = "https://streamlink.github.io/changelog.html";
68 description = "CLI for extracting streams from various websites to video player of your choosing";
69 homepage = "https://streamlink.github.io/";
70 longDescription = ''
71 Streamlink is a CLI utility that pipes videos from online
72 streaming services to a variety of video players such as VLC, or
73 alternatively, a browser.
74
75 Streamlink is a fork of the livestreamer project.
76 '';
77 license = lib.licenses.bsd2;
78 mainProgram = "streamlink";
79 maintainers = with lib.maintainers; [
80 dezgeg
81 zraexy
82 DeeUnderscore
83 ];
84 };
85}