Загрузка Twitch Livestream

0

Привет, ребята, я не смог найти решение этой проблемы и задаюсь вопросом, можете ли вы мне помочь. Я ищу инструмент, который будет сидеть в фоновом режиме и смотреть URL-адрес подергивания, а когда начнется прямая трансляция, он будет загружен на мою локальную машину. Ваша помощь будет принята с благодарностью.

    
задан Matthew Parker 06.11.2014 в 22:54
источник

1 ответ

1

Что касается части загрузки вашего вопроса, вы можете использовать livestreamer , например:

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

Инструкции по установке см. этот ответ @ генри .

На самом деле не должно быть слишком сложно контролировать активность потока через API Twitch. Например, вы можете выполнить простой запрос curl , запрограммированный на grep , чтобы определить, находится ли поток в автономном режиме или есть ли другой тип ошибки:

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

Это возвращает значение true, если в настоящий момент поток не работает.

С учетом этого вы можете создать простой цикл, который будет проверять активные потоки каждые несколько минут, например:

#!/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

Или, немного более сложный и с более тщательными проверками:

#!/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=([email protected])

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

Чтобы попробовать этот скрипт, скопируйте и вставьте этот код в новый пустой текстовый файл, сохраните его как twitch_poller.sh или что-то подобное и сделайте его выполнимым через меню «Свойства» вашего файлового менеджера (щелкните правой кнопкой мыши → «Свойства» → «Разрешения»). → Разрешить выполнение файла как программы ).

Удостоверьтесь, что у вас установлен livestreamer, затем запустите сценарий с терминала, в то же время предоставляя каналы подмены, которые вы хотите контролировать, например:

$ './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)

Вы можете отрегулировать интервал опроса, установив в скрипте Interval .

    
ответ дан Glutanimate 07.11.2014 в 00:23
источник