Stream URL grabber

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

اعتبارا من 18-02-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
// @version 0.0.1.20150218224907
// ==/UserScript==
 	
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.innerText;
		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);
	},1000)
}

if (host=="www.twitch.tv")
{
	
	var hook = function()
	{
		var div = document.querySelectorAll('.channel-actions')[0];
		if (div!=null)
		{
			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>';
			
			//clearInterval(grabberhook);
			console.log("hooking...");
		}	
		else
		{
			setTimeout(function(){
				hook();
			},1000)
		}
	}


	hook();
}


if (host=="www.hitbox.tv")
{
	
	var hook = function()
	{
		var div = document.querySelectorAll('.sub')[0];
		if (div!=null)
		{
			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 + '<div class="action button"><a href="' + url + '" target="_blank">Grab stream link</a></div>';
			
			//clearInterval(grabberhook);
			console.log("hooking...");
		}	
		else
		{
			setTimeout(function(){
				hook();
			},1000)
		}
	}


	hook();
}

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