ref: 18c530008f9a28e9cca2183e8346472f8ab48991
dir: /youtube.md/
Youtube
=======
Commit [treason](https://git.sr.ht/~ft/treason).
*NOTE* one does not simply commit treason on anything other than AMD64
atm. You can still play audio only on other arches though.
Install [youtubedr](https://github.com/ftrvxmtrx/youtube):
9fs ftrv.se
gunzip < /n/ftrv.se/bin/youtubedr.$objtype.gz > $home/bin/$objtype/youtubedr
chmod +x $home/bin/$objtype/youtubedr
hget https://curl.haxx.se/ca/cacert.pem > /sys/lib/tls/ca.pem
## Playing just audio alone
mcfs -t 1 `"{youtubedr -i 140 -o /tmp/audio.mp4 ybGOT4d2Hs8} | audio/aacdec > /dev/audio
## Playing video and/or audio
The easiest way to play ANY video on Youtube is to use H.264 baseline stream. It's of pretty bad
quality image-wise, but contains audio in the container itself and doesn't require too much CPU
resources.
treason `"{youtubedr -i 18 -o /tmp/_vid.mp4 ybGOT4d2Hs8}; rm -f /tmp/_vid.mp4
If you want to find the best possible format, use the following script:
#!/bin/rc
rfork ne
vitag=`{youtubedr -info $"1 | awk '
/av01/ {
tags[ntags++] = $2
if($2 == "398"){ # prefer hd720
tags[0] = $2
exit
}
}
END {
if(ntags > 0)
print tags[0]
}
'}
if(~ $#vitag 0)
treason `"{youtubedr -i 18 -o /tmp/_vid.mp4 $"1}
if not
treason -a `"{youtubedr -i 140 -o /tmp/_aud.mp4 $"1} `"{youtubedr -i $vitag -o /tmp/_vid.mp4 $"1}
#rm -f /tmp/_^(aud vid)^.mp4
You can put that script to `$home/bin/rc/youtube` and add a plumb rule
for Youtube URLs, right *before* `include basic`:
type is text
data matches 'https://(www.)?youtube[^ ]+'
plumb start window youtube ''''$0''''
## Caveats
Many. Patches welcome.