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