slideshow

View Imgur media in a slideshow format

คุณจะต้องติดตั้งส่วนขยาย เช่น Tampermonkey, Greasemonkey หรือ Violentmonkey เพื่อติดตั้งสคริปต์นี้

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

คุณจะต้องติดตั้งส่วนขยาย เช่น Tampermonkey หรือ Violentmonkey เพื่อติดตั้งสคริปต์นี้

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

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

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==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();