- // ==UserScript==
- // @name R34.XXX Favorites Button
- // @namespace https://linktr.ee/GanbatGAN
- // @version 1.3
- // @description Adds a favorite button to gallery pages on rule34.xxx.
- // @author Ganbat
- // @match https://rule34.xxx/index.php?page=post&s=list&tags=*
- // @icon https://www.google.com/s2/favicons?sz=64&domain=rule34.xxx
- // @grant GM_addStyle
- // @require http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js
- // @license Unlicense
- // ==/UserScript==
-
- /* globals $ */
-
- GM_addStyle ( `
- .galFavBtn {
- cursor: pointer;
- color: #009;
- }
- .galFavBtn:hover {
- color: #000;
- }
- ` );
-
- function IBEButton(){
- const tpDetails = document.getElementById('thumbPlusDetailsOptions');
- const tpFavButton = document.createElement("div");
- tpFavButton.setAttribute('class', 'thumbPlusDetailsButton');
- tpFavButton.setAttribute('tooltip', 'Add to Favorites');
- tpFavButton.setAttribute('style', 'display: none;');
- tpFavButton.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m 22.051576,3.5701033 c -1.236895,-1.3415351 -2.934095,-2.080391 -4.77932,-2.080391 -1.379271,0 -2.642417,0.4360581 -3.754439,1.2959602 C 12.956703,3.2197252 12.448272,3.7507609 12,4.370576 11.55191,3.7509435 11.043297,3.2197252 10.482,2.7856725 9.3701616,1.9257704 8.1070149,1.4897123 6.7277442,1.4897123 c -1.8452255,0 -3.542607,0.7388559 -4.7795026,2.080391 -1.22212933,1.3258569 -1.89535776,3.137175 -1.89535776,5.1005301 0,2.0207786 0.7530753,3.8705626 2.36988086,5.8215216 1.4463566,1.745143 3.5251068,3.516721 5.9323587,5.568125 0.821984,0.700574 1.7537116,1.494666 2.7211706,2.340531 0.255581,0.223863 0.583537,0.347096 0.923706,0.347096 0.339987,0 0.668125,-0.123233 0.923342,-0.34673 0.967458,-0.846049 1.899733,-1.640506 2.722081,-2.341443 2.406888,-2.051041 4.485638,-3.822436 5.931994,-5.567762 1.616806,-1.950776 2.369699,-3.80056 2.369699,-5.8215206 0,-1.9631731 -0.673228,-3.7744912 -1.89554,-5.1003481 z m 0,0"></path></svg>'
- tpDetails.firstElementChild.appendChild(tpFavButton);
-
- const targetNode = document.getElementById('thumbPlusPreviewLink');
- const config = { attributeFilter: [ 'href' ] };
-
- const callback = function(mutationsList, observer) {
- let postID = String(targetNode.getAttribute('href')).replace(/index\.php.+id=/, '');
- tpFavButton.setAttribute('style', 'display: inline-block;');
- tpFavButton.setAttribute('onclick', 'post_vote(\''+ postID +'\', \'up\'); addFav(\''+ postID +'\'); $(this).setAttribute("style", "display: none;"); return false;');
- }
-
- const observer = new MutationObserver(callback);
- observer.observe(targetNode, config);
- }
-
- setTimeout(() => {
- if ($('#thumbPlusPreviewContainer').length) {
- IBEButton();
- } else {
- $('.thumb').each(function() {
- var postLink = $(this).children('a').first();
- var postID = $(this).attr('id').substring(1);
- postLink.after('<br /><div><b class="galFavBtn" onclick="post_vote(\''+ postID +'\', \'up\'); addFav(\''+ postID +'\'); $(this).parentElement.hide(); return false;">Add to Favorites</b></div>');
- });
- }
- }, 200);