A cross platform front-end GUI of the popular YouTube-dl written in wxPython

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • yt-dlp

    A feature-rich command-line audio/video downloader

  • There are workarounds (detailed very nicely in dirkf’s pull request for youtube-dl):

    https://github.com/ytdl-org/youtube-dl/pull/30184

    Pasting the content here for convenience:

    Since summer 2021, YouTube has started serving media URLs with a query parameter such as …&n=SXiXBH-xzrjeioPN&…. This now appears to be the default behaviour. Unless the value of this parameter is transformed according to an algorithm delivered in the site player JS, the download speed for the URL is throttled to ~50kB/s.

    Solutions for this include:

    • implementing a more complete JS interpreter, eg based on PR [jsinterp] Actual JS interpreter¹ #11272;

    • using an external JS interpreter (PhantomJS, now unmaintained, is used by some extractors);

    • spoofing the Android or iOS client to acquire unthrottled links, as successfully implemented in yt-dlp².

    This PR takes a different approach derived from the successful solution used in VLC's youtube.lua (also implemented differently in pytube³). The approach relies on the fact that the challenge algorithm is served in a mini-language within the minified player JS and therefore the specific algorithm can be extracted and executed by interpreting the mini-language without actually running the JS itself. [In parallel with this PR, a separate implementation of this approach was added to yt-dlp⁴.]

    The implementation of the mini-language interpreter is directly translated from VLC's n_descramble() Lua function⁵. The result sufficiently resembles the original that it should be straightforward to share changes between the two implementations.

    ――――――

    ¹ — https://github.com/ytdl-org/youtube-dl/pull/11272

    ² — https://github.com/yt-dlp/yt-dlp/commit/c888ffb95ab0ab4f4cd1...

    ³ — https://github.com/tfdahlin/pytube/blob/bb890af3b271a616bbe1...

    ⁴ — https://github.com/yt-dlp/yt-dlp/commit/404f611f1c4aa516fbc4...

    ⁵ — https://code.videolan.org/videolan/vlc/-/blob/4fb284e5af69aa...

  • youtube-dl

    Command-line program to download videos from YouTube.com and other video sites

  • There are workarounds (detailed very nicely in dirkf’s pull request for youtube-dl):

    https://github.com/ytdl-org/youtube-dl/pull/30184

    Pasting the content here for convenience:

    Since summer 2021, YouTube has started serving media URLs with a query parameter such as …&n=SXiXBH-xzrjeioPN&…. This now appears to be the default behaviour. Unless the value of this parameter is transformed according to an algorithm delivered in the site player JS, the download speed for the URL is throttled to ~50kB/s.

    Solutions for this include:

    • implementing a more complete JS interpreter, eg based on PR [jsinterp] Actual JS interpreter¹ #11272;

    • using an external JS interpreter (PhantomJS, now unmaintained, is used by some extractors);

    • spoofing the Android or iOS client to acquire unthrottled links, as successfully implemented in yt-dlp².

    This PR takes a different approach derived from the successful solution used in VLC's youtube.lua (also implemented differently in pytube³). The approach relies on the fact that the challenge algorithm is served in a mini-language within the minified player JS and therefore the specific algorithm can be extracted and executed by interpreting the mini-language without actually running the JS itself. [In parallel with this PR, a separate implementation of this approach was added to yt-dlp⁴.]

    The implementation of the mini-language interpreter is directly translated from VLC's n_descramble() Lua function⁵. The result sufficiently resembles the original that it should be straightforward to share changes between the two implementations.

    ――――――

    ¹ — https://github.com/ytdl-org/youtube-dl/pull/11272

    ² — https://github.com/yt-dlp/yt-dlp/commit/c888ffb95ab0ab4f4cd1...

    ³ — https://github.com/tfdahlin/pytube/blob/bb890af3b271a616bbe1...

    ⁴ — https://github.com/yt-dlp/yt-dlp/commit/404f611f1c4aa516fbc4...

    ⁵ — https://code.videolan.org/videolan/vlc/-/blob/4fb284e5af69aa...

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • youtube-dl-gui

    A cross platform front-end GUI of the popular youtube-dl written in wxPython.

  • youtube-dl-gui

    A cross platform front-end GUI of the popular youtube-dl written in wxPython. (by oleksis)

  • tartube

    A GUI front-end for youtube-dl, partly based on youtube-dl-gui and written in Python 3 / Gtk 3

  • youtube-dl-gui

    A cross-platform GUI for youtube-dl made in Electron and node.js (by jely2002)

  • NewPipe

    A libre lightweight streaming front-end for Android.

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • pytube

    A lightweight, dependency-free Python library (and command-line utility) for downloading YouTube Videos. (by tfdahlin)

  • There are workarounds (detailed very nicely in dirkf’s pull request for youtube-dl):

    https://github.com/ytdl-org/youtube-dl/pull/30184

    Pasting the content here for convenience:

    Since summer 2021, YouTube has started serving media URLs with a query parameter such as …&n=SXiXBH-xzrjeioPN&…. This now appears to be the default behaviour. Unless the value of this parameter is transformed according to an algorithm delivered in the site player JS, the download speed for the URL is throttled to ~50kB/s.

    Solutions for this include:

    • implementing a more complete JS interpreter, eg based on PR [jsinterp] Actual JS interpreter¹ #11272;

    • using an external JS interpreter (PhantomJS, now unmaintained, is used by some extractors);

    • spoofing the Android or iOS client to acquire unthrottled links, as successfully implemented in yt-dlp².

    This PR takes a different approach derived from the successful solution used in VLC's youtube.lua (also implemented differently in pytube³). The approach relies on the fact that the challenge algorithm is served in a mini-language within the minified player JS and therefore the specific algorithm can be extracted and executed by interpreting the mini-language without actually running the JS itself. [In parallel with this PR, a separate implementation of this approach was added to yt-dlp⁴.]

    The implementation of the mini-language interpreter is directly translated from VLC's n_descramble() Lua function⁵. The result sufficiently resembles the original that it should be straightforward to share changes between the two implementations.

    ――――――

    ¹ — https://github.com/ytdl-org/youtube-dl/pull/11272

    ² — https://github.com/yt-dlp/yt-dlp/commit/c888ffb95ab0ab4f4cd1...

    ³ — https://github.com/tfdahlin/pytube/blob/bb890af3b271a616bbe1...

    ⁴ — https://github.com/yt-dlp/yt-dlp/commit/404f611f1c4aa516fbc4...

    ⁵ — https://code.videolan.org/videolan/vlc/-/blob/4fb284e5af69aa...

  • ytdl-web

    Insecure, internal-only web front end to YTDL, useful for saving videos from mobile

  • I built one in Flask, with background downloads and saved state/logs in SQLite. No JS, simple CSS styling with Bootstrap. Cool to see all of these. https://github.com/phubbard/ytdl-web

  • one-click-youtube-dl

    Small tool to allow one-click downloading videos with youtube-dl

  • Another alternative: I made a tool which allows one-click downloading videos with youtube-dl (no GUI, no command line). Here: https://github.com/baobabKoodaa/one-click-youtube-dl

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts