Twitch Livestream Downloading

0

Oi pessoal, eu não consegui encontrar uma solução para esse problema e me pergunto se você pode me ajudar. Eu estou procurando uma ferramenta que vai ficar em segundo plano e assistir a um fluxo de twitch URL e quando a transmissão ao vivo começa, ele irá baixar para minha máquina local. sua ajuda seria muito apreciada.

    
por Matthew Parker 06.11.2014 / 22:54

1 resposta

1

No que diz respeito à parte de transferência da sua pergunta, pode utilizar o livestreamer , por exemplo:

livestreamer <livestream-url> best -o vod.mp4

Para obter instruções de instalação, consulte esta resposta por @ henry .

Na verdade, não deve ser muito difícil monitorar a atividade de fluxo por meio da API do Twitch. Por exemplo, você pode executar uma solicitação simples de curl canalizada para grep para identificar se o fluxo está off-line ou se há outro tipo de erro:

curl -s  https://api.twitch.tv/kraken/streams/totalbiscuit | grep '"stream":null'

Isso retornará como verdadeiro se nenhum fluxo estiver sendo executado no momento.

Com isso em mente, você pode criar um loop simples que verifique se há fluxos ativos em intervalos de alguns minutos, por exemplo:

#!/bin/bash

Channel="totalbiscuit"

while sleep 60; do
  if ! curl -s "https://api.twitch.tv/kraken/streams/$Channel" | grep -q '"stream":null'; then
    echo "$Channel is live. Downloading stream..."
    livestreamer "http://www.twitch.tv/$Channel" best -o "${Channel}_livestream.mp4"
  else
    echo "$Channel is offline"
  fi
done

Ou, um pouco mais complexo e com mais verificações de integridade:

#!/bin/bash

# Simple Twitch Poller
# Author: Glutanimate
# License: GPL v3
# Dependencies: livestreamer
# 
# Description: Polls twitch channel status and downloads stream if user is online

Usage="$0 <space-separated list of twitch channels>"

Channels=($@)

Interval="60" # polling interval in seconds

if [[ -z "$Channels" ]]; then
  echo "Error: No channels provided"
  echo "Usage: $Usage"
  exit 1
fi

while true; do
  for i in ${Channels[@]}; do
    StreamData="$(curl -s  "https://api.twitch.tv/kraken/streams/$i")"
    if echo "$StreamData" | grep -q '"status":404'; then # 404 Error
      echo "Error: $i does not exist."
      break 2
    elif echo "$StreamData" | grep -q '"stream":null'; then # Channel offline
      echo "$i is offline."
    else # Channel online
      echo "$i is live. Downloading stream..."
      livestreamer "http://www.twitch.tv/$i" best -o "$(date +"${i}_TwitchVOD_%Y-%m-%d_%H%M%S.mp4")"
    fi
  done
  sleep "$Interval"
done

Para experimentar este script, copie e cole o codeblock acima em um novo arquivo de texto vazio, salve-o como twitch_poller.sh ou algo similar e torne-o executável através do menu Properties do seu gerenciador de arquivos (Clique com o botão direito → Propriedades → Permissões → Permitir a execução do arquivo como programa ).

Certifique-se de ter o livestreamer instalado e, em seguida, execute o script em um terminal, fornecendo os canais de contração que deseja monitorar, por exemplo:

$ './twitch_poller.sh' totalbiscuit TSM_Dyrus
totalbiscuit is offline.
TSM_Dyrus is live. Downloading stream...
[cli][info] Found matching plugin twitch for URL http://www.twitch.tv/TSM_Dyrus
[cli][info] Available streams: audio, high, low, medium, mobile (worst), source (best)
[cli][info] Opening stream: source (hls)
[download][..D_2014-11-07_001503.mp4] Written 3.1 MB (6s @ 460.6 KB/s)

Você pode ajustar o intervalo de pesquisa definindo a variável Interval no script.

    
por Glutanimate 07.11.2014 / 00:23