您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
turns images into links in specified people's posts
当前为
- // ==UserScript==
- // @name Imagenorator
- // @namespace pendevin
- // @description turns images into links in specified people's posts
- // @include http://boards.endoftheinter.net/showmessages.php?*
- // @include http://archives.endoftheinter.net/showmessages.php?*
- // @include https://boards.endoftheinter.net/showmessages.php?*
- // @include https://archives.endoftheinter.net/showmessages.php?*
- // @require http://code.jquery.com/jquery-2.1.0.min.js
- // @version 2
- // ==/UserScript==
- //add userIDs of people you want ignorated
- //this is CactusMD and Das Bhut
- const IMAGENORATED=$([13346,23945]);
- //ll breaks without noconflict jquery
- this.$ = this.jQuery = jQuery.noConflict(true);
- //livelinks compatiblity *JQUERY
- //calls the function on each message-container in a document, including ones added by livelinks
- function livelinks(func,extraParams){
- if(extraParams==undefined)
- extraParams=null;
- //run the function on the message-containers currently on the page
- $('#u0_1 .message-container').each(function(i,container){
- func(container,extraParams);
- });
- //run it on any message-containers added in the future
- $('#u0_1').on(
- 'DOMNodeInserted',
- extraParams,
- function(e){
- if($(e.target).children('.message-container').length){
- $(e.target).children('.message-container').each(function(i,container){
- func(container,e.data);
- });
- }
- }
- );
- }
- //adds a style to a document and returns the style object *JQUERY
- //css is a string, id is an optional string that determines the object's id
- function addStyle(css,id){
- //create a style
- var style=$('<style type="text/css">');
- //add the css data to it
- style.html(css);
- if(id){
- //remove any style that has our id
- $('#'+id).remove();
- //give our style the id after removing the other stuff. idk if it matters, but i'm too lazy to find out
- style.attr('id',id);
- }
- //add the style into the head
- $('head').append(style);
- //we're outta here
- return style;
- }
- //tags message-tops with userids
- //should call it with livelinks imo *JQUERY
- function userids(container){
- $(container).find('.message-top').each(function(i,top){
- top=$(top);
- //get userid attribute from the profile link
- top.attr('userID',top.children('a[href*="user="]').attr('href').split('user=')[1]);
- });
- }
- //puts the message body of any quoted-message in its own message div like normal messages for easier styling(hiding)
- //livelinks ready *JQUERY
- function rearrangeQuotes(container){
- //this is a for loop or something
- $(container).find('.quoted-message').each(function(i,quote){
- quote=$(quote);
- //create message div for quote
- var quoteBody=$('<div class="message">');
- //add everything but the message-top to the message div
- quote.contents().each(function(i2,node){
- node=$(node);
- //make sure we don't do shit with an already parsed quote
- if(!node.hasClass('message-top')&&!node.hasClass('message')){
- quoteBody.append(node);
- }
- });
- //add the new message div to the quoted-message if it's got anything in it
- if(quoteBody.contents()[0]){
- quote.append(quoteBody);
- }
- });
- }
- //adds hidden class to posts of ignorated users
- //needs stuff and jquery
- function ignorate(container){
- rearrangeQuotes(container);
- userids(container);
- //get the messages and such
- $(container).find('.message-top').each(function(i,top){
- top=$(top);
- //check against each ignorated id
- IMAGENORATED.each(function(j,id){
- if(top.attr('userID')==id){
- //do the thing in the function and stuff
- hideImages(top.parent().find('.message:first'));
- //this guy breaks the loop
- return;
- }
- });
- });
- //do shit for blank quotes
- $(container).find('.quoted-message[msgid=""]>.message').each(function(i,message){
- message=$(message);
- //get appropriate userID
- //this could be inside a quote or directly inside a message
- var parentID=message.parent().parent().prev().attr('userID')?
- message.parent().parent().prev().attr('userID'):
- message.parent().parent().parent().parent().parent().prev().attr('userID');
- //find out if parent is imagenorated
- IMAGENORATED.each(function(j,id){
- if(parentID==id){
- //do the thing in the function and stuff
- hideImages(message);
- //this guy breaks the loop
- return;
- }
- });
- });
- }
- //take a message element and turn images into links in it
- function hideImages(message){
- //aah we gotta do the same thing in multiple places
- function hider(i,img){
- img=$(img);
- //make sure you don't gots links turned on
- if(img.children()[0]){
- //hide image
- img.children().addClass('hidden');
- //get image name
- var name=decodeURIComponent(img[0].href.substring(img[0].href.lastIndexOf('/')+1));
- //stick name in link content
- img.append(name);
- //add a br tag after the link
- img.after('<br>');
- }
- }
- //make sure we're only getting the imgs elements from this message and not subordinate ones
- message.children('.imgs').find('a').each(hider);
- //shit in spoilers oh god this is so long i wish i could select descendents of the selection context with find()
- message.children('.spoiler_closed,.spoiler_open').children('.spoiler_on_open').children('.imgs').find('a').each(hider);
- }
- //tag posts with userids
- livelinks(ignorate);
- addStyle('.hidden{display:none}','hidden');