Скрипт для вырезки фрагмента из записи Twitch стрима
- #!/bin/bash
- # Requirements:
- # - curl, ffmpeg, yt-dlp
- # - Telegram bot token
- # - List of chats
- TELEGRAM_BOT_TOKEN="1234567890:AAAAABBBBCCCCDDDDDEEEEFFFFFGGGGG"
- TELEGRAM_CHATS=("Exit" "User 1" "Chat 1" "Chat 2")
- TELEGRAM_CHAT_IDS=("0" "1234567" "-1001234567890" "-1001234567891")
- BROWSER="firefox"
- function to_telegram () {
- echo "Choose a chat:"
- for i in "${!TELEGRAM_CHATS[@]}"; do
- printf " %s. %s\n" "$i" "${TELEGRAM_CHATS[$i]}"
- done
- read -rn1 ch
- local chat_id="${TELEGRAM_CHAT_IDS[$ch]:-0}"
- if [[ "$chat_id" != "0" ]]; then
- echo "Sending to ${TELEGRAM_CHATS[$ch]}"
- curl -s "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendVideo" \
- -F parse_mode="markdown" \
- -F caption="$2" \
- -F chat_id="$chat_id" \
- -F video="@$1"
- fi
- }
- if [[ "$1" =~ ((http.*twitch.*videos/([0-9]+))\?t=([0-9]+)h([0-9]+)m([0-9]+)s) ]]; then
- # Download Twitch VOD by timing
- duration=${2:-30}
- scale=${3:-720}
- hh="${BASH_REMATCH[4]}"
- mm="${BASH_REMATCH[5]}"
- ss="${BASH_REMATCH[6]}"
- filename="tw_${BASH_REMATCH[3]}_${hh}${mm}${ss}_${duration}_${scale}p.mp4"
- if [ -f "$filename" ]; then
- echo "File already exists. Choose:"
- echo " 0. Exit"
- echo " 1. Overwrite"
- echo " 2. Send to Telegram"
- read -rn1 ch
- if [[ "$ch" == "2" ]]; then
- to_telegram "$filename" "$1"
- exit 0
- fi
- if [[ "$ch" != "1" ]]; then
- exit 0
- fi
- fi
- url="${BASH_REMATCH[2]}"
- start="${hh}:${mm}:${ss}"
- echo "Downloading $url, $start + ${duration}s, ${scale}p > $filename"
- ffmpeg -loglevel quiet -stats \
- -ss "$start" -t "$duration" \
- -i "$(yt-dlp -g -- "$url")" \
- -vf "scale=-2:$scale" \
- -crf 24 \
- -y "$filename" && \
- to_telegram "$filename" "[source]($1)"
- elif [[ "$1" =~ (http.*twitch.*/(.*)) ]]; then
- # Download Twitch stream
- scale=${2:-720}
- filename="tw_${BASH_REMATCH[2]}__$(date +%s)_${scale}p.mp4"
- url="${BASH_REMATCH[1]}"
- echo "Downloading $url, ${scale}p > $filename"
- ffmpeg -loglevel quiet -stats \
- -i "$(yt-dlp --cookies-from-browser $BROWSER -g -- "$url")" \
- -vf "scale=-2:$scale" \
- -crf 24 \
- -y "$filename" && \
- to_telegram "$filename" "[source]($1)"
- fi
- if [ -f "$1" ]; then
- # Send file to Telegram
- to_telegram "$@"
- fi
При помощи данного скрипта можно быстро вырезать нужную часть видео из записи стрима на Twitch. Также может отправлять видео до 20 Мб в Telegram.
Копируем тайминг в формате https://www.twitch.tv/videos/1234567890?t=0h32m28s, затем указываем количество секунд видео и опционально качество (480/720/1080). Пример:
twitch https://www.twitch.tv/videos/1828158224?t=0h29m52s 21 1080
twitch https://www.twitch.tv/Yoclesh 1080
Копируем тайминг в формате https://www.twitch.tv/videos/1234567890?t=0h32m28s, затем указываем количество секунд видео и опционально качество (480/720/1080). Пример:
twitch https://www.twitch.tv/videos/1828158224?t=0h29m52s 21 1080
twitch https://www.twitch.tv/Yoclesh 1080