NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// File encoding: UTF-8 //{ // Copyright (c) 2013, Ricardo Mendonça Ferreira (ric@mpcnet.com.br) // Released under the GPL license - http://www.gnu.org/copyleft/gpl.html // -------------------------------------------------------------------- // ==UserScript== // @name Google image picker filter // @description Filter images by filename when using Google's "image picker" (e.g., when composing a post on Blogger / Blogspot) // @namespace https://openuserjs.org/scripts/Ricardo/Google_image_picker_filter // @homepageURL https://openuserjs.org/scripts/Ricardo/Google_image_picker_filter // @include http://www.blogger.com/blogger.g* // @include https://www.blogger.com/blogger.g* // @match http://www.blogger.com/blogger.g* // @match https://www.blogger.com/blogger.g* // @version 0.8 // @copyright 2013-2016, Ricardo Mendonca Ferreira // @license GPL v3; http://www.gnu.org/copyleft/gpl.html // @oujs:author Ricardo // @grant none // ==/UserScript== // -------------------------------------------------------------------- // // To use this script, you need the Google Chrome browser, or // Firefox with the Greasemonkey add-on: http://www.greasespot.net/ // // -------------------------------------------------------------------- // // History: // -------- // 2016.01.28 0.8 - Google changed its code, I changed mine; // 2014.11.07 0.7 - Google changed its code, I changed mine; hosting on OpenUserJs // 2014.04.14 0.6 - Google changed its code, I changed mine; search is case-insensitive // 2014.01.17 0.5 - Google changed its code, I changed mine // 2014.01.06 0.4 - Added "https" scheme to the include/match attributes of the script // 2013.12.20 0.3 - Fixed a bug finding the images; added detection for different class name // 2013.12.18 0.2 - Fixed detection of picker-image frame // 2013.12.11 0.1 - 1st version - tested only on Google Chrome //} (function() { var my_id = '[Google image picker filter]'; function setup() { var modal = false; for (var f=0; f < frames.length; f++) { try { if (frames[f].location.href.match("picker.+?thumbs")) { modal = frames[f].document; break; } } catch(err) {} } if (modal) { var cancel_btn = modal.getElementById("picker:ap:3"); var images = modal.querySelectorAll("div[role=option]"); if (!cancel_btn || !images || !images.length) { //if (!cancel_btn) console.log(my_id+' could not find cancel button!'); //if (!images) console.log(my_id+' could not find images!'); return; } var label = modal.createElement('span'); var search_field = modal.createElement('input'); search_field.type = "text"; search_field.id = "imgFilterByFilename"; search_field.onkeyup = function() { var shown = 0; var l = images.length; var fn; var filter = new RegExp(search_field.value, "i"); for (var i=0; i < l; i++) { img = images[i]; fn = img.getElementsByTagName("img"); if (fn) { fn = fn[0].src; if (! filter || fn.match(filter)) { img.style.display=""; shown++; } else { img.style.display="none"; } } } label.innerText=shown+"/"+l; }; cancel_btn.parentNode.insertBefore(search_field, cancel_btn.nextSibling); search_field.parentNode.insertBefore(label, search_field.nextSibling); clearInterval(keep_trying); console.log(my_id+' was set up.'); } } var keep_trying = setInterval(setup, 1000); })();