Author: sparky
Date: Thu Mar 11 03:07:12 2010
New Revision: 11244

Added:
   toys/rsget.pl/rsget_pl.user.js
Log:
- new userscript, still somewhat problematic, but it isn't limited to
  GreaseMonkey unlike the previous one; besides mozilla browsers also
  epiphany, chromium and opera are supported


Added: toys/rsget.pl/rsget_pl.user.js
==============================================================================
--- (empty file)
+++ toys/rsget.pl/rsget_pl.user.js      Thu Mar 11 03:07:12 2010
@@ -0,0 +1,602 @@
+// ==UserScript==
+// @name               rsget.pl
+// @namespace  http://rsget.pl/
+// @description        quickly add links to rsget.pl
+// @include            http://*/*
+// @include            https://*/*
+// @include            file://*
+// ==/UserScript==
+
+var server = 'http://localhost:5666/';
+
+/* supported links {{{ */
+var supported2 = {
+       "4gk.com":                      1,      "4shared.com":          1,      
"anonym.to":            1,
+       "archiv.to":            1,      "badongo.com":          1,      
"bitroad.net":          1,
+       "break.com":            2,      "crypted.biz":          1,      
"crypt-it.com":         1,
+       "dailymotion.com":      2,      "dailymotion.pl":       2,      
"depositfiles.com":     1,
+       "extremetube.com":      2,      "filefactory.com":      1,      
"flyfile.us":           1,
+       "freakshare.net":       1,      "gigasize.com":         1,      
"goear.com":            2,
+       "hotfile.com":          1,      "imageshack.us":        2,      
"linkhider.com":        1,
+       "link-protector.com": 1, "liveleak.com":        2,      "lix.in":       
                1,
+       "mediafire.com":        1,      "megaporn.com":         2,      
"megarotic.com":        1,
+       "megaupload.com":       1,      "megavideo.com":        2,      
"metacafe.com":         2,
+       "netload.in":           1,      "pornhub.com":          2,      
"protectlinks.com":     1,
+       "przeklej.pl":          1,      "rapidshare.de":        1,      
"rapidshark.pl":        1,
+       "redtube.com":          2,      "rapidshare.com":       1,      
"rsprotect.com":        1,
+       "secured.in":           1,      "sendspace.com":        1,      
"sendspace.pl":         1,
+       "sexuploader.com":      1,      "sharebee.com":         1,      
"shareplace.com":       1,
+       "sharingmatrix.com": 1, "spankwire.com":        2,      "storage.to":   
        1,
+       "tinyurl.com":          1,      "turbobit.net":         1,      
"turbobit.ru":          1,
+       "turboupload.com":      1,      "ul.to":                        1,      
"up-file.com":          1,
+       "uploaded.to":          1,      "uploading.com":        1,      
"veoh.com":                     2,
+       "vimeo.com":            2,      "easy-share.com":       1,      
"zippyshare.com":       1,
+       "x7.to":                        1,      "xhamster.com":         2,      
"xurl.jp":                      1,
+       "youporn.com":          2,      "youtube.com":          2,      
"zshare.net":           1,
+};
+
+var supported3 = {
+       "d01.megashares.com":   1,              "save.raidrush.ws":             
1,
+       "tv.delfi.ee":                  2,              "video.banzaj.pl":      
        2,
+       "video.google.com":             2,              "video.interia.pl":     
        2,
+       "vids.myspace.com":             2,
+};
+/* }}} */
+
+/* tools: async, el {{{ */
+function async( f )
+{
+       window.setTimeout( f, 0 );
+}
+
+function el( tag, attrib )
+{
+       var el = document.createElement( tag );
+
+       if ( attrib )
+               for ( var name in attrib )
+                       el.setAttribute( name, attrib[ name ] );
+
+       return el;
+}
+
+function stop_propagation( ev )
+{
+       ev.stopPropagation();
+}
+
+var _cnt = 1;
+function cnt()
+{
+       return ++_cnt;
+}
+/* }}} */
+
+var finder = { /* {{{ */
+       page_supported: false,
+
+       _text_tags: [ "pre", "div", "td", "p", "span" ],
+       _text_i: 0,
+       _text_nodes: null,
+       _a_i: 0,
+       _a_nodes: 0,
+       links: [],
+
+       init: function ()
+       {
+               if ( finder.page_supported = finder._check_support( 
document.location.href ) ) {
+                       menu.init();
+               }
+               finder._get_text();
+       },
+
+       _get_text: function ()
+       {
+               finder._text_i = 0;
+               finder._text_nodes = null;
+               if ( ! finder._text_tags.length )
+                       return finder._get_a();
+
+               finder._text_nodes = document.getElementsByTagName(
+                       finder._text_tags.shift()
+               );
+               async( finder._check_text );
+       },
+       _check_text: function ()
+       {
+               if ( finder._text_i >= finder._text_nodes.length )
+                       return finder._get_text();
+
+               var text_node = finder._text_nodes[ finder._text_i++ ];
+               async( finder._check_text );
+
+               var node = text_node.firstChild;
+               if ( ! node )
+                       return;
+
+               var found = false;
+
+               do {
+                       if ( node.nodeName != '#text' )
+                               continue;
+                       var text = node.nodeValue;
+                       if ( text == null || text.length < 15 )
+                               continue;
+
+                       var hrefs = text.match( /(http:\/\/\S+\/\S+)/g );
+
+                       if ( ! hrefs || hrefs.length <= 0 )
+                               continue;
+
+                       for ( var i = 0; i < hrefs.length; i++ ) {
+                               var href = hrefs[ i ];
+                               if ( ! finder._check_support( href ) )
+                                       continue;
+                               var start = text.indexOf( href );
+                               if ( start < 0 )
+                                       continue;
+
+                               text_node.insertBefore(
+                                               document.createTextNode( 
text.substr( 0, start ) ),
+                                               node );
+
+                               /* class is a special word, must have quotes */
+                               var a = el( 'a', { href: href, 'class': 
'get_link_text' } );
+                               a.addEventListener( 'DOMActivate', 
finder._click, false );
+                               a.addEventListener( 'click', finder._click, 
false );
+                               a.appendChild( document.createTextNode( href ) 
);
+                               text_node.insertBefore( a, node );
+
+                               text = text.substr( start + href.length );
+                               node.nodeValue = text;
+
+                               found = true;
+                       }
+               } while ( node = node.nextSibling );
+
+               if ( found )
+                       menu.init();
+       },
+
+       _get_a: function ()
+       {
+               finder._a_i = 0;
+               finder._a_nodes = document.getElementsByTagName( 'a' );
+               async( finder._check_a );
+       },
+       _check_a: function ()
+       {
+               if ( finder._a_i + 10 < finder._a_nodes.length )
+                       async( finder._check_a );
+               else {
+                       async( finder._end );
+               }
+
+               for ( var i = 0; i < 10; i++, finder._a_i++ ) {
+                       if ( finder._a_i >= finder._a_nodes.length )
+                               break;
+
+                       var a = finder._a_nodes[ finder._a_i ];
+                       var cl = a.getAttribute( 'class' );
+                       if ( cl && cl == 'get_link_text' ) {
+                               finder._link( a );
+                               continue;
+                       }
+
+                       var href = a.getAttribute( 'href' );
+                       if ( href == null )
+                               continue;
+
+                       if ( finder._check_support( href ) ) {
+                               a.setAttribute( 'class',
+                                       cl == null ? 'get_link' : cl + ' 
get_link' );
+                               finder._link( a );
+                       } else if ( finder.page_supported ) {
+                               var m = href.match( /^[a-zA-Z0-9]+:/ );
+                               if ( !m || m.length < 1 ) {
+                                       if ( href.indexOf( "/" ) == 0 ) {
+                                               m = 
document.location.href.match( /^(.*?\/\/.*?)\// );
+                                               href = m[ 1 ] + href;
+                                       } else {
+                                               m = 
document.location.href.match( /^(.*?\/\/.*\/)/ );
+                                               href = m[ 1 ] + href;
+                                       }
+                                       a.setAttribute( 'class',
+                                               cl == null ? 'get_link' : cl + 
' get_link' );
+                                       a.setAttribute( 'href', href );
+                                       finder._link( a );
+                               }
+                       }
+               }
+       },
+       _end: function ()
+       {
+               finder._a_i = 0;
+               finder._a_nodes = null;
+               if ( finder.page_supported == 1 )
+                       menu.open();
+       },
+       _link: function ( a )
+       {
+               if ( finder.links.length == 0 )
+                       menu.init();
+
+               finder.links.push( a );
+       },
+       _check_support: function ( href )
+       {
+               var m = href.match( /http:\/\/.*?([a-z0-9-]+\.[a-z]{2,3})\// );
+               if ( m && m.length ) {
+                       var s = supported2[ m[1] ];
+                       if ( s )
+                               return s;
+
+                       var m = href.match( 
/http:\/\/.*?([a-z0-9-]+\.[a-z0-9-]+\.[a-z]{2,3})\// );
+                       if ( m && m.length ) {
+                               s = supported3[ m[1] ];
+                                       return s;
+                       }
+               }
+
+               return 0;
+       },
+       _click: function ( ev )
+       {
+               ev.stopPropagation();
+               ev.preventDefault();
+
+               var get = server + "add?links=" + escape( this.getAttribute( 
'href' ) )
+                       + "&comment=" + escape( "source: " + 
document.location.href );
+               try {
+                       GM_openInTab( get );
+               } catch ( e ) {
+                       window.open( get, "_blank" )
+               }
+       }
+}; /* }}} */
+
+var selection = { /* {{{ */
+       init: function ()
+       {
+               document.addEventListener( 'mouseup', selection._check_ev, 
false );
+               document.addEventListener( 'keyup', selection._check_ev, false 
);
+       },
+       get: function ()
+       {
+               var sel = window.getSelection();
+               var links = [];
+               if ( sel.isCollapsed === true )
+                       return links;
+               var srclinks = finder.links;
+               var len = srclinks.length;
+               for ( var i = 0; i < len; i++ ) {
+                       if ( sel.containsNode( srclinks[ i ], true ) )
+                               links.push( srclinks[ i ] );
+               }
+
+               return links;
+       },
+       _check_ev: function ( ev )
+       {
+               if ( menu.manual_open )
+                       async( menu.open );
+               else
+                       async( selection._check );
+       },
+       _check: function ()
+       {
+               var l = selection.get();
+
+               if ( l.length )
+                       menu.open();
+               else
+                       menu.close();
+       }
+}; /* }}} */
+
+var menu = { /* {{{ */
+       _interval: null,        // toggling interval
+       _opened: false, // is menu opened ?
+       _move: 10,              // opening/closing movement
+       _width: 0,              // actual menu width
+       _box: null,             // container node
+       _initialized: false,    // is menu shown ?
+       manual_open: false,
+       init: function ()
+       {
+               if ( menu._initialized )
+                       return;
+               menu._initialized = true;
+
+               var css = getCss();
+               try {
+                       GM_addStyle( css );
+               } catch ( e ) {
+                       var cssEl = el( 'link', { rel: 'stylesheet', type: 
'text/css',
+                               href: 'data:text/css,' + encodeURIComponent( 
css ) } );
+                       var head;
+                       if ( head = document.getElementsByTagName('head')[0] ) {
+                               head.appendChild( cssEl );
+                       } else {
+                               var doc = document.documentElement;
+                               doc.insertBefore( cssEl, doc.firstChild );
+                       }
+               }
+
+               var body = document.getElementsByTagName( 'body' )[0];
+
+               menu._box = el( 'div', { id: 'rsget_pl' } );
+               var button = el( 'span' );
+               menu._box.appendChild( button );
+
+               body.appendChild( menu._box );
+
+               menu._box.addEventListener( 'DOMActivate', stop_propagation, 
false );
+               menu._box.addEventListener( 'click', stop_propagation, false );
+               button.addEventListener( 'DOMActivate', menu._toggle_ev, false 
);
+               button.addEventListener( 'click', menu._toggle_ev, false );
+               window.addEventListener( 'scroll', menu._update_position, false 
);
+
+               async( selection.init );
+               async( menu._update_position );
+       },
+       _toggle_ev: function ( ev )
+       {
+               ev.stopPropagation();
+               ev.preventDefault();
+               async( menu._toggle );
+       },
+       _toggle: function ()
+       {
+               if ( menu._opened ) {
+                       menu.manual_open = false;
+                       menu.close();
+               } else {
+                       menu.manual_open = true;
+                       menu.open();
+               }
+       },
+       open: function ()
+       {
+               menu.init();
+
+               var rm = menu._box.lastChild;
+               if ( rm.nodeName == 'DIV' )
+                       menu._box.removeChild( rm );
+
+               var div = el( 'div' );
+               var ul = el( 'ul' );
+
+               if ( finder.page_supported ) {
+                       ul.appendChild( menu._li_form(
+                               [ document.location.href ],
+                               window.top.location.href,
+                               "add this page to rsget.pl"
+                       ) );
+               }
+               if ( finder.links.length ) {
+                       ul.appendChild( menu._li_form(
+                               finder.links,
+                               document.location.href,
+                               "add the only link to rsget.pl",
+                               "add all %d links to rsget.pl"
+                       ) );
+
+                       var l = selection.get();
+                       if ( l.length )
+                               ul.appendChild( menu._li_form(
+                                       l,
+                                       document.location.href,
+                                       "add selected link to rsget.pl",
+                                       "add %d selected links to rsget.pl"
+                               ) );
+               }
+
+               div.appendChild( ul );
+               menu._box.appendChild( div );
+
+               if ( menu._opened )
+                       return;
+               menu._move = +10;
+               if ( ! menu._interval )
+                       menu._interval = window.setInterval( menu._slide, 20 );
+               menu._opened = true;
+       },
+       close: function ()
+       {
+               if ( ! menu._opened || menu.manual_open )
+                       return;
+               menu._move = -10;
+               if ( ! menu._interval )
+                        menu._interval = window.setInterval( menu._slide, 20 );
+               menu._opened = false;
+       },
+       _slide: function ()
+       {
+               menu._width += menu._move;
+               if ( menu._move > 0 ) {
+                       if ( menu._width >= 250 ) {
+                               menu._width = 250;
+                               window.clearInterval( menu._interval );
+                               menu._interval = null;
+                       }
+               } else {
+                       if ( menu._width <= 0 ) {
+                               menu._width = 0;
+                               window.clearInterval( menu._interval );
+                               menu._interval = null;
+
+                               var rm = menu._box.lastChild;
+                               if ( rm.nodeName == 'DIV' )
+                                       menu._box.removeChild( rm );
+                       }
+               }
+
+               menu._box.style.width = ( 16 + menu._width ) + "px";
+               menu._box.style.opacity = 0.2 + menu._width * 0.003;
+       },
+       _update_position: function ( ev )
+       {
+               var y = window.pageYOffset || 
document.documentElement.scrollTop || 0;
+               menu._box.style.top = ( y + 100 ) + "px";
+       },
+       _li_form: function ( links, source, text1, textN )
+       {
+               var ltext = links.join( "\n" );
+               var text = links.length == 1 ? text1 : textN.replace( /%d/, 
links.length );
+
+               var form = el( 'form', { action: server + "add#cnt_" + cnt(),
+                       method: 'POST', target: '_blank' } );
+
+               form.appendChild( el( 'input', { type: 'hidden',
+                       name: 'links', value: ltext } ) );
+               form.appendChild( el( 'input', { type: 'hidden',
+                       name: 'comment', value: "source: " + source } ) );
+               form.appendChild( el( 'input', { type: 'submit', value: text } 
) );
+
+               var li = el( 'li' );
+               li.appendChild( form );
+
+               return li;
+       }
+}; /* }}} */
+
+function getCss() /* {{{ */
+{
+       var png_hook = 'url(data:image/png;base64,'
+               + 
'iVBORw0KGgoAAAANSUhEUgAAACAAAAAQCAYAAAB3AH1ZAAAAAXNSR0IArs4c6QAAAxVJREFUSMe9'
+               + 
'lM9rFGcYxz/vZjbJxrWMeCjehlzMQdJAcijoRWRvxbOgsDc39paDRNmCJTXI/AHC5LinHARPHoQh'
+               + 
'IJU9GTFYlMTDMhQstmXjJDtxdmdn3rcH39nOjLHuofiF4WWe98fzfJ/n+zxizTDKF9fWyks3bshp'
+               + 
'0yRFFAS4N2+y7ThCm9JV3VFKARJQ+gMQ3pMnpc3Ll1XU6+X2pk2TxosXmJZFARPG/LVrUxdu3/4G'
+               + 
'qABlYAIQHdct7bRa6H8JlABMy0r0f5xdoyAQz+7fF1GvB5CekUIItbS8rLRzlXGufM+LjO9XVgzg'
+               + 
'BHAKmAEM3/PEVrNJHIa5cIUQnLtyRWXYjVh2XJc3jx6NHtcZk9UzZ0qLjYbM2AGGURB027b9h/Ht'
+               + 
'/LwADGAKmIqCwGjbtuju7mYvCIDTc3MsNhoUUo/veWw1m8T9fj7gUonF69eLqVfA+47rvt9ptUKj'
+               + 
'UF/RcV2x02rxscwjO0alwqX19fQxkd17vrFBd2+vWF9Onz3Ld/V60dz3Pe/vrWbz4KcwlKVsakZM'
+               + 
'jkn9Qr3ObK32iRPf89h2HJSUOXsh4BQS6D7f2HjX3duLSYX1RSZzc5xfXWWyWs3ZoyCgbdv0ff+T'
+               + 
'O8cErIAD3/PebjvOhztSKnTtlVak2nYcNSYTUuHpTslh2jSLAUugFwXB723b3r/l+yP9GJqJaNu2'
+               + 
'6Pu+GIMJXyrX0vIymbaLgB7wtuO6f/3gOHGOYIaJKvTpcUzGKpduuwQIgQPgXRQE+0/v3YuL57M9'
+               + 
'n1N2gck4wpNGpaIura8PTcsaAEfAvv6Opk6eTDgGxq9379Ld3RWfYVIUUSo81f9Yx5RpAkQL9fpg'
+               + 
'tlY7AgLgUGdgKIRQfAbG6wcPUP/O9hhQGeGlMz11knRcN9lptdKzMTAEwmnTHJxfXQ0nq9WBrrv8'
+               + 
'L8ejAAaHhwnQ10IZABML9XoyW6tJ/Xik7dGfL18OH6+sxHEYxpl5n+h5L03LUuM4zYn2l8nJchJF'
+               + 
'hp4JojwzI3589QrTsrLMJSAfXr2qftvcBKX4uSDY/xVKKaGUEnwF/AP+JrSClDIuFgAAAABJRU5E'
+               + 'rkJggg=='
+               + ')';
+
+       var png_rsget_red = 'url(data:image/png;base64,'
+               + 
'iVBORw0KGgoAAAANSUhEUgAAABAAAABACAMAAAAkowekAAAAAXNSR0IArs4c6QAAAGBQTFRFdxAP'
+               + 
'fBYYgBsggCMihCclhzAvizUyjjg6kEA/l0pLm1FRnVlXo19ho2VkqmtqrHNysHp7uY2Lw52fyaan'
+               + 
'0ba018PF2czM3tHS5NnZ5eDe6ubk6Orn8Orp6+7q7e/r8PLvnUVSCwAAAfFJREFUOMtNU4m2qyAQ'
+               + 
'G9zrdsW2VKWE///LN4vax+nCic6QSQIlZABJv/ybiHeR/zOigIAAaBtbyYAEOpfUKDDx6p0bY+KH'
+               + 
'0oj7pvSmxXokqZSTmlJ7aG8+IX3b+tBjGdnDnvfXR97LJBQG2kJJ9NQS7oe6TX/kqJP2Qiy5AQ/a'
+               + 
'OqdAToiuR1lhcNwk67E1PahHW8l4OsvCtNedMSMGHH703yNsCkQdOjyfISphwstvRy+z9rtoROjK'
+               + 
'Y7TpRzmAwGc6Wt5vpgadhQaUtQzA04pAqSr3xW0ZW7EogJGq0RXDWLjJVA+Obk2NWJgu1XErpj7d'
+               + 
'vogiYV1DypdR8TtJh+l7O+etp8fpLVryE62uUedEFNexJOidCiRDs6YLfZsiXz3qJi3UsGL5MpsC'
+               + 
'q1iErOMz8PYv380fU8z4iQGaI34jWriAsb2JHX7mVdI8n8DwE0CcY2+p4uEdiQBqNjXSpuOH0Uo4'
+               + 
'CCwHAxCA7Q8fIf1c72k1c9l2SmyeV2PFNaSoJCHrRwFU1ZQzv5HyGRhRXBPNgaWMnwVaDrWo1a/d'
+               + 
'BvotA+RuuHIYaw7MKTI4DkhH8weLNjQwiIMFRuokUsE7p/mQA+/QXXHYH2csmRBZOCQOJrX2yMLc'
+               + 
'6FtgzkQJX7uV/5G1Szj91jn+FTztkc+tWM/bfzTpViSa6M6aAAAAAElFTkSuQmCC'
+               + ')';
+
<<diff output has been trimmed to 500 lines, 103 line(s) remained.>>
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to