Skip to content

Instantly share code, notes, and snippets.

Last active February 28, 2017 19:36
Show Gist options
  • Save anonymous/a260ec48257b50277244abc78f068c26 to your computer and use it in GitHub Desktop.
Save anonymous/a260ec48257b50277244abc78f068c26 to your computer and use it in GitHub Desktop.
// ==UserScript==
// @name E-Hentai Search Pre-fill/Append
// @author Aaron Bassett http://foobr.co.uk (original script owner)
// @description Attempts to prefill/append with English and Chinese languages
// @include http://g.e-hentai.org/*
// @include https://exhentai.org/*
// @grant GM_getValue
// @grant GM_setValue
// ==/UserScript==
(function(){
function prefillEnglish() {
document.getElementsByName('f_search')[0].value = 'language:English$ ';
document.getElementsByName('f_search')[0].focus();
document.getElementsByName('f_search')[0].setSelectionRange(30,30);
}
var prefillEnglishShortcut = (GM_getValue('mainShortcut') != undefined && GM_getValue('mainShortcut') != '') ? GM_getValue('mainShortcut') : "CTRL+Z";
shortcut(prefillEnglishShortcut,prefillEnglish);
function appendEnglish() {
document.getElementsByName('f_search')[0].value = document.getElementsByName('f_search')[0].value +' language:English$ ';
document.getElementsByName('f_search')[0].focus();
document.getElementsByName('f_search')[0].setSelectionRange(120,120);
}
var appendEnglishShortcut = (GM_getValue('resetShortcut') != undefined && GM_getValue('resetShortcut') != '') ? GM_getValue('resetShortcut') : "CTRL+X";
shortcut(appendEnglishShortcut,appendEnglish);
function prefillChinese() {
document.getElementsByName('f_search')[0].value = 'language:Chinese$ ';
document.getElementsByName('f_search')[0].focus();
document.getElementsByName('f_search')[0].setSelectionRange(30,30);
}
var prefillChineseShortcut = (GM_getValue('mainShortcut2') != undefined && GM_getValue('mainShortcut2') != '') ? GM_getValue('mainShortcut2') : "CTRL+A";
shortcut(prefillChineseShortcut,prefillChinese);
function appendChinese() {
document.getElementsByName('f_search')[0].value = document.getElementsByName('f_search')[0].value +' language:Chinese$ ';
document.getElementsByName('f_search')[0].focus();
document.getElementsByName('f_search')[0].setSelectionRange(120,120);
}
var appendChineseShortcut = (GM_getValue('resetShortcut2') != undefined && GM_getValue('resetShortcut2') != '') ? GM_getValue('resetShortcut2') : "CTRL+S";
shortcut(appendChineseShortcut,appendChinese);
})();
function shortcut(shortcut,callback,opt) {
var default_options = {'type':'keydown','propagate':false,'target':document}
if(!opt) opt = default_options;
else {for(var dfo in default_options) {if(typeof opt[dfo] == 'undefined') opt[dfo] = default_options[dfo];}}
var ele = opt.target;
if(typeof opt.target == 'string') ele = document.getElementById(opt.target);
var ths = this;
var func = function(e) {
e = e || window.event;
if (e.keyCode) code = e.keyCode;
else if (e.which) code = e.which;
var character = String.fromCharCode(code).toLowerCase();
var keys = shortcut.toLowerCase().split("+");
var kp = 0;
var shift_nums = {"`":"~","1":"!","2":"@","3":"#","4":"$","5":"%","6":"^","7":"&","8":"*","9":"(","0":")","-":"_","=":"+",";":":","'":"\"",",":"<",".":">","/":"?","\\":"|"}
var special_keys = {'esc':27,'escape':27,'tab':9,'space':32,'return':13,'enter':13,'backspace':8,'scrolllock':145,'scroll_lock':145,'scroll':145,'capslock':20,'caps_lock':20,'caps':20,'numlock':144,'num_lock':144,'num':144,'pause':19,'break':19,'insert':45,'home':36,'delete':46,'end':35,'pageup':33,'page_up':33,'pu':33,'pagedown':34,'page_down':34,'pd':34,'left':37,'up':38,'right':39,'down':40,'f1':112,'f2':113,'f3':114,'f4':115,'f5':116,'f6':117,'f7':118,'f8':119,'f9':120,'f10':121,'f11':122,'f12':123}
for(var i=0; k=keys[i],i<keys.length; i++) {
if(k == 'ctrl' || k == 'control') {if(e.ctrlKey) kp++;
} else if(k == 'shift') {if(e.shiftKey) kp++;
} else if(k == 'alt') {if(e.altKey) kp++;
} else if(k.length > 1) { if(special_keys[k] == code) kp++;
} else { if(character == k) kp++;
else {if(shift_nums[character] && e.shiftKey) {
character = shift_nums[character];
if(character == k) kp++;
}
}
}
}
if(kp == keys.length) {
callback(e);
if(!opt['propagate']) {
e.cancelBubble = true;
e.returnValue = false;
if (e.stopPropagation) {
e.stopPropagation();
e.preventDefault();
}
return false;
}
}
}
if(ele.addEventListener) ele.addEventListener(opt['type'], func, false);
else if(ele.attachEvent) ele.attachEvent('on'+opt['type'], func);
else ele['on'+opt['type']] = func;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment