Seven Yu @ 05/04/2009 (5:05 pm)

新站 gm.phpz.org

一个新站, 偶的 GM 脚本集合.
地址: http://gm.phpz.org/

目前包括针对 Twitter, Plurk 和 Picasaweb 等站的 5 个脚本.

会陆续丰富更新, 敬请关注.

Seven Yu @ 12/17/2008 (10:30 pm)

Get Picasaweb Image URL – 获取 Picasa Web 纯图片地址猴子脚本

Picasa WebGoogle 旗下的免费电子相册服务。我看中他的原因有三:免费、空间大、允许外链。

但美中不足,Picasa Web 只提供图片页面地址和一个带链接的图片代码,而且只有 144px,288px,400px和800px四种尺寸(见下图)。其实还有从32px到1600px的23个尺寸。(详见sfufoet煎蛋上的介绍

为了更方便地取得图片地址(纯图片地址、带img标签的和bbcode三种形式),以及所有尺寸的图片(默认512px),Get Picasaweb Image URL 猴子脚本诞生了。(效果见下图)

同时感谢 sfufoet 童鞋给我的建议(图片地址三种形式和图片的多种尺寸) :wink:

BTW:此日志中的图片地址就是用该脚本取得的,hoho~~~ :cool:

附上脚本代码:

PLAIN TEXT >> JAVASCRIPT:
  1. // ==UserScript==
  2. // @name           Get Picasaweb Image URL
  3. // @namespace      http://phpz.org/
  4. // @include        http://picasaweb.google.com/*
  5. // ==/UserScript==
  6.  
  7. var __suj_picasaweb_isinit = false;
  8. var __suj_parent_input;
  9. var __suj_imgurl_input = [];
  10. var __suj_sizes = [32,48,64,72,104,144,160,200,220,288,320,400,512,576,640,720,800,912,1024,1152,1280,1440,1600];
  11. var __suj_default_size_id = 12// default 512px;
  12. window.addEventListener('load', init, false);
  13. function init()
  14. {
  15.     var hakelinks = document.getElementsByClassName('lhcl_fakelink');
  16.     for(var ind in hakelinks)
  17.         hakelinks[ind].addEventListener('click',function(){!__suj_picasaweb_isinit && createUI();}, false);
  18.     var imglinks = document.getElementsByClassName('goog-icon-list-icon-img');
  19.     for(var ind in imglinks)
  20.         imglinks[ind].addEventListener('mouseout', function(){setTimeout(function(){!__suj_picasaweb_isinit && createUI();}, 1500);}, false);
  21. }
  22.  
  23. function createUI()
  24. {
  25.     __suj_parent_input = document.getElementById('lhid_snippet');
  26.     if(__suj_parent_input)
  27.     {
  28.         __suj_picasaweb_isinit = true;
  29.         var selecter = document.getElementById('lhid_snippet_size');
  30.         selecter.options.length = 0;
  31.         var op;
  32.         for(var s in __suj_sizes)
  33.         {
  34.             op = new Option();
  35.             op.text  = __suj_sizes[s] + 'px';
  36.             op.value = __suj_sizes[s];
  37.             selecter.options.add(op);
  38.         }
  39.         selecter.selectedIndex = __suj_default_size_id;
  40.         var timgurl = document.getElementById('lhid_snippet');
  41.         timgurl.value = timgurl.value.replace(/\/s\d+\//i, '/s' + __suj_sizes[__suj_default_size_id] + '/');
  42.         var appendin = document.getElementsByClassName('gphoto-embed-options')[0].parentNode;
  43.         var mylabel  = document.createElement('label');
  44.         __suj_imgurl_input.push(document.createElement('input'));
  45.         __suj_imgurl_input.push(document.createElement('input'));
  46.         __suj_imgurl_input.push(document.createElement('input'));
  47.  
  48.         mylabel.innerHTML = '图片地址';
  49.  
  50.         var myp = appendin.appendChild(document.createElement('p'));
  51.         myp.appendChild(mylabel);
  52.         for(var ind in __suj_imgurl_input)
  53.         {
  54.             __suj_imgurl_input[ind].className = 'gphoto-sidebar-inputbox';
  55.             __suj_imgurl_input[ind].addEventListener('mouseover'function(){getImageUrl();this.select();}, false);
  56.             __suj_imgurl_input[ind].addEventListener('click'function(){getImageUrl();this.select();}, false);
  57.             myp.appendChild(document.createElement('br'));
  58.             myp.appendChild(__suj_imgurl_input[ind]);
  59.         }
  60.         setTimeout(getImageUrl, 500);
  61.     }
  62. }
  63.  
  64. function getImageUrl()
  65. {
  66.     var str = __suj_parent_input.value;
  67.     str.match(/<img\s+src\s*\=\s*\"([^\"]+?)\"/i);
  68.     __suj_imgurl_input[0].value = RegExp['$1'];
  69.     __suj_imgurl_input[1].value = '<img src="'+RegExp['$1']+'" />';
  70.     __suj_imgurl_input[2].value = '[img]'+RegExp['$1']+'[/img]';
  71. }