Загрузка Livestream подергивания

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

0
задан 6 November 2014 в 14:54

1 ответ

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

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

Поскольку инструкции по установке проверяют этот ответ @henry.


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

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

Это возвратится как верное, если никакой поток не будет работать в данный момент.

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

#!/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=($@)

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

Для испытания этого сценария скопируйте и вставьте codeblock выше в новый пустой текстовый файл, сохраните его как twitch_poller.sh или что-то подобное и делает это исполняемым файлом с помощью меню Properties Вашего файлового менеджера (Щелкните правой кнопкой по → Свойствам →, Полномочия → Позволяют выполнять файл как программу).

Удостоверьтесь, что Вы имеете установленный 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 переменная в сценарии.

2
ответ дан 6 October 2019 в 11:16

Другие вопросы по тегам:

Похожие вопросы: