slideshow

View Imgur media in a slideshow format

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name       		    slideshow
// @namespace  		    https://greasyfork.org/en/users/94062-oshaw
// @version    		    3
// @description			View Imgur media in a slideshow format
// @author				Oscar Shaw
// @grant   			none
// @include				https://*.reddit.*/r/*
// @include			 	http://imgur.com/*
// @include				https://imgur.com/*
// @require				http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
// @run-at				document-start
// ==/UserScript==

/* "name":				"library.js",
   "program":			"Slideshow",
   "description":   	""
*/

function say(str_input,     tab_input = window) {
	
	tab_input.console.log(str_input);
	
} say("Compiled");
function list(arrkvp_input, tab_input = window) {
	
	var str_output = "";
	
	for (var i = 0; i < arrkvp_input.length; i++) {
		
		str_output += (
			
			  arrkvp_input[i][0] + ": \t\t"
			+ arrkvp_input[i][1] + "\n"
		);
	}
	
	say(str_output, tab_input);
}
function shout(str_input,   tab_input = window) {
	
	tab_input.alert(str_input);
}
function tag(str_element,   tab_input = window) {
	
	switch (str_element[0]) {
		
		case '.': return tab_input.document.getElementsByClassName(str_element.substring(1));
		case '#': return tab_input.document.getElementById(str_element.substring(1));
		default: return;
	}
}
function sayTab(str_body,   str_title = "")     {
	
	window.open().document.body.appendChild(document.createElement('pre')).innerHTML
		= (str_title != "" ? str_function + "\n\n" : "")
		+ str_body;
}
function tryCatch(anon)                         {
	
	try { anon(); }
	catch(str_error) { say(str_error); }
}
function isDef(var_input)                       {
	
	return !(var_input == null || var_input == undefined || var_input == "");
}
function func_xhr(obj_input)                    {
	
	say("func_xhr requesting " + obj_input.url_destination);
	
	var xhr	= new XMLHttpRequest();
	xhr.onload = function() {
		
		try { var json = JSON.parse(this.responseText); }
		catch(str_error) {
			
			say("func_error\n\n" + str_error + "\n\n" + this.responseText);
			obj_input.func_error(str_error);
		}
		
		if (!isDef(json.status)) obj_input.func_success(json);
		if (json.status == 200) {
			
			say("func_success");
			obj_input.func_success(json);
		}
		else {
			
			say("func_failure");
			obj_input.func_failure(json.status);
		}
	};
	xhr.open("GET", obj_input.url_destination, true);
	
	if (obj_input.str_headerKey != undefined && obj_input.str_headerValue != undefined) {
		
		xhr.setRequestHeader(
		
			obj_input.str_headerKey,
			obj_input.str_headerValue
		);
	}
	xhr.send();
}
function func_htmlUnescape(str_input)           {
	
    return str_input
		.replace(/&quot;/g, '"')
		.replace(/&#39;/g, "'")
		.replace(/&lt;/g, '<')
		.replace(/&gt;/g, '>')
		.replace(/&amp;/g, '&');
}

/* "name":				"parsers.js",
   "program":			"Slideshow",
   "description":   	""
*/

function func_imgurUrlToJson(url_input, func_callback, arrstr_endpoints = ["append", "album", "image"]) {
	
	const constr_imgurApiId = "b5abfbf0e29baf1";
	var hash_source = url_input.substring(url_input.lastIndexOf("/") + 1);
	var anon_request = function(str_endpoint, func_next) {
		
		var obj_xhrInputs;
		switch(str_endpoint) {
			
			case "append": {
				
				obj_xhrInputs = { url_destination: url_input + ".json" }
				break;
			}
			case "album": {
				
				obj_xhrInputs = {
					
					  url_destination: "https://api.imgur.com/3/album/" + hash_source
					, str_headerKey: "Authorization"
					, str_headerValue: "Client-ID " + constr_imgurApiId
				}
				break;
			}
			case "image": {
				
				obj_xhrInputs = {
					
					  url_destination: "https://api.imgur.com/3/image/" + hash_source
					, str_headerKey: "Authorization"
					, str_headerValue: "Client-ID " + constr_imgurApiId
				}
				break;
			}
			
			default: break;
		}
		
		func_xhr({
			
			  url_destination: obj_xhrInputs.url_destination
			, func_success: function(json_response) { func_callback(json_response); }
			, func_error: func_next
			, func_failure: func_next
			, str_headerKey: obj_xhrInputs.str_headerKey
			, str_headerValue: obj_xhrInputs.str_headerValue
		});
	};
	
	var i = 0;
	anon_request(arrstr_endpoints[i], function() {
		
		if (isDef(arrstr_endpoints[i + 1])) {
			
			i++;
			anon_request(arrstr_endpoints[i], function() {
				
				if (isDef(arrstr_endpoints[i + 1])) {
					
					i++;
					anon_request(arrstr_endpoints[i]);
				}
			});
		}
	}, function() {
		
		if (isDef(arrstr_endpoints[i + 1])) {
			
			i++;
			anon_request(arrstr_endpoints[i], function() {
				
				if (isDef(arrstr_endpoints[i + 1])) {
					
					i++;
					anon_request(arrstr_endpoints[i]);
				}
			});
		}
	});
}
function func_imgurJsonToSsdn(json_input)         {
	
	say("func_imgur_jsonToSsdn");
	
	var bool_isAppend = json_input.data.hasOwnProperty("image");
	var node_inputHeader = bool_isAppend ? json_input.data.image : json_input.data;
	var node_imageArray = bool_isAppend ? json_input.data.image.album_images.images : json_input.data.images;
	
	var ssdn_output = {
		
		node_header:
		{
			  str_title:			(node_inputHeader.title === null) ? "" : node_inputHeader.title
			, str_description:		(node_inputHeader.description === null) ? "" : node_inputHeader.description
			, str_poster:			node_inputHeader.account_url
			, int_length:			bool_isAppend ? node_inputHeader.num_images : node_inputHeader.images_count
			, int_views:			node_inputHeader.views
			, int_points:			node_inputHeader.points
			, int_ups:				node_inputHeader.ups
			, int_downs:			node_inputHeader.downs
		}
		, node_payload:				[]
	};
	var int_outputLength = ssdn_output.node_header.int_length;
	ssdn_output.node_header.int_length = (int_outputLength == null) ? 1 : int_outputLength;
	
	if (ssdn_output.node_header.int_length > 1) { // If album
		
		$.each(node_imageArray, function(i, node_image) {
		
			ssdn_output.node_payload.push({
				
				  str_title:		(node_image.title === null) ? "" : node_image.title
				, str_description:	(node_image.description === null) ? "" : node_image.description
				, url_direct:		bool_isAppend ? "http://i.imgur.com/" + node_image.hash + node_image.ext : node_image.link
			});
		});
		
	}
	else { // If image
		
		ssdn_output.node_payload.push({
			
			  str_title:			undefined
			, str_description:		undefined
			, url_direct:			node_inputHeader.link
		});
	}
	
	say("func_imgur_jsonToSsdn payload completed");
	return ssdn_output;
}
function class_redditParser(url_input, func_send) {
	
	function func_stringToUrlArray(str_input) {
		
		// say("func_stringToUrlArray");
		
		var array_urls = [];
		
		if (isDef(str_input.match(/http(.*?)(?=["?])/g))) {
			
			$.each(str_input.match(
			
				/http(.*?)(?=["?])/g
			
			), function(i, url) { array_urls.push(url); });
		}
		
		// say("func_stringToUrlArray completed");
		return array_urls;
	}
	function func_isUrlImageDirect(url_input) {
		
		return (url_input.indexOf(".jpg") != -1
				|| url_input.indexOf(".png") != -1
				|| url_input.indexOf(".gif") != -1);
	}
	function func_redditThreadHeaderToSsdnHeader(json_redditHeader) {
		
		return {
			
			node_header: {
				
				str_title: json_redditHeader.title
			}
		};
	}
	function func_urlWithRedditContextToSsdnPayload(url, json_redditComment) {
		
		return {
			
			node_payload:
			[
				{
					  str_title: json_redditComment.author
					, str_description: func_htmlUnescape(json_redditComment.body_html)
					, int_points: json_redditComment.score
					, url_direct: url
				}
			]
		};
	}
	function func_main() {
		
		func_xhr({ url_destination: url_input + ".json", func_success: function(json_reddit) {
			
			{ func_send( // Fabricate and send header
			
				func_redditThreadHeaderToSsdnHeader
				(json_reddit[0].data.children[0].data)

			); }
			
			$.each(json_reddit[1].data.children, function(i, json_comment) { // Each comment
				
				if (!isDef(json_comment.data.body_html)) return;
				
				$.each(func_stringToUrlArray(json_comment.data.body_html), function(j, url) {
					
					if (func_isUrlImageDirect(url)) { // Direct
						
						{ func_send(
						
							func_urlWithRedditContextToSsdnPayload
							(url, json_comment.data)
							
						); }
					}
					else if (url.indexOf("imgur") != -1) { // Indirect
						
						func_imgurUrlToJson(url, function(json_indirectUrlResponse) {
							
							$.each(json_indirectUrlResponse.data.images,
								function(k, json_imgurImage) {
								
								ssdn_output = func_urlWithRedditContextToSsdnPayload(
									json_imgurImage.link,
									json_comment.data);
								
								var node_image = ssdn_output.node_payload[0];
								node_image.int_index = k + 1;
								node_image.int_length = json_indirectUrlResponse.data.images.length;
								node_image.url_album = url;
								
								func_send(ssdn_output);
							});
							
						}, ["album", "image"]);
					}
					
				}); // Next url in comment
				
			}); // Next comment
		}});
		
	} func_main();
	
	say("class_redditParser completed");
}

/* "name":				"slideshow.js",
   "program":			"Slideshow",
   "description":   	""
*/

function class_slideshow(tab) {
	
	const contab_home       = tab;
	
	var css_head            = ""; { // CSS
		
		{ css_head += 
			"\
			<script type='text/javascript' src='http://ajax.googleapis.com/\
			ajax/libs/jquery/1.4.1/jquery.min.js'></script>\
		"; }
		{ css_head += "<title></title><style>"; }
		{ css_head += // #ctn_main, #ctn_image, 
			"\
			#ctn_main\
			{\
				top:					0px;\
				right:					0px;\
				height: 				" + contab_home.innerHeight + "px;\
				width: 					" + contab_home.innerWidth + "px;\
				position: 				absolute;\
			}\
			#ctn_image\
			{\
				height: 				" + contab_home.innerHeight + "px;\
				width:					100%;\
			}\
			#act_image\
			{\
				display:				block;\
				height:					" + contab_home.innerHeight + "px;\
				width:				 	100%;\
				position:				absolute;\
				background-position:	center center;\
				background-repeat:		no-repeat;\
				background-size:		contain;\
				z-index:				1;\
			}\
		"; }
		{ css_head += // .grp_details
			"\
			.grp_textBoxes\
			{\
				margin:					0px;\
				text-align:				center;\
			}\
			.grp_details\
			{\
				display:				none;\
				z-index:				1;\
			}\
			.grp_bold\
			{\
				font-weight:			bold;\
			}\
			#ctn_header\
			{\
				width:					100%;\
			}\
			#act_header\
			{\
				box-sizing:				border-box;\
				padding-top:			0px;\
				padding-bottom:			7px;\
				padding-left:			45px;\
				padding-right:			45px;\
			}\
			#ctn_footer\
			{\
				width: 					100%;\
			}\
			#act_footer\
			{\
				box-sizing:				border-box;\
				padding-top:			10px;\
				padding-bottom:			10px;\
				padding-left:			45px;\
				padding-right:			45px;\
				bottom:					0px;\
				width:					100%;\
			}\
			#p_imageNumbers\
			{\
				display:				none;\
			}\
			ul\
			{\
				padding:				0px;\
				margin:					0px;\
			}\
			ol\
			{\
				padding:				0px;\
				margin:					0px;\
			}\
			p\
			{\
				padding:				0px;\
				margin:					0px;\
			}\
		"; }
		{ css_head += // .grp_navButtons
			"\
			.grp_navButtons\
			{\
				top:					0px;\
				display:				none;\
				line-height:			" + contab_home.innerHeight + "px;\
				height:					100%;\
				margin:					0px;\
				cursor:					pointer;\
				text-align:				center;\
				vertical-align:			middle;\
				position:				absolute;\
				z-index:				10;\
			}\
			#btn_prev\
			{\
				left:					0px;\
				padding-left:			15px;\
				padding-right:			15px;\
			}\
			#btn_next\
			{\
				padding-left:			15px;\
				padding-right:			15px;\
				right:					0px;\
			}\
		"; }
		{ css_head += // css_head suffix
			"\
			</style>\
		"; }
	}
	var html_body           = ""; { // HTML
		
		{ html_body += // #ctn_main prefix
			"\
			<div id = 'ctn_main'>\
		"; }
		{ html_body += // #ctn_header
			"\
			<div class = 'grp_details' id = 'ctn_header'>\
				<div id = 'act_header'>\
					<h1 class = 'grp_textBoxes' id = 'h1_title'></h1>\
					<p class = 'grp_textBoxes' id = 'p_subtitle'></p>\
				</div>\
			</div>\
		"; }
		{ html_body += // #ctn_image
			"\
			<div class = 'grp_image' id = 'ctn_image'>\
				<div class = 'grp_image' id = 'act_image'></div>\
			</div>\
		"; }
		{ html_body += // #ctn_footer
			"\
			<div class = 'grp_details' id = 'ctn_footer'>\
				<div id = 'act_footer'>\
					<p class = 'grp_textBoxes' id = 'p_desc'></p>\
					<p class = 'grp_textBoxes grp_bold' id = 'p_imageNumbers'></p>\
				</div>\
			</div>\
		"; }
		{ html_body += // #ctn_main suffix, .grp_navButtons, 
			"\
				<div class = 'grp_navButtons' id = 'btn_prev'></div>\
				<div class = 'grp_navButtons' id = 'btn_next'></div>\
			</div>\
		"; }
	}
	var ssdn_source         = { node_header: {}, node_payload: [] };
	var int_imageCurrent    = 0;
	var bool_detailsDisplay = false;
	
	function func_detailsDisplay(bool_newDetailsDisplay = bool_detailsDisplay) {
		
		bool_detailsDisplay = bool_newDetailsDisplay;
		if (bool_detailsDisplay) { // Show
			
			var int_allocateHeightHeader = 0;
			var int_allocateHeightFooter = 0;
			{ var bool_showHeader = 
			
				   isDef(tag("#h1_title", contab_home).textContent)
				|| isDef(tag("#p_subtitle", contab_home).textContent)
			};
			{ var bool_showFooter = 
			
				    isDef(tag("#p_desc", contab_home).textContent)
				|| tag("#p_imageNumbers", contab_home).style.display == "block"
			};
			
			if (bool_showHeader) {
				
				tag("#ctn_header", contab_home).style.display = "block";
				int_allocateHeightHeader = tag("#ctn_header", contab_home).clientHeight;
			}
			if (bool_showFooter) {
				
				tag("#ctn_footer", contab_home).style.display = "block";
				int_allocateHeightFooter = tag("#act_footer", contab_home).clientHeight;
			}
			
			$.each(tag(".grp_image", contab_home), function(i, elmt) {
				
				elmt.style.height = (
				
					  contab_home.innerHeight
					- int_allocateHeightHeader
					- int_allocateHeightFooter
						
				).toString() + "px";
			});
		}
		else { // Hide
			
			$.each(tag(".grp_details", contab_home), function(i, elmt) {
				
				elmt.style.display = "none";
			});
			$.each(tag(".grp_image", contab_home), function(i, elmt) {
				
				elmt.style.height = contab_home.innerHeight.toString() + "px";
			});
		}
		
		say("func_detailsDisplay completed", contab_home);
	}
	function func_imageDisplay(int_newImageCurrent = int_imageCurrent) {
		
		// If reached end or beginning of album, stop
		if (!isDef(ssdn_source.node_payload[int_newImageCurrent])) {
			
			say("func_imageDisplay completed early with " + int_imageCurrent, contab_home);
			return;
		}
		
		int_imageCurrent = int_newImageCurrent;
		var node_image = ssdn_source.node_payload[int_imageCurrent];
		
		{ tag("#act_image", contab_home).style.backgroundImage = (
		
			  "url(" 
			+ ((!isDef(node_image.url_direct)) ? "" : node_image.url_direct)
			+ ")"
			
		); }
		{ tag("#p_desc", contab_home).innerHTML = (
		
			(
				(!isDef(node_image.str_title)) ? ""
				: (	"<span class = 'grp_bold'>"
					+ node_image.str_title
					+ "</span> " )
					
			) + (
			
				(!isDef(node_image.str_description)) ? ""
				: node_image.str_description
			)
		); }
		{ tag("#p_imageNumbers", contab_home).innerHTML = (
			
			(int_imageCurrent + 1).toString()
			+ " / "
			+ (
			
				(!isDef(ssdn_source.node_header))
				? ssdn_source.node_payload.length
				: (
				
					(!isDef(ssdn_source.node_header.int_length))
					? ssdn_source.node_payload.length
					: ssdn_source.node_header.int_length
					
				)
				
			).toString()
			
		); }
		
		if (isDef(tag(".md", contab_home)[0])) {
			
			$.each(tag(".md", contab_home)[0].querySelectorAll('a'), function(i, elmt) {
			
				if (elmt.href.indexOf(node_image.url_direct) != -1
					|| elmt.href.indexOf(node_image.url_album) != -1) {
					
					var str_indexAndLength = "";
					if (isDef(node_image.int_index)
						&& isDef(node_image.int_length)
						&& (node_image.int_length != 1)) {
						
						str_indexAndLength
							= " (" + node_image.int_index + " / "
							+ node_image.int_length + ")";
					}
					
					elmt.innerHTML = (
					
						'<span class = "grp_bold">'
						+ elmt.innerHTML
						+ str_indexAndLength
						+ '</span>'
					);
				}
			});
		}
		
		func_detailsDisplay();
	}
	function func_headerUpdate() {
		
		var node = (!isDef(ssdn_source.node_header))
			? {}
			: ssdn_source.node_header;
		
		{ (tag("#h1_title", contab_home)).textContent =
		
			(!isDef(node.str_title)) ? ""
			: node.str_title;
		}
		{ (tag("#p_subtitle", contab_home)).innerHTML =
		
			((!isDef(node.str_poster)) ? "" :
			
				"Posted by <span class = 'grp_bold'>\
				<a href = 'http://imgur.com/user/"
				+ node.str_poster + "'>"
				+ node.str_poster
				+ "</a></span>"
			
			) +
			
			((isDef(node.str_poster) && (isDef(node.int_points)
				|| isDef(node.int_views))) ? " with " : "") +
		
			((!isDef(node.int_points)) ? "" :
			
				"<span class = 'grp_bold'>"
				+ node.int_points
				+ " point" + ((node.int_points > 1) ? "s" : "") + "</span>"
			
			) +
			
			((isDef(node.int_points) && isDef(node.int_views)) ? " and " : "") +
			
			((!isDef(node.int_views)) ? "" :
			
				"<span class = 'grp_bold'>"
				+ node.int_views
				+ " view" + ((node.int_views > 1) ? "s" : "") + "</span>"
			
			)
		}
		
		if (isDef(ssdn_source.node_header.str_title)) func_detailsDisplay(true);
		
		contab_home.document.title = ssdn_source.node_header.str_title;
	}
	function func_pageSetup() {
		
		// contab_home.document.head.innerHTML = css_head   ;
		// contab_home.document.body.innerHTML = html_body  ;
		// contab_home.document.title          = "Slideshow";
		
		$("html").html("<head></head><body></body>");
		$("head").html(css_head);
		$("body").html(html_body);
		
		tag("#btn_prev", contab_home).textContent = "<"  ;
		tag("#btn_next", contab_home).textContent = ">"  ;
		
		say("func_pageSetup completed", contab_home);
	}
	function func_pageListeners() {
		
		say("func_pageListeners", contab_home);
		
		contab_home.document.addEventListener('keydown', function(key) {
			
			key.cancelBubble = true;
			key.stopImmediatePropagation();
			
			switch(key.keyCode) {
				
			case 39: func_imageDisplay(int_imageCurrent + 1); break;
			case 37: func_imageDisplay(int_imageCurrent - 1); break;
			case 38: case 40: func_detailsDisplay(!bool_detailsDisplay); break;
			
			default: break;
			
			}
			return false;
			
		}, !contab_home.opera);
		contab_home.addEventListener("resize", function() {
			
			tag("#ctn_main", contab_home).style.width = contab_home.innerWidth + "px";
			tag("#ctn_main", contab_home).style.height = contab_home.innerHeight + "px";
			
			func_detailsDisplay();
			$.each(tag(".grp_navButtons", contab_home), function(i, elmt) {
				
				elmt.style.lineHeight = contab_home.innerHeight + "px";
			});
		});
		
		tag("#btn_prev",  contab_home).onmousedown = function() {
			
			func_imageDisplay(int_imageCurrent - 1);
		};
		tag("#btn_next",  contab_home).onmousedown = function() {
			
			func_imageDisplay(int_imageCurrent + 1);
		};
		tag("#act_image", contab_home).onmousedown = function() {
			
			func_detailsDisplay(!bool_detailsDisplay);
		};
		
		say("func_pageListeners completed", contab_home);
	}
	function func_main() {
		
		func_pageSetup();
		func_pageListeners();
		func_detailsDisplay();
		
		say("class_slideshow.func_main completed", contab_home);
		
	} func_main();
	
	this.meth_sourceAdd = function(ssdn_input) { try {
		
		if (isDef(ssdn_input.node_header)) { // Header
			
			ssdn_source.node_header = ssdn_input.node_header;
			func_headerUpdate();
		}
		if (isDef(ssdn_input.node_payload)) { // If input payload exists
			
			$.each(ssdn_input.node_payload, function(i, node) {
				
				ssdn_source.node_payload.push(node);
			});
		}
		if (ssdn_source.node_payload.length > 1) { // Update
			
			$("#p_imageNumbers").css("display", "block");
			$(".grp_navButtons").css("display", "block");
			$("#act_menuButton").css("display", "block");
			$("#btn_next").text(">");
			$("#btn_prev").text("<");
			
			(tag("#p_imageNumbers", contab_home)).style.display = "block";
			$.each(tag(".grp_navButtons", contab_home), function(i, elmt) {
				
				elmt.style.display = "block";
			});
		}
		
		func_imageDisplay();
		
	} catch(str_error) { say(str_error, contab_home); } };
}

/* "name":				"launcher.js",
   "program":			"Slideshow",
   "description":   	""
*/

function func_main(str_source)                    {
	
	window.stop();
	var obj_slideshow = new class_slideshow(window);
	
	if (str_source == "imgur") {
		
		func_imgurUrlToJson(location.href, function(json_output) {
			
			var ssdn_input = func_imgurJsonToSsdn(json_output);
			obj_slideshow.meth_sourceAdd(ssdn_input);
			
			if (ssdn_input.node_header.int_length > ssdn_input.node_payload.length) {
				
				func_imgurUrlToJson(location.href, function(json_output) {
					
					var ssdn_append = func_imgurJsonToSsdn(json_output);
					ssdn_append.node_header = null;
					ssdn_append.node_payload.splice(0, ssdn_input.node_payload.length);
					
					obj_slideshow.meth_sourceAdd(ssdn_append);
					
				}, ["album"]);
			}
		});
	}
	if (str_source == "reddit") {
		
		var obj_redditParser = new class_redditParser(location.href, function(ssdn_outputEntry) {
			
			obj_slideshow.meth_sourceAdd(ssdn_outputEntry);
		});
	}
	say("func_main completed");
	
}
function func_handler()                           {
	
	if (location.href.includes("imgur.com")) func_main("imgur");
	if (location.href.includes("reddit.com")) {
		
		$(function() {
			
			var p_launch   = document.createElement("p");  {
				
				p_launch.textContent = "slideshow";
				p_launch.onclick = function() { func_main("reddit"); };
				{ p_launch.setAttribute(
				
					"style", "\
					background: none !important; \
					background-color: Transparent !important;\
					padding: 0 !important;\
					font: inherit;\
					border: none !important;\
					cursor: pointer;\
					font-weight: bold;"
				); }
				{ p_launch.style.color = (
				
					window
					.getComputedStyle(tag(".bylink comments may-blank")[0])
					.color
				); }
			}
			var ctn_launch = document.createElement("li"); {
				
				ctn_launch.appendChild(p_launch);
			}
			
			{ tag(".flat-list buttons")[0].insertBefore(
		
				ctn_launch,
				tag(".flat-list buttons")[0].children[1]
			); }
		});
	}
	
} func_handler();