DNA
5/1/2018 - 1:29 AM

Pass a Twitch collection URL as an argument and it'll download all of them

Pass a Twitch collection URL as an argument and it'll download all of them

#! /usr/bin/env ruby

require 'net/http'
require 'json'
require 'tempfile'

download_list = Tempfile.new
CLIENT_ID     = 'TWITCH_CLIENT_ID'
collection_id = ARGV.first.split('/').last
twitch_uri    = URI("https://api.twitch.tv/kraken/collections/#{collection_id}/items")

collections   = Net::HTTP.start(twitch_uri.hostname, twitch_uri.port, use_ssl: true) do |http|
  req = Net::HTTP::Get.new(twitch_uri)
  req['Accept']    = 'application/vnd.twitchtv.v5+json'
  req['Client-ID'] = CLIENT_ID

  JSON.parse(http.request(req).body)
end

collections['items'].each do |collection|
  download_list.write "https://www.twitch.tv/videos/#{collection['item_id']}\n"
end

download_list.rewind
download_list.flush

exec "youtube-dl -a #{download_list.path}"