Stream URL grabber

Adds a button that gives you a .m3u8 file for a on Twitch or Hitbox stream.

اعتبارا من 10-06-2015. شاهد أحدث إصدار.

// ==UserScript==
// @name Stream URL grabber
// @description Adds a button that gives you a .m3u8 file for a on Twitch or Hitbox stream.
// @include http://www.twitch.tv/*
// @include https://www.twitch.tv/*
// @include http://www.hitbox.tv/*
// @include https://www.hitbox.tv/*
// @include	http://api.twitch.tv/api/channels/*/access_token?grabber
// @include	https://api.twitch.tv/api/channels/*/access_token?grabber
// @namespace https://greasyfork.org/users/3167
// @run-at document-end
// @version 0.0.1.20150610121101
// ==/UserScript==
 	
console.log("grabbing");

var host = window.location.host;

if (host=="api.twitch.tv" || host=="www.api.twitch.tv")
{
	setTimeout(function(){
		//console.log("loaded:" + GM_getValue("token"));


		//var text = $("body").text();
		var text = document.body.textContent;
		console.log("text:" + text);

		var json = JSON.parse(text);

		console.log("json:" + json);

		var user = document.URL.split("api.twitch.tv/api/channels/")[1].split("/")[0];

		var token = json['token'];

		var signature = json['sig'];

		var url = 'http://usher.justin.tv/api/channel/hls/' + user + '.m3u8?allow_source=true&token=' + token + '&sig=' + signature;
		var urle = encodeURI(url);

		//window.open(url);

		//$("body").html('<a href="' + urle + '">' + urle + '</a>"');
		document.body.innerHTML = '<a href="' + urle + '">' + urle + '</a>';
		
		window.location.assign(url);
		//window.open(urle,"_blank");
		setTimeout(function(){
			window.close(); 
		},1000)
		//localStorage.setItem("token", text);
		//GM_setValue("token", text);
	},100)
}
	
var hook = function()
{
	if (host=="www.twitch.tv")
	{
		var div = document.querySelectorAll('.channel-actions')[0];
		if (div==null) {
			setTimeout(function(){hook();},1000);
			return
		}

		var user = document.URL.split("twitch.tv/")[1].split("/")[0];

		var tokenurl = 'http://api.twitch.tv/api/channels/' + user + '/access_token?grabber';

		var temp = div.innerHTML;

		//div.innerHTML = temp + '<div class="action button"><a href="' + tokenurl + '" target="_blank">Grab stream link</a></div>';
		var clickaction = "window.open(" + tokenurl + ", 'newwindow', 'width=50%, height=50%'); return false;";
		div.innerHTML = temp + '<a href="' + tokenurl + '"  onclick="' + clickaction + '">Grab stream link</a>';
		//
		//clearInterval(grabberhook);
		console.log("Hooking...");
		console.log("Stream link: " + tokenurl);
	}

	if (host=="www.hitbox.tv")
	{
		var div = document.querySelectorAll('.stats')[0];
		if (div==null) {
			setTimeout(function(){hook();},1000);
			return
		}

		var user = document.URL.split("hitbox.tv/")[1].split("/")[0];

		var url = 'http://api.hitbox.tv/player/hls/' + user + '.m3u8';

		var temp = div.innerHTML;

		div.innerHTML = temp + '<span><a href="' + url + '" target="_blank">Grab stream link</a></span>';

		//clearInterval(grabberhook);
		console.log("Hooking...");
		console.log("Stream link: " + url);
	}
}


hook();

console.log("Stream grabber loaded on host: " + host);