docs: rewrite install page

- Add header grid-cards for quickly choosing the OS or PyPI package
- Rename "AppImages" section to "Linux AppImages"
- Greatly reduce noise in the "Windows binaries" and "Linux AppImages"
  sections by replacing texts and lists with grid-cards and tables,
  and remove "stable/nightly builds" sub-sections respectively
- Add SVG logos for Python and FFmpeg, obtained from original sources,
  with slight modifications and optimizations applied
- Move up "Dependencies" section by one level
- Rewrite some texts for better clarity and fix some grammar errors
- Upgrade font-awesome from 5 to 6
This commit is contained in:
bastimeyer 2023-02-18 00:22:21 +01:00 committed by Forrest
parent f5d2828a08
commit b1a580b4e2
5 changed files with 301 additions and 96 deletions

24
docs/_static/icon-ffmpeg.svg vendored Normal file
View File

@ -0,0 +1,24 @@
<svg xmlns="http://www.w3.org/2000/svg" width="61.351" height="58.39" overflow="visible" xml:space="preserve">
<!-- svgo optimized/prettified, removed text: https://trac.ffmpeg.org/raw-attachment/wiki/SubmitALogo/ffmpeg-logo.svg -->
<path fill="#0B4819" d="M.511 12.364V5.078l4.891 1.685v6.778zM4.455 42.317V15.226l4.675.989v25.178z"/>
<path fill="#105C80" d="m55.516 44.305-3.35 3.149 8.496.459v8.068l-26.65-2.064 13.585-13.179v-6.495L28.175 53.465 4.919 51.667 42.222 11.55l-6.139.332L9.13 41.393V16.215l2.553-3.014-6.281.34V6.763l21.919-1.697-12.015 13.78v5.864l17.82-20.093 28.225-2.185-41.517 43.274 5.527.291 30.155-30.843z"/>
<path fill="#0B4819" d="m4.455 15.226 2.704-3.255 4.524 1.23-2.553 3.014z"/>
<path fill="#084010" d="m11.004 18.039 4.302.807v5.864l-4.302-.352z"/>
<path fill="#0C541E" d="m15.82 47.006 4.014-1.3 5.527.291-3.647 1.349z"/>
<path fill="#1A5C34" d="m23.808 3.106 3.513 1.96-12.015 13.78-4.302-.807z"/>
<path fill="#0B4819" d="M11.004 24.358 30.022 2.58l3.104 2.037-17.82 20.093z"/>
<path fill="#1A5C34" d="m33.195 10.432 2.888 1.45L9.13 41.393l-4.675.924z"/>
<path fill="#0B4819" d="m0 53.344 39.798-43.302 2.424 1.508L4.919 51.667z"/>
<path fill="#1A5C34" d="m45.597 34.677 2-.434-19.422 19.222-3.454 1.972z"/>
<path fill="#0B4819" d="M45.597 41.737v-7.06l2-.434v6.495z"/>
<path fill="#0B4819" d="m30.973 55.965 14.624-14.228 2-.999-13.585 13.179z"/>
<path fill="#13802D" d="m54.168 45.648-3.63 3.411 1.628-1.605 3.35-3.149z"/>
<path fill="#0B4819" d="M21.714 47.346 54.168 13.9l1.348 1.254-30.155 30.843z"/>
<path fill="#084010" d="m54.168 13.9 1.348 1.254v29.151l-1.348 1.343zM59.759 49.604l.903-1.691v8.068l-.903 2.422z"/>
<path fill="#1A5C34" d="m60.507 0 .844 2.432-41.517 43.274-4.014 1.3z"/>
<radialGradient id="a" cx="-122.394" cy="442.723" r="29.58" fx="-122.394" fy="442.723" gradientTransform="matrix(1 0 0 -1 134.446 453.733)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#fff"/>
<stop offset="1" style="stop-color:#007808"/>
</radialGradient>
<path fill="url(#a)" d="m54.168 45.648-3.63 3.411 9.221.545v8.799l-28.786-2.438 14.624-14.228v-7.06l-20.876 20.76L0 53.344l39.798-43.302-6.603.39-28.74 31.885V15.226l2.704-3.255-6.648.393V5.078l23.297-1.972-12.804 14.933v6.319L30.022 2.58 60.507 0 15.82 47.006l5.894.34L54.168 13.9z"/>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

12
docs/_static/icon-python.svg vendored Normal file
View File

@ -0,0 +1,12 @@
<svg width="238" height="237" xmlns="http://www.w3.org/2000/svg" overflow="hidden">
<!-- svgo optimized/prettified: https://raw.githubusercontent.com/python/cpython/v3.11.0/PC/icons/logo.svg -->
<defs>
<clipPath id="a">
<path d="M706-314h238v237H706z" fill-rule="evenodd" clip-rule="evenodd"/>
</clipPath>
</defs>
<g clip-path="url(#a)" transform="translate(-706 314)" fill-rule="evenodd">
<path d="M792.441-295.763c-5.945 0-10.744 4.784-10.744 10.701 0 5.896 4.799 10.68 10.744 10.68 5.924 0 10.743-4.784 10.743-10.68 0-5.917-4.819-10.701-10.743-10.701zm31.031-17.235c9.805-.045 20.012.669 29.864 2.274C868.899-308.185 882-296.728 882-281.516v53.444c0 15.674-12.718 28.515-28.664 28.515H796.03c-19.45 0-35.841 16.388-35.841 34.916V-139h-19.704c-16.668 0-26.371-11.877-30.448-28.494-5.499-22.326-5.265-35.63 0-57.011 4.565-18.654 19.152-28.495 35.82-28.495h78.836v-7.134h-57.328v-21.382c0-16.199 4.395-25.011 28.665-29.208 8.238-1.427 17.638-2.229 27.442-2.274z" fill="#366A96"/>
<path d="M857.377-117.071c-5.911 0-10.722 4.804-10.722 10.723 0 5.942 4.811 10.745 10.722 10.745 5.933 0 10.722-4.803 10.722-10.745 0-5.919-4.789-10.723-10.722-10.723zM889.563-253h21.444c16.655 0 24.495 12.304 28.607 28.61 5.72 22.647 5.975 39.586 0 57.242-5.786 17.148-11.972 28.609-28.607 28.609h-85.796v7.164h57.191v21.467c0 16.264-14.197 24.502-28.606 28.61-21.676 6.195-39.074 5.247-57.19 0C781.476-85.68 768-94.632 768-109.907v-53.66c0-15.442 12.947-28.631 28.606-28.631h57.19c19.05 0 35.767-16.369 35.767-35.772z" fill="#FFC836"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -89,18 +89,18 @@ strong.command {
font-style: normal;
}
a[href^="http://"]:not(.muted-link),
a[href^="https://"]:not(.muted-link):not([href^="https://streamlink.github.io/"]) {
a[href^="http://"]:not(.muted-link):not(.sd-badge),
a[href^="https://"]:not(.muted-link):not(.sd-badge):not([href^="https://streamlink.github.io/"]) {
display: inline-block;
word-break: break-word;
}
a[href^="http://"]:not(.no-external-link-icon):not(.muted-link)::after,
a[href^="https://"]:not(.no-external-link-icon):not(.muted-link):not([href^="https://streamlink.github.io/"])::after {
a[href^="http://"]:not(.no-external-link-icon):not(.muted-link):not(.sd-badge)::after,
a[href^="https://"]:not(.no-external-link-icon):not(.muted-link):not(.sd-badge):not([href^="https://streamlink.github.io/"])::after {
content: "\f35d";
display: inline-block;
padding-left: .4em;
font: 900 .6em "Font Awesome 5 Free";
font: 900 .6em "Font Awesome 6 Free";
vertical-align: middle;
text-decoration: none;
}
@ -288,6 +288,22 @@ table.table-custom-layout.table-custom-layout-dependencies tbody td {
Content
*/
.installation-grid .fab {
font-size: 5em;
}
.grid-with-icons .fas {
padding-right: 0.1em;
font-size: 1.75em;
vertical-align: middle;
}
.grid-with-images img {
width: auto;
max-height: 3em;
filter: grayscale(1);
}
.team-members {
display: flex;
list-style: none;

View File

@ -160,10 +160,10 @@ html_logo = "../icon.svg"
html_static_path = ['_static']
html_css_files = [
'styles/custom.css',
'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/fontawesome.min.css',
'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/solid.min.css',
'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/brands.min.css',
"styles/custom.css",
"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/fontawesome.min.css",
"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/solid.min.css",
"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/brands.min.css",
]
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,

View File

@ -2,13 +2,54 @@
<br />
.. |icon-download| raw:: html
<i class="fa fa-download"></i>
Installation
============
.. sphinx-design currently doesn't support autosectionlabel, so set labels for the following sections explicitly
.. grid:: 4
:padding: 0
:class-container: installation-grid
.. grid-item-card::
:link: windows
:link-type: ref
:link-alt: Windows
:padding: 3
:text-align: center
:fab:`windows`
.. grid-item-card::
:link: macos
:link-type: ref
:link-alt: macOS
:padding: 3
:text-align: center
:fab:`apple`
.. grid-item-card::
:link: linux-and-bsd
:link-type: ref
:link-alt: Linux and BSD
:padding: 3
:text-align: center
:fab:`linux`
.. grid-item-card::
:link: pypi-package-and-source-code
:link-type: ref
:link-alt: PyPI package and source code
:padding: 3
:text-align: center
:fab:`python`
.. _windows:
Windows
-------
@ -21,7 +62,7 @@ Installers See the `Windows binaries`_ section below
Portable See the `Windows binaries`_ section below
Nightly builds See the `Windows nightly builds`_ section below
Nightly builds See the `Windows binaries`_ section below
Python pip See the `PyPI package and source code`_ section below
@ -52,6 +93,9 @@ Python pip See the `PyPI package and source code`_ sec
.. _Installing Scoop packages: https://scoop.sh
.. _Installing Winget packages: https://docs.microsoft.com/en-us/windows/package-manager/
.. _macos:
macOS
-----
@ -73,6 +117,8 @@ Python pip See the `PyPI package and source code`_ sec
.. _Installing Homebrew packages: https://brew.sh
.. _linux-and-bsd:
Linux and BSD
-------------
@ -81,9 +127,9 @@ Linux and BSD
==================================== ===========================================
Distribution Installing
==================================== ===========================================
AppImage See the `AppImages`_ section below
AppImage See the `Linux AppImages`_ section below
AppImage nightly builds See the `AppImage nightly builds`_ section below
AppImage nightly builds See the `Linux AppImages`_ section below
Python pip See the `PyPI package and source code`_ section below
@ -193,23 +239,25 @@ Package availability
Packaging is not done by the Streamlink maintainers themselves except for
the `PyPI package <PyPI package and source code_>`_,
the `Windows installers + portable builds <Windows binaries_>`_,
and the `Linux AppImages <AppImages_>`_.
and the `Linux AppImages <Linux AppImages_>`_.
If a packaged release of Streamlink is not available for your operating system / distro or your system's architecture,
or if it's out of date or broken, then please contact the respective package maintainers or package-repository maintainers
of your operating system / distro, as it's up to them to add, update, or fix those packages.
Users of glibc-based Linux distros can find up-to-date Streamlink releases via the available `AppImages`_.
Users of glibc-based Linux distros can find up-to-date Streamlink releases via the available `AppImages <Linux AppImages>`_.
Please open an issue or pull request on GitHub if an **available**, **maintained** and **up-to-date** package is missing
from the install docs.
.. _pypi-package-and-source-code:
PyPI package and source code
----------------------------
If a package is not available on your platform, or if it's out of date,
Streamlink can be installed via `pip`_, the Python package manager.
then Streamlink can be installed via `pip`_, the Python package manager.
Before running :command:`pip`, make sure that it's the Python 3 version of `pip`_ (to check, run :command:`pip --version`).
On some systems, this isn't the case by default and an alternative, like :command:`pip3` for example, needs to be run instead.
@ -220,8 +268,8 @@ On some systems, this isn't the case by default and an alternative, like :comman
only for the current user** (see the ``--user`` parameter below), since system-wide packages can cause conflicts with
the system's regular package manager.
Those user-packages will be installed into ``~/.local`` instead of ``/usr`` and entry-scripts for
running the programs can be found in ``~/.local/bin``, eg. ``~/.local/bin/streamlink``.
Those user-packages will be installed into ``~/.local`` instead of ``/usr``, and entry-scripts for
running the programs can be found in ``~/.local/bin``, e.g. ``~/.local/bin/streamlink``.
In order for the command line shell to be able to find these executables, the user's ``PATH`` environment variable
needs to be extended. This can be done by adding ``export PATH="${HOME}/.local/bin:${PATH}"``
@ -234,21 +282,21 @@ Version Installing
==================================== ===========================================
`Latest release`_ .. code-block:: bash
pip install --user --upgrade streamlink
pip install --user -U streamlink
`Master branch`_ .. code-block:: bash
pip install --user --upgrade git+https://github.com/streamlink/streamlink.git
pip install --user -U git+https://github.com/streamlink/streamlink.git
`Specific tag/branch or commit`_ .. code-block:: bash
`Specific tag/branch/commit`_ .. code-block:: bash
pip install --user --upgrade git+https://github.com/USERNAME/streamlink.git@BRANCH-OR-COMMIT
pip install --user -U git+https://github.com/USERNAME/streamlink.git@REVISION
==================================== ===========================================
.. _pip: https://pip.pypa.io/en/stable/
.. _Latest release: https://pypi.python.org/pypi/streamlink
.. _Master branch: https://github.com/streamlink/streamlink/commits/master
.. _Specific tag/branch or commit: https://pip.pypa.io/en/stable/reference/pip_install/#git
.. _Specific tag/branch/commit: https://pip.pypa.io/en/stable/reference/pip_install/#git
Virtual environment
-------------------
@ -303,7 +351,7 @@ install it first, either with a system package manager, or using ``pip``, as det
.. _pipx: https://pypa.github.io/pipx/
Dependencies
^^^^^^^^^^^^
------------
To install Streamlink from source you will need these dependencies.
@ -364,103 +412,211 @@ optional `FFmpeg`_ Required for `muxing`_ multiple video/audio/
Windows binaries
----------------
Windows installers and portable archives for Streamlink are built at `streamlink/windows-builds`_,
with support for different architectures and different Python versions.
.. grid:: 2
:padding: 0
:class-container: grid-with-icons
These installers and portable archives contain:
.. grid-item-card::
:padding: 3
:link: https://github.com/streamlink/windows-builds/releases
:link-alt: Windows stable releases
:text-align: center
- an embedded Python version, built at `streamlink/python-windows-embed`_
- Streamlink and its dependencies
- FFmpeg, required for muxing streams, built at `streamlink/FFmpeg-Builds`_
**Windows stable releases**
^^^
:fas:`download` GitHub releases page
and they are available in the following flavors:
The most recent Streamlink release
- Latest Python - x86_64 (64 bit) - recommended
- Latest Python - x86 (32 bit)
- Python 3.8 - x86_64 (64 bit) - for Windows 7
- Python 3.8 - x86 (32 bit) - for Windows 7
.. grid-item-card::
:padding: 3
:link: https://github.com/streamlink/windows-builds/actions?query=event%3Aschedule+is%3Asuccess+branch%3Amaster
:link-alt: Windows nightly builds
:text-align: center
**Windows nightly builds**
^^^
:fas:`download` GitHub actions build artifacts
Built once each day at midnight UTC |br| :sub:`GitHub account required`
**Flavors**
.. list-table::
:header-rows: 2
:stub-columns: 1
:width: 100%
* -
- Installer
-
- Portable
-
* -
- 64 bit
- 32 bit
- 64 bit
- 32 bit
* - Latest Python
- :bdg-link-success-line:`Windows 10+ <https://github.com/streamlink/windows-builds/releases>`
- :bdg-link-primary-line:`Windows 10+ <https://github.com/streamlink/windows-builds/releases>`
- :bdg-link-success-line:`Windows 10+ <https://github.com/streamlink/windows-builds/releases>`
- :bdg-link-primary-line:`Windows 10+ <https://github.com/streamlink/windows-builds/releases>`
* - Python 3.8
- :bdg-link-secondary-line:`Windows 7 <https://github.com/streamlink/windows-builds/releases>`
- :bdg-link-secondary-line:`Windows 7 <https://github.com/streamlink/windows-builds/releases>`
- :bdg-link-secondary-line:`Windows 7 <https://github.com/streamlink/windows-builds/releases>`
- :bdg-link-secondary-line:`Windows 7 <https://github.com/streamlink/windows-builds/releases>`
**Contents**
.. grid:: 3
:padding: 0
:class-container: grid-with-images
.. grid-item-card::
:padding: 3
:link: https://github.com/streamlink/python-windows-embed
:link-alt: Embedded Python build
:text-align: center
.. image:: _static/icon-python.svg
:alt: Python
Python |br| :sub:`embedded build`
.. grid-item-card::
:padding: 3
:link: https://github.com/streamlink/streamlink
:link-alt: Streamlink and its runtime dependencies
:text-align: center
.. image:: _static/icon.svg
:alt: Streamlink
Streamlink |br| :sub:`and dependencies`
.. grid-item-card::
:padding: 3
:link: https://github.com/streamlink/FFmpeg-Builds
:link-alt: FFmpeg, required for muxing streams
:text-align: center
.. image:: _static/icon-ffmpeg.svg
:alt: FFmpeg
FFmpeg |br| :sub:`for muxing streams`
.. note::
The installers automatically create a :ref:`config file <cli/config:Configuration file>` if it doesn't exist yet and set the
value of the :option:`--ffmpeg-ffmpeg` CLI parameter to the path of the included FFmpeg binary. The portable archives
can't do that, and users need to do that themselves.
can't do that, and users need to create or update the config file themselves.
Please see the README of the `streamlink/windows-builds`_ repository for further information.
Windows stable builds
^^^^^^^^^^^^^^^^^^^^^
|icon-download| `streamlink/windows-builds releases page <windows-stable_>`_
Windows nightly builds
^^^^^^^^^^^^^^^^^^^^^^
|icon-download| `streamlink/windows-builds nightly builds artifacts <windows-nightly_>`_
Built once each day at midnight UTC from Streamlink's `master branch <streamlink-master_>`_. |br|
This includes the most recent changes, but is not considered "stable". |br|
A GitHub account is required in order to access build artifacts.
:fas:`triangle-exclamation` Please see the README of the `streamlink/windows-builds`_ repository for more information
about the differences between the installers and portable archives.
.. _streamlink/windows-builds: https://github.com/streamlink/windows-builds
.. _streamlink/python-windows-embed: https://github.com/streamlink/python-windows-embed
.. _streamlink/FFmpeg-Builds: https://github.com/streamlink/FFmpeg-Builds
.. _windows-stable: https://github.com/streamlink/windows-builds/releases
.. _windows-nightly: https://github.com/streamlink/windows-builds/actions?query=event%3Aschedule+is%3Asuccess+branch%3Amaster
AppImages
---------
Linux AppImages
---------------
Linux AppImages for Streamlink are built at `streamlink/streamlink-appimage`_.
.. grid:: 2
:padding: 0
:class-container: grid-with-icons
These AppImages contain:
.. grid-item-card::
:padding: 3
:link: https://github.com/streamlink/streamlink-appimage/releases
:link-alt: AppImage stable releases
:text-align: center
- a Python environment
- Streamlink and its dependencies
**AppImage stable releases**
^^^
:fas:`download` GitHub releases page
and they are available for the following CPU architectures:
The most recent Streamlink release
- x86_64
- i686
- aarch64
.. grid-item-card::
:padding: 3
:link: https://github.com/streamlink/streamlink-appimage/actions?query=event%3Aschedule+is%3Asuccess+branch%3Amaster
:link-alt: AppImage nightly builds
:text-align: center
1. **Download the latest Streamlink AppImage matching your CPU architecture**
**AppImage nightly builds**
^^^
:fas:`download` GitHub actions build artifacts
If unsure, run :command:`uname -m` to check the CPU's architecture.
Built once each day at midnight UTC |br| :sub:`GitHub account required`
2. **Set the executable flag**
**Architectures**
This can either be done in a regular file browser, or a command line shell via :command:`chmod +x filename`.
.. grid:: 3
:padding: 0
.. grid-item-card::
:padding: 3
:text-align: center
:bdg-link-success-line:`x86_64 <https://github.com/streamlink/streamlink-appimage/releases>`
.. grid-item-card::
:padding: 3
:text-align: center
:bdg-link-success-line:`aarch64 <https://github.com/streamlink/streamlink-appimage/releases>`
.. grid-item-card::
:padding: 3
:text-align: center
:bdg-link-primary-line:`i686 <https://github.com/streamlink/streamlink-appimage/releases>`
**Contents**
.. grid:: 2
:padding: 0
:class-container: grid-with-images
.. grid-item-card::
:padding: 3
:link: https://github.com/streamlink/appimage-buildenv
:link-alt: Python from the pypa/manulinux docker images
:text-align: center
.. image:: _static/icon-python.svg
:alt: Python
Python |br| :sub:`from the pypa/manylinux docker images`
.. grid-item-card::
:padding: 3
:link: https://github.com/streamlink/streamlink
:link-alt: Streamlink and its runtime dependencies
:text-align: center
.. image:: _static/icon.svg
:alt: Streamlink
Streamlink |br| :sub:`and dependencies`
**How-To**
1. Download the AppImage file matching your CPU architecture (run :command:`uname -m` to check)
2. Set the executable flag via a file browser or :command:`chmod +x filename` from a command-line shell
.. code-block:: bash
# AppImage file names include the release version, Python version, platform name and CPU architecture
chmod +x streamlink-2.0.0-1-cp39-cp39-manylinux2014_x86_64.AppImage
chmod +x streamlink-5.3.0-1-cp311-cp311-manylinux2014_x86_64.AppImage
3. **Run the AppImage**
Set any command-line parameters supported by Streamlink, e.g. :option:`--version`:
3. Run the AppImage with any command-line parameters supported by Streamlink
.. code-block:: bash
# Run the Streamlink AppImage with any parameter supported by Streamlink
./streamlink-2.0.0-1-cp39-cp39-manylinux2014_x86_64.AppImage --version
AppImage stable builds
^^^^^^^^^^^^^^^^^^^^^^
|icon-download| `streamlink/streamlink-appimage releases page <appimage-stable_>`_
AppImage nightly builds
^^^^^^^^^^^^^^^^^^^^^^^
|icon-download| `streamlink/streamlink-appimage nightly builds artifacts <appimage-nightly_>`_
Built once each day at midnight UTC from Streamlink's `master branch <streamlink-master_>`_. |br|
This includes the most recent changes, but is not considered "stable". |br|
A GitHub account is required in order to access build artifacts.
./streamlink-5.3.0-1-cp311-cp311-manylinux2014_x86_64.AppImage --loglevel=debug
What are AppImages?
@ -480,9 +636,6 @@ Additional information, like for example how to inspect the AppImage contents or
how to extract the contents if `FUSE`_ is not available on your system, can be
found in the `AppImage documentation`_.
.. _streamlink/streamlink-appimage: https://github.com/streamlink/streamlink-appimage
.. _appimage-stable: https://github.com/streamlink/streamlink-appimage/releases
.. _appimage-nightly: https://github.com/streamlink/streamlink-appimage/actions?query=event%3Aschedule+is%3Asuccess+branch%3Amaster
.. _AppImageLauncher: https://github.com/TheAssassin/AppImageLauncher
.. _FUSE: https://docs.appimage.org/user-guide/troubleshooting/fuse.html
.. _AppImage documentation: https://docs.appimage.org/user-guide/run-appimages.html