「またOperaでググってる」とTwitterに投稿するスクリプト

自動でやるのはやっぱりマゾすぎるので、クリックするまで投稿しないバージョンを作りました。一番下に置いてあります。

の続き。

os0x さんの助言を受けて、オリジナルの「また Operaニコニコ動画みてる」スクリプトを改変した「また Opera でググってる」スクリプトを書いてみた。

これは何?

Opera の検索欄やキーワードから Google 検索したとき、検索した語句を Twitter に瞬時にポストしてくれるマゾっ気の強いスクリプトです。

使い方は以下の通り。(Twitter には事前にログインしている必要があります)

  1. 下記の UserJavaScript を、自分のスクリプトフォルダに保存してください。
  2. Opera検索エンジンの編集から、Google 検索のアドレス中に sourceid=opera というのが含まれていることを確認して下さい。(デフォルトの google.com 検索には含まれていますが、自前で登録したものには含まれていないと思います)
  3. Opera のアドレス欄で「g オペラ 最強」などと検索してください。
  4. 下のように、Twitter のアイコンが出て、アイコンの色が黒から水色に変ったら投稿終了です。お疲れ様でした。

あとは Twitter で確認すれば反映されているのが分かります。


// ==UserScript==
// @name      mata opera de google
// @include   http://www.google.co.jp/search*
// @include   http://www.google.com/search*
// @include   http://twitter.com/public_timeline?from=userjs
// ==/UserScript==

(function() {
    if (/www\.google\.co(m|\.jp)\/search.*sourceid=opera/.test(location.href)) {
        var google = function() {
            var prs = document.getElementById('prs');
            if (!prs) return;
            var result = prs.nextSibling;
            if (!result) return;
            var object = document.createElement('object');
            object.setAttribute('style', 'margin:0;padding:0;border:none;height:12px;width:12px;visibility:hidden;');
            object.id = 'mataoperadegoogle';
            setTimeout(function() {
                object.addEventListener('load',
                function() {
                    object.contentWindow.postMessage(encodeURIComponent([
                      '['+result.textContent+']', 
                      location.href
                    ].join(' ')), '*');
                    setTimeout(function() {
                        object.style.visibility = 'visible';
                    },
                    100);
                },
                false);
                object.data = 'http://twitter.com/public_timeline?from=userjs';
            },
            0);
            result.insertBefore(object, result.firstChild);
        }
        if (window.opera) document.addEventListener('DOMContentLoaded', google, false);
        else google();
    } else if (location.host == 'twitter.com') {
        if (window.opera) document.addEventListener('DOMContentLoaded',
        function() {
            if (document.body) {
                document.body.innerHTML = '';
                document.body.setAttribute('style', 'margin:0;padding:0;background-image:url("data:image/gif;base64,' 
                  + 'R0lGODlhEAAQAOYAAP///3d3d/7+/vr6+rm5ubW1tfv7+/39/fPz83Z2durq6vn5+fz8/OLi4q6u' 
                  + 'rq2trevr67a2tvf39+7u7r6+vrq6upWVlXt7e+/v74mJic/Pz3h4eHp6esHBwfj4+OXl5YSEhI2N' 
                  + 'jfDw8Ojo6MbGxqurq87OzqqqqpSUlN3d3fb29t/f3+np6dHR0fT09NXV1cnJyfHx8eHh4ampqcLC' 
                  + 'wtDQ0KGhoYKCgtfX17+/v9vb27Ozs5ycnMzMzMTExKWlpaCgoOPj483Nzezs7MfHx7u7uwAAAAAA' 
                  + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' 
                  + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' 
                  + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5' 
                  + 'BAAAAAAALAAAAAAQABAAAAesgAAABwuFBoKIiYIDLCsfCwKKiggtLxoYh5KIIkQwJBMGA6IGB4oY' 
                  + 'HT40OEENrQ0iDIkTFRQUFQS4uEUqiUM7EQXBBcARDwqJCicOyw8ODw8lFLGIIzY/QDoSCC4IMaWJ' 
                  + 'HxY8FjLTAJGKIxkhID0C7wLfiRIhGxs3HTUmQhoTigI5EgQYOFAgCASJBDCYIZBgwRSKDgggkYED' 
                  + 'hwsXAqDwIEnAAAkQFEAI6SFTIAA7' 
                  + '");-o-background-size:12px 12px;text-align:left;height:16px;width:16px;overflow:hidden;');
            }
        },
        false);
        document.addEventListener('message',
        function(e) {
            if (e.domain != 'www.google.com' && e.domain != 'www.google.co.jp') return;
            var url = 'http://twitter.com/statuses/update.json';
            var x = new XMLHttpRequest();
            x.open('POST', url, true);
            x.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
            x.onreadystatechange = function() {
                if (x.readyState == 4 && x.status == 200) {
                    document.body.style.backgroundImage = 'url(data:image/gif;base64,' 
                      + 'R0lGODlhEAAQAPYAAP////7+/gDe7nzq9QDc7f3+/mjn8+n6/Hbp9Gfn8wjd7fj7+/z9/f/9/P79' 
                      + '/cj2+/39/fn8/Cni8Nj4+8f2+9n4+975/Hfq9Qfd7f7//yPh7wDa7Pn7/ITr9vz+/vr8/WPm86Dx' 
                      + '+Drj8Bjg72Dn8/H7+/P7/Nf5/Pv9/bTz+fj6+771+gDd7hne7v/+/ljm8l7n89X3+v7//vr7+nXp' 
                      + '9FDl8Zru9+f6/XXq9ZPu9/X6+4bt9vL8/Zbu98L0++b6+7Hx+PX8/Ivs9t/4+zji8OH5/Pf8/Iru' 
                      + '9qTx+PD7/ZTu9+H5+3zq9p7x+ADb7Pb7+/H6/IXs9RTg74Dq9QDb7X7q9dT4/Nr4+6bx+Knx+OL6' 
                      + '/Or6/Hbp9X/q9XHp9c33/Pn8/fv8/NT2+vr9/uP5+wDg78/2+qXw+Pj8/Gbn89z4+8r2+/z8/IXr' 
                      + '9e37/ZDt9vr6+fj+/sb2+gDf76Lx+Izs9kbk8dj3+07k8QDc7Lz0+f///vT7/Dni8Gjo8wAAACH5' 
                      + 'BAAAAAAALAAAAAAQABAAAAfFgAAAKDp8T2iCiYoAGUZWPl9BBYuKAQdZQGdFEZSJAWQ9NjkWMwsL' 
                      + 'KhwMlUtCb3Upaw8UFA9aH4pDXR1tVQMDTL5TbopqXhcICDQ4XAgXaSeedyQGfgYJ1gkgUXGJLjE1' 
                      + 'L3h6SQdbBz9jintmInZ9cmEZAQEeiwFiGhIjTQ0QDg5sZFQqIWFOGSlHsNAJgcTCogY7nAgQQKBi' 
                      + 'HiotbigqAAbGBhYTQ25YsYgBBCUaMGBQoIAAER6UCsCBcmVChQoTTHACEAgAOw==)';
                }
            }
            x.send('status=\u307E\u305FOpera\u3067\u30b0\u30b0\u3063\u3066\u308b\u3002' + e.data);
        },
        false);
    }
})();

自分は Google 検索のキーワードを「ge」にしているのだけど、前に間違えて「tw」と打っちゃって Twitter に投稿しちゃってウギャーとなることが何度かあったので、みんなにもこの恥らいを分かってほしかった。

ご利用は自己責任で。

クリックしないと投稿しないバージョン

黒い Twitter アイコンをクリックして投稿するバージョンも作りました。

「また Opera でググってた」と過去形になります。

// ==UserScript==
// @name      mata opera de google
// @include   http://www.google.co.jp/search*
// @include   http://www.google.com/search*
// @include   http://twitter.com/public_timeline?from=userjs
// ==/UserScript==

(function() {
    if (/www\.google\.co(m|\.jp)\/search.*sourceid=opera/.test(location.href)) {
        var google = function() {
            var prs = document.getElementById('prs');
            if (!prs) return;
            var result = prs.nextSibling;
            if (!result) return;
            var object = document.createElement('object');
            object.setAttribute('style', 'margin:0;padding:0;border:none;height:12px;width:12px;visibility:hidden;');
            object.id = 'mataoperadegoogle';
            setTimeout(function() {
                object.addEventListener('load',
                function() {
                    object.contentWindow.postMessage(encodeURIComponent([
                      '['+result.textContent+']', 
                      location.href
                    ].join(' ')), '*');
                    setTimeout(function() {
                        object.style.visibility = 'visible';
                    },
                    100);
                },
                false);
                object.data = 'http://twitter.com/public_timeline?from=userjs';
            },
            0);
            result.insertBefore(object, result.firstChild);
        }
        if (window.opera) document.addEventListener('DOMContentLoaded', google, false);
        else google();
    } else if (location.host == 'twitter.com') {
        if (window.opera) document.addEventListener('DOMContentLoaded',
        function() {
            if (document.body) {
                document.body.innerHTML = '';
                document.body.setAttribute('style', 'margin:0;padding:0;background-image:url("data:image/gif;base64,' 
                  + 'R0lGODlhEAAQAOYAAP///3d3d/7+/vr6+rm5ubW1tfv7+/39/fPz83Z2durq6vn5+fz8/OLi4q6u' 
                  + 'rq2trevr67a2tvf39+7u7r6+vrq6upWVlXt7e+/v74mJic/Pz3h4eHp6esHBwfj4+OXl5YSEhI2N' 
                  + 'jfDw8Ojo6MbGxqurq87OzqqqqpSUlN3d3fb29t/f3+np6dHR0fT09NXV1cnJyfHx8eHh4ampqcLC' 
                  + 'wtDQ0KGhoYKCgtfX17+/v9vb27Ozs5ycnMzMzMTExKWlpaCgoOPj483Nzezs7MfHx7u7uwAAAAAA' 
                  + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' 
                  + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' 
                  + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5' 
                  + 'BAAAAAAALAAAAAAQABAAAAesgAAABwuFBoKIiYIDLCsfCwKKiggtLxoYh5KIIkQwJBMGA6IGB4oY' 
                  + 'HT40OEENrQ0iDIkTFRQUFQS4uEUqiUM7EQXBBcARDwqJCicOyw8ODw8lFLGIIzY/QDoSCC4IMaWJ' 
                  + 'HxY8FjLTAJGKIxkhID0C7wLfiRIhGxs3HTUmQhoTigI5EgQYOFAgCASJBDCYIZBgwRSKDgggkYED' 
                  + 'hwsXAqDwIEnAAAkQFEAI6SFTIAA7' 
                  + '");-o-background-size:12px 12px;text-align:left;height:16px;width:16px;overflow:hidden;');
            }
        },
        false);
        document.addEventListener('message',
        function(e) {
            if (e.domain != 'www.google.com' && e.domain != 'www.google.co.jp') return;
            document.body.onclick = function(){
                var url = 'http://twitter.com/statuses/update.json';
                var x = new XMLHttpRequest();
                x.open('POST', url, true);
                x.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
                x.onreadystatechange = function() {
                    if (x.readyState == 4 && x.status == 200) {
                        document.body.style.backgroundImage = 'url(data:image/gif;base64,' 
                          + 'R0lGODlhEAAQAPYAAP////7+/gDe7nzq9QDc7f3+/mjn8+n6/Hbp9Gfn8wjd7fj7+/z9/f/9/P79' 
                          + '/cj2+/39/fn8/Cni8Nj4+8f2+9n4+975/Hfq9Qfd7f7//yPh7wDa7Pn7/ITr9vz+/vr8/WPm86Dx' 
                          + '+Drj8Bjg72Dn8/H7+/P7/Nf5/Pv9/bTz+fj6+771+gDd7hne7v/+/ljm8l7n89X3+v7//vr7+nXp' 
                          + '9FDl8Zru9+f6/XXq9ZPu9/X6+4bt9vL8/Zbu98L0++b6+7Hx+PX8/Ivs9t/4+zji8OH5/Pf8/Iru' 
                          + '9qTx+PD7/ZTu9+H5+3zq9p7x+ADb7Pb7+/H6/IXs9RTg74Dq9QDb7X7q9dT4/Nr4+6bx+Knx+OL6' 
                          + '/Or6/Hbp9X/q9XHp9c33/Pn8/fv8/NT2+vr9/uP5+wDg78/2+qXw+Pj8/Gbn89z4+8r2+/z8/IXr' 
                          + '9e37/ZDt9vr6+fj+/sb2+gDf76Lx+Izs9kbk8dj3+07k8QDc7Lz0+f///vT7/Dni8Gjo8wAAACH5' 
                          + 'BAAAAAAALAAAAAAQABAAAAfFgAAAKDp8T2iCiYoAGUZWPl9BBYuKAQdZQGdFEZSJAWQ9NjkWMwsL' 
                          + 'KhwMlUtCb3Upaw8UFA9aH4pDXR1tVQMDTL5TbopqXhcICDQ4XAgXaSeedyQGfgYJ1gkgUXGJLjE1' 
                          + 'L3h6SQdbBz9jintmInZ9cmEZAQEeiwFiGhIjTQ0QDg5sZFQqIWFOGSlHsNAJgcTCogY7nAgQQKBi' 
                          + 'HiotbigqAAbGBhYTQ25YsYgBBCUaMGBQoIAAER6UCsCBcmVChQoTTHACEAgAOw==)';
                    }
                }
                x.send('status=\u307e\u305fOpera\u3067\u30b0\u30b0\u3063\u3066\u305f\u3002' + e.data);
            }
        },
        false);
    }
})();