Reproduza o vídeo do YouTube do terminal para o Chromecast

Cenário

Quando minha filha quer ver um desenho animado (como a série Smurfs) às vezes não quero abrir um youtube para mandar para o nosso Chromecast. O Chromecast tem vários endpoints HTTP, então criei uma função zsh para fazer isso. Só preciso do ID do vídeo.

# zshrc
ccyt
() {
curl
-H "Content-Type: application/json" \
http
://192.168.1.103:8008/apps/YouTube \
-X POST \
-d "v=$1";
}

# bachrc
function ccyt {
curl
-H "Content-Type: application/json" \
http
://192.168.1.103:8008/apps/YouTube \
-X POST \
-d "v=$1";
}

Coloque-o em seu .zshrc (ou bashrc) e:

$ ccyt TRbNUu2LUOA

Extra: Pesquisa no Youtube

Um pouco mais. Portanto, essa função precisa de um videoID como parâmetro. Como posso obter o ID? Com uma ytsearchfunção.

ytsearch() {
curl
-s https://www.youtube.com/results\?search_query\=$@ | \
grep
-o 'watch?v=[^"]*"[^>]*title="[^"]*' | \
sed
-e 's/^watch\?v=\([^"]*\)".*title="\(.*\)/\1 \2/g'
}

Então eu procuro e jogo:

(clockwork) Ξ ~  ytsearch hupikék törpikék
BtW1LRfdio4 Hupikék törpikék 8. 2008 - TELJES
zA0gCbI9bXk
Hupikék törpikék 2. 2007 - TELJES
TRbNUu2LUOA HUPIKÉK TÖRPIKÉK 3 TELJES RAJZFILM
[ ... snip ... ]
pXvpVFBpj8k
Hupikék Torpikék / DS / Modra 2.resz
(clockwork) Ξ ~ ccyt TRbNUu2LUOA
(clockwork) Ξ ~