If you prefer a GUI, VLC is a good media player which also supports playing YouTube videos.
@mikegerwitz IIUC yt‑dl can “quasi‑run” a non‑free js to extract ids needed to find a link to a stream†
@mikegerwitz PS no judgment here, the issue exists but it’s negligible in my opinion.
@kmicu Thanks for the reference. I just looked into the code myself. This is indeed a touchy subject.
youtube-dl itself is clearly free, but extractor/youtube.py appears to, as you suggested, interpret a single JS function pulled out of YouTube. It does so using a very simple interpreter, in `jsinterp.py`.
On one hand, this can be viewed as automated reverse engineering, since it mirrors e.g. what I would do by hand on some sites to avoid running non-free JS. The regex in `_parse_sig_js` also place significant limitations on what it will end up interpreting.
But on the other, it is interpeting a small amount of non-free code.
So this seems more like a philosophical thing---if I'm to avoid running non-free JS, I must inspect it, mentally "run" it, in some cases reverse engineer it, and in some cases paste trivial snippets into the console to run. If I write a program to do that for me, is it really any different?
Since the interpreted function is so small, and is used to derive another program that is actually run, it seems reasonable to me, but if it got much larger, I'd be uncomfortable with it.
@kmicu It was also mentioned here by rms, so the question is whether he understands well what it is doing:
Mike Gerwitz's personal Mastodon instance