if ($answer_counter == 1): ?>
endif; ?>
Что касается части загрузки вашего вопроса, вы можете использовать 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
.