Youtube

Commit 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:

   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

If youtubedr stops working all of a sudden (“error parsing signature tokens”), try reinstalling it, and if it still doesn’t work, it probably means Sigrid needs to pull in latest updates. Poke her on 9gridchan.

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.