時計坂一刻館三号室

归类于 程式::五代 的日志存档

[081110] Fiddler Switch 1.3 - Firefox Extension

屈超(沙滩凉鞋) 发表于 2008 年 11月 10 日 21 时 32 分

[最近更新]

继续根据小马同志在“与空帷同志的一次谈话”中所提出的
《关于状态提示文字切换等若干指导意见》
进行了升级……

Fiddler Switch Context Menu

最近接连发了很多 Mozilla 向的东西……
不知有没有吓到大家……
打铁要趁热……
今天我又带来一款 Firefox 扩展……
名曰“Fiddler Switch”……

做前端开发的朋友应该对 Fiddler 不陌生……
而不做前端的似乎又很少能够用到它……
所以对于 Fiddler 我这里就不多做介绍了……
实在不了解的可以稍微 Google 一下……

那么该扩展的功用就是在 Firefox 状态栏添加一个开关……
点击它便可以自动启动或关闭 Fiddler ……

你可能觉得这是一个相当简单的过程……
诚然……
有很多方法能让你一键启动程序……
但由于 Fiddler 对 HTTP 的监控是以 Proxy 的方式……
而 Fiddler 仅能为 IE 自动切换代理……
所以对于使用 Firefox 的朋友……
频繁地更改代理设置……
不要太麻烦哟……
(当然你可以将 fiddler 端口写进 pac ……)

本扩展的出现将解决前端开发者的这一烦恼……(-__-)
前端工程师们……
如果你想在 6:00 PM 整点下班……
请义无反顾的安装吧……

介绍完毕……
提供下载……

最后预告一下……
最近会将本扩展改造成某代理扩展……
不要太方便哟……

[更新记录]

[08-10-26] 1.0: 初始发布
[08-10-??] 1.1: 未发布
[08-11-06] 1.2: 程序启动后,右键点击图标弹出操作菜单
[08-11-10] 1.3: 增加鼠标移上图标时的状态文字切换

[下载地址]

国外: http://www.quchao.com/projects/mozilla/firefox/extension/fiddlerSwitch.xpi
国内: http://vip.yyjoy.com/chappell/mozilla/firefox/extension/fiddlerSwitch.xpi
官方: https://addons.mozilla.org/zh-CN/firefox/addon/9373

9 则评论 | 永久链接 | Trackback | RSS 2.0

FLV Downloader - 本文停止更新,请直接访问 DownFlv.com

屈超(沙滩凉鞋) 发表于 2008 年 10月 19 日 3 时 36 分

完整显示   1 2 3 4 5 6 7 8 9 10
特别提示

这些天针对优酷、土豆和 56 进行了更新……
大家都知道……
优酷采用了分段视频的储存方式……
而我实在没空将支持多视频分析的半成品 Downflv.com v2 更新上线……
所以我采取了另一种改良方式对目前的优酷分段视频进行了支持……(使用 data:URI)
所以对于优酷分段视频的分析仅支持 Firefox、Chrome/Safari、Opera 等浏览器……
只能对 IE 用户说声抱歉了……

最近更新

前天完成了 Opera Widget for FLV Downloader 并提交到官方 ……
不幸成为 Opera 官方上的第四款国产 Widget ……
LOL……
不过还有一个遗留问题:
无法从 Opera 获取当前 Tab 的 URL ……
如您知道此方法望不吝赐教……
PS:
刚发现用 Opera 浏览下载器页面会变得惨不忍睹…… (所幸使用正常……)
怪我当初没给 GGAD 留下好位置……
Opera 用户再忍几日……
待我的新界面出炉……

至此 Maxthon、Firefox、Opera 的插件均业已齐全……
官方下载地址如下(用相应浏览器均可以在线安装):

Maxthon Plugin for FLV Downloader
Firefox Extension for FLV Downloader
Opera Widget for FLV Downloader

下个目标是 IE7 的 Addon ……

Downloader Logo

下载器地址如下
http://www.quchao.com/video/

如果您觉得本工具侵犯了贵站权益……
联系我……
我会尽快移除……

具体支援的站点列举如下(按英文字母序排列):

目录

  1. 最近更新
  2. 开发日志
  3. BookMarkLet 使用方法
  4. Maxthon 快捷搜索使用方法
  5. IE7 快捷搜索使用方法
  6. Maxthon 插件使用方法
  7. FireFox 扩展使用方法
  8. Opera 控件使用方法
  9. IE 右键插件使用方法
  10. 已知问题
完整显示   1 2 3 4 5 6 7 8 9 10

327 则评论 | 永久链接 | Trackback | RSS 2.0

[081015] 为 Firebug 修复外部编辑器的乱码 Bug……

屈超(沙滩凉鞋) 发表于 2008 年 10月 15 日 20 时 13 分

如果你看过我的上一篇文章……
应该已经了解我要解决的这个 Bug 究竟是怎么一回事儿……

很不幸 FirefoxFirebug 都有类似 Bug ……
也即在外部编辑器中查看网页 HTML 源码的乱码问题……
该 Bug 在 Firebug 的历代版本中均存在……
除了 Windows 我也在 Mac 版上发现了该 Bug ……

但与 Firefox 本身的问题不同……(见我前一篇文章
Firebug 采取的另外一种方式来处理……
但显然也没能够逃脱产生乱码的“厄运”……

Bug 具体的描述如下……
如果你通过 Firebug 的菜单命令配置过外部编辑器……
(Tools -> Firebug -> Open With Editor -> Configure Editors)
那么配置完毕后将在你的右键上下文菜单中显示 Open With Editor 命令组……(如下图)

Open with editor in Firebug

通过这个命令组……
你可以选择不同的编辑器对当前的网页源码进行查看和编辑……
确实非常便捷……
但是……
当你想用 Firebug 的这一功能查看任何包含有非 ASCII 字符的网页时……
你则可能遇到下面两种问题……

第一种……
当你想要查看任何包含非 ASCII 字符的线上页面源码时……
你可以正常打开它……(因为 Firebug 用 ascii 字符命名 tmp 文件)
但你看到的内容将是存在乱码的……(如下图)

Encoding bugs with viewing online source file in firebug

第二种……
当你把一个文件名中包含非 ASCII 字符的文件拖进 Firefox ……
并想要查看其源码时……
你的编辑器却连文件都无法打开……(如下图)

Bug with viewing local source file in Firebug

研究 Firebug 源码后得知……
对于第一种情况……
是由于 Firebug 没有对 Unicode 的源码进行转码所致……
而第二种情况……
则是因为 Firebug 在向编辑器发送命令行参数时没有对文件名进行转码……
(如果你还想追问我为何 Firebug 的源码面板没有乱码……
我可以顺便告诉你:因为这些流程都在 Firefox 内部……)

知道了造成 Bug 的原因……
我们就可以操刀开始解决了……

对于第一种情况……
只需要将其转为 UTF-8 编码即可……
打开 profile\extensions\firebug@software.joehewitt.com\content\firebug\firebug.js 文件……
搜索:

  1. temporaryFiles.push(file.path);

在其下方添加代码:

  1. // Hacked by Chappell.Wat @ QuChao.com on 2008-10-14 start
  2. data = convertFromUnicode('UTF-8', data);
  3. // Hacked by Chappell.Wat @ QuChao.com on 2008-10-14 end

对于第二种情况……
则稍微复杂一点……
因为通过命令行发送参数到系统时需要根据系统的 non-unicode 默认编码来转码……
(由于条件所限我这里仅针对 Windows 进行修改)
比如我虽然使用英文系统……
但是为了完美支持中文我将字符集改成了 936 ……
那么我就需要将那个“乱码”文件名转为 GB2312 或 GBK……
其它语言的用户请按情况修改……(如果你看得懂的话)
同样是打开 profile\extensions\firebug@software.joehewitt.com\content\firebug\firebug.js ……
搜索:

  1. args.push(localFile);

在其下方添加代码:

  1. // Hacked by Chappell.Wat @ QuChao.com on 2008-10-14 start
  2. if ('WINNT' === getPlatformName()) {
  3. localFile = convertFromUnicode('GB2312', localFile);
  4. }
  5. // Hacked by Chappell.Wat @ QuChao.com on 2008-10-14 end

这样就大功告成了……
自动判断系统 non-unicode 默认编码的方法我已经找到……
有待我测试后更新……
在此之前请各位还是手动修改吧……
@081015 更新:
我今天测试的时候发现……
某些情况下 Firebug 的代码并不能完全处理 UTF8 的 BOM 头……
所以我们再写一段代码来自己清除它……
打开 profile\extensions\firebug@software.joehewitt.com\content\firebug\lib.js ……
搜索:

  1. var segments = [];

在其下方添加代码:

  1. // Hacked by Chappell.Wat @ QuChao.com on 2008-10-15 start
  2. var fileLen = stream.available();
  3. if ('UTF-8' === charset && fileLen > 3) {
  4. var bom = sis.readBytes(3);
  5. if (String.fromCharCode(239, 187, 191) !== bom) {
  6. segments.push(bom);
  7. }
  8. }
  9. // Hacked by Chappell.Wat @ QuChao.com on 2008-10-15 end

不过这样做是否会有什么副作用我暂时还不知道……
是否修改就看你个人选择了……

最后……
为懒人们提供修改完成的版本……(v1.2.1)
不堪乱码困扰的你一定要下载……
Bug 我也会提交到 Firebug 的官方讨论组……
希望以后不用劳烦我们自己修改就能避开这种恼人的问题……

国外: http://www.quchao.com/projects/mozilla/firefox/extension/firebug-1.2.1-fx_fixed_by_quchao.xpi
国内: http://vip.yyjoy.com/chappell/mozilla/firefox/extension/firebug-1.2.1-fx_fixed_by_quchao.xpi

2 则评论 | 永久链接 | Trackback | RSS 2.0

[081011] View Source in External Editor Bugfixer 0.9b ……

屈超(沙滩凉鞋) 发表于 2008 年 10月 12 日 1 时 00 分

好久没空来写点儿东西了……
今天给带来昨天刚完成的一款 Firefox 扩展……

习惯在 Firefox 里使用外部编辑器查看 HTML 源码……
然而它一直都存在这样一个 Bug ……(如图)

Encoding Bug with Source Viewing in Firefox

这个 Bug 在 Window 下所有版本的 Firefox 都存在……
原因十分简单……
Firefox 将源代码存到 windows 的 temp 文件夹后……
忘了给文件名转码……
此时源码文件的文件名是 non-unicode 编码的……
而在 Firefox 内部却是 unicode 的……
等你执行 View Page Source 命令后……
Firefox 将文件名作为参数发送给你所设置的外部编辑器……
编辑器当然找不到源码文件路径……
这也解释了为何我们可以用外部编辑器正常打开英文网站的源码……

实上在 Bugzilla 上是可以找到相关的 Bug 报告……
比如以下两个:
https://bugzilla.mozilla.org/show_bug.cgi?id=172817
https://bugzilla.mozilla.org/show_bug.cgi?id=408923

既然有 Bug 我们来修复就好了……
这就是我这个扩展的主要功能……
安装后它会修改与查看源码相关的相关函数……
把临时文件的文件名正确转码后才发送给你的编辑器……
这样就能正确打开了……(如图)

Encoding Bugfixes

最后有三点需要注意……
1. 该 Bug 仅当使用外部编辑器查看源码时存在……
如果你使用 Firefox 内部页查看源码……
请无视……
如果你想从现在开始使用外部编辑器来查看源码……
请将 view_source.editor.external 设为 true ……
并把外部编辑器的路径写到 view_source.editor.path ……

2. 本扩展目前仅适用于简体中文用户……
因为我还没找到从 Firefox 里获取用户 non-unicode 默认编码的方法……
在注册表中没有找到……
有线索的朋友可以留言告诉我哟……

3. 装本扩展仅能解决 Firefox 内置的查看源码的方法……
Firebug 的 Open with Editor (打开编辑器)功能虽然使用的自建方法……
(请看清:是右键和菜单栏下的一个功能组……)
但仍然会存在乱码问题……
不同的是用 Firebug 所提供的该功能打开源码看到的是内容乱码……
因为它根本就没有对网页内容进行转码(见其 editor.js 功能)……
有兴趣的朋友可以使用 converter-output-stream 组件的 nsIConverterOutputStream 接口来修复该问题……
至于 Firebug 为何在打开文件时不存在乱码问题……
原因很简单……
它的临时文件的文件名是一水儿的 ascii 字符……(笑)

由此引出三个 Todo……
1. 下个版本会在选项面板提供一个文件浏览控件……
方便你简单地设置外部编辑器路径……

2. 自动判断用户的 non-unicode 默认编码值……

3. 考虑解决 Firebug 的外部编辑器乱码 Bug 并提交给 Firebug 官方……
但不确定人家要不要……
(已于 2008.10.15 解决,详见这篇日志

呵呵……
解决上面几个问题……
本扩展就迎来其 1.0 版本……

哦对了……
支持 2.0 - 3.0.* 的所有版本……
事实上在我的 3.2 beta pre 上也工作正常……

最后提供下载……

国外: http://www.quchao.com/projects/mozilla/firefox/extension/viewSourceInExternalEditorBugfixer.xpi
国内: http://vip.yyjoy.com/chappell/mozilla/firefox/extension/viewSourceInExternalEditorBugfixer.xpi

userChrome.js 计划中……
但将在解决自动判断编码的问题后提供……

2 则评论 | 永久链接 | Trackback | RSS 2.0

[080725] SingletonFox 1.2 -Firefox Extension-单实例运行

屈超(沙滩凉鞋) 发表于 2008 年 7月 30 日 19 时 02 分

[最近更新]

更新至 1.2 版本……
修改了按住 Shift 单击链接新开窗口的相关代码……
更改为在新标签页中打开……
推荐更新……

SingletonFox 是我新近编写的一款 Firefox 扩展……
目的非常单纯……
就是为了强制 Firefox 始终保持单实例状态运行……

依稀记得早在 1.5 时代……
Firefox 本身通过参数配置便可实现单实例运行的……
而 2.0 之后就消失掉了……
大家转向使用个 Tab Mix Plus (以下简称 TMP)来实现……
但 TMP 太过臃肿……
很多国内用户都用 Tab Mix Lite CE (以下简称 TML CE)……
遗憾的是 TML CE 并不提供类似功能……

有的同学可能认为自己没遇到过多实例 Firefox 的状态……
诚然……
你通过修改 Pref.js 的设置确实能在很多地方强制使用标签页浏览……
但你仍然可以通过其它各种途径“不经意间”开启多实例……
(TMP 扩展用户不在此列……)
比如按住 Shift 单击链接……
比如在链接的右键上下文菜单上选择“New Window”……
再比如直接重新开启一个新 Firefox 程序……
这时你会发现 Firefox 有多个实例……
并且共用一套 Session 系统……
开发团队的确用心良苦……
(注意要转折了……)
但是……
这个世界上终究有些人还是更愿意单实例运行的……
比如我……

于是……
在寻找可用方案无果的情况下……
我写了这个插件……
不知道 TMP 是如何实现的……
我的做法是在 Firefox 实例化时进行检查……
如果实例已存在便将新实例里的标签页全部移交给之前的那个……
然后关闭新实例……

然后……
强烈建议配合 TML CE 使用……
这下又多一个抛弃臃肿的 TMP 的理由了……

另外……
扩展我已经提交到 Mozilla 官方了……
照例还是在 SandBox 里……
有帐号且支持本扩展的同学可以帮忙评论一下……
这是它逃离 SandBox 的唯一途径……

今天就到这儿了……
有意见请留言……

[更新记录]

[08-07-18 ] 1.0: 初始发布
[08-07-25 ] 1.1: 禁用新建窗口功能并覆写相关设置
[08-07-30 ] 1.2: 将 Shift + Click 打开新窗口修改为打开新标签

提供扩展下载……

国外: http://www.quchao.com/projects/mozilla/firefox/extension/SingletonFox.xpi
国内: http://vip.yyjoy.com/chappell/mozilla/firefox/extension/SingletonFox.xpi
官方: https://addons.mozilla.org/zh-CN/firefox/addon/8182

另为 userChrome.js 用户提供脚本版下载……
(实际上最初我就写的脚本版)
功能完全相同……

国外: http://www.quchao.com/projects/mozilla/firefox/userchrome_js/singletonFox.uc.js
国内: http://vip.yyjoy.com/chappell/mozilla/firefox/userchrome_js/singletonFox.uc.js

20 则评论 | 永久链接 | Trackback | RSS 2.0

[080705] 天涯助手 Lite 1.0:高亮楼主 && 只看楼主

屈超(沙滩凉鞋) 发表于 2008 年 7月 5 日 22 时 31 分

之前有同学报告说之前的天涯助手脚本失效了……
原来是天涯更新界面代码的缘故……
(很抱歉我并不很常去那里……)
仔细一检查才知道其增加了官方的“只看楼主”的功能……
只可惜未注册用户是无法享用的……

在某论坛得知了另一种启用“只看楼主”功能的方法……
也即通过 oTianYa.cn 来辅助实现……
oTianYa 的原理很简单……
用服务端文件去采集用户欲访问的帖子……
然后处理内容并过滤后显示……
与之前我编写的天涯助手脚本之间的区别……
无非在于它是服务端处理的第三方实现……
不过说实话……
目前在“高亮楼主”和“只看楼主”之间的切换动作会产生页面刷新……
(而天涯助手则不需要……)
当然啦……
作为一个网站……
追求 PV 是无可厚非的……
另一方面……
由于是第三方网站……
图片的“盗链”问题是存在的……
有兴趣的同志也可以安装 RefControl 来解决……
但脚本就没有此限制……

不管怎么说……
它不失为实现这些增强功能的另一种方法……
由于天涯助手的最新版本尚在编写中……
我先编写了本文中的“天涯助手 Lite”……
可以方便大家使用 oTianYa 提供的功能……
除了原先天涯助手所提供的“高亮楼主”和“只看楼主”之外……
还增加了简单的“广告过滤”功能……

浮动控制栏与原先的版本一样……
Lite 版也同时提供“猴子脚本命令”和“浮动控制栏”两种控制方式……
(最原始版所提供的快捷键功能已被移除……)
其中猴子脚本命令的操作方法是:
在猴子图标上点击右键并选择 User Script Commands……
选项有……
1.天涯助手 Lite - 隐藏浮栏/恢复
2.天涯助手 Lite - 只看楼主/恢复
3.天涯助手 Lite - 高亮楼主/恢复
(如下图)
猴子脚本命令

由于和之前的天涯助手功能和操作方法均差不多……
所以就介绍到这里……
有问题请留言……
感兴趣的朋友可以直接下载试用……
国外用户:http://www.QuChao.com/Projects/UserScripts/Tianya_Helper_Lite.user.js
国内用户:http://VIP.YYJoy.com/Chappell/UserScripts/Tianya_Helper_Lite.user.js
脚本官方http://UserScripts.org/Scripts/Source/29641.User.js

最后说点儿近期安排……
由于马上动身去杭州……
所以天涯助手的更新应该会延后……
而解决“隐性特殊链”的 SpeciLink 开发工作也会延后哦……

4 则评论 | 永久链接 | Trackback | RSS 2.0

在 Firefox 中将 Thunderbird 设为默认 RSS 阅读器……

屈超(沙滩凉鞋) 发表于 2008 年 6月 3 日 7 时 42 分

Set ThunderBird as Default RSS Reader in Firefox

之前主要用 Google Reader ……
但在线工具毕竟是在线工具……
没有手感 -__- ……
在我还没下定决心用 Google Gear 之前……
我想到了用 ThunderBird ……

好歹自己也算是个 ThunderBird 的拥趸了……
不仅仅只是把它作为一个邮件终端……
还利用其强悍的 Filter 和 Tag 功能管理邮件列表、订阅新闻组……
然后配合 LightningGoogle Calendar 和 Treo 来实现 GTD ……
这次将其提拔为 RSS 阅读器实在是最近有点儿心痒……
想折腾折腾工作环境……

好吧……
入正题……
有人可能会问……
Firefox 不是允许选择线下 RSS 阅读软件么?」
是的……
的确可以……
但是你可以指定 ThunderBird 作为阅读器试试看……
点击 “Subscribe Now” 后除了呼出 ThunderBird 外并没有执行订阅操作……
自家人都不认自家人了……
像个什么话!

屡试屡爽之后……
我意识到这可能是个 Bug ……
二话不说上 Bugzilla 一搜……
果然就就是 Bug 350735 ……
不过前年的 Bug 至今还没解决还真是有点儿那啥……

继续搜索……
找到几种解决临时方案……
其中在 MozillaZine 论坛找到的方案应该是最通用的一种了……
作者 alta88 说是由于 Thunderbird 接受 Feed 的参数与 Firefox 发送的不符而造成的……
知道原因就好办了……
马上搜索 ThunderBird 源码……
在 components\newsblog.js 中找到了如下代码:
(Portable ThunderBird 位于 App\thunderbird\components\newsblog.js)

  1. /* nsICommandLineHandler */
  2. handle : function(cmdLine)
  3. {
  4. // we only care about "-mail someurl" where someurl is a feed: url
  5. // we also don't want to remove the parameter in case we don't end up handling it...
  6.  
  7. var mailPos = cmdLine.findFlag("mail", false);
  8. if (mailPos != -1 && cmdLine.length >= mailPos )
  9. {
  10. var uriStr = cmdLine.getArgument(mailPos + 1);
  11. if (/^feed:/i.test(uriStr))
  12. {
  13. var mailWindow = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService()
  14. .QueryInterface(Components.interfaces.nsIWindowMediator).getMostRecentWindow("mail:3pane");
  15.  
  16. // if we don't have a 3 pane window visible already, then we can optimize and do nothing here,
  17. // that will let the default command line handler create a 3pane window for us using the feed
  18. // URL as an argument to that window when it gets constructed...so we only care about the
  19. // case where we want to re-use an existing 3 pane to subscribe to the feed url
  20. if (mailWindow)
  21. {
  22. cmdLine.handleFlagWithParam("mail", false); // eat up the arguments we are now handling
  23. cmdLine.preventDefault = true; // prevent the default cmd line handler from doing anything
  24.  
  25. var feedHandler = Components.classes["@mozilla.org/newsblog-feed-downloader;1"].getService(Components.interfaces.nsINewsBlogFeedDownloader);
  26. if (feedHandler)
  27. feedHandler.subscribeToFeed(uriStr, null, mailWindow.msgWindow);
  28. }
  29. }
  30. }
  31. },

显然可以看出……
ThunderBird 要求 Feed 作为 Mail 参数来传递……
具体格式为:

  1. thunderbird.exe -mail feed:URL

我在命令行下测试如下命令……

  1. thunderbird.exe -mail feed:http://www.quchao.com/feed/

果然成功地订阅成功……

问题找出来就好解决了……
两种方案……
让 Firefox 附上参数……
或让 ThunderBird 忽略参数……
显然添加参数比忽略参数要安全……
毕竟 ThunderBird 不只是 RSS 阅读器而已……
忽略掉参数怕会影响其它的服务哟……

那么就拿 Firefox 开刀吧……
看了 alta88 的解决方案……
他增加了两个 pref 变量用来保存参数和 Feed 协议……
很通用的方法……
但我个人觉得没有必要……
不如直接判断阅读器的文件名……
包含 Thunderbird 变添加参数后发送……
一来不必往 Pref 里添加并不常用的变量……(洁癖作祟?)
二来其它 RSS 阅读器没准就直接支持 Firefox 的方式……

我的修改方法如下:
找到 Firefox 的 components\FeedConverter.js 文件……
(Portable 版本位于 App\firefox\components\FeedConverter.js)
搜索:

  1. var ios =
  2. Cc["@mozilla.org/network/io-service;1"].
  3. getService(Ci.nsIIOService);
  4. var feedURI = ios.newURI(spec, null, null);
  5. if (feedURI.schemeIs("http")) {
  6. feedURI.scheme = "feed";
  7. spec = feedURI.spec;
  8. }
  9. else
  10. spec = "feed:" + spec;
  11.  
  12. var ss =
  13. Cc["@mozilla.org/browser/shell-service;1"].
  14. getService(Ci.nsIShellService);
  15. ss.openApplicationWithURI(clientApp, spec);

替换为:

  1. // Hacked by Chappell.Wat from http://QuChao.com @ 2008-6-3
  2. if (clientApp.persistentDescriptor.toLowerCase().indexOf('thunderbird') != -1) {
  3. var targetFile = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsILocalFile);
  4. try {
  5. targetFile.initWithPath(clientApp.persistentDescriptor);
  6. }
  7. catch(e) {
  8. alert(e);
  9. return(false);
  10. }
  11. if (!targetFile.exists()) {
  12. alert('Client Does Not Exists.');
  13. return(false);
  14. }
  15. spec = 'feed:' + spec;
  16. var process = Cc['@mozilla.org/process/util;1'].getService(Ci.nsIProcess);
  17. process.init(targetFile);
  18. var arguments = ['-mail', spec];
  19. process.run(false, arguments, arguments.length,{});
  20. } else {
  21. var ios =
  22. Cc["@mozilla.org/network/io-service;1"].
  23. getService(Ci.nsIIOService);
  24. var feedURI = ios.newURI(spec, null, null);
  25. if (feedURI.schemeIs("http")) {
  26. feedURI.scheme = "feed";
  27. spec = feedURI.spec;
  28. }
  29. else
  30. spec = "feed:" + spec;
  31.  
  32. var ss =
  33. Cc["@mozilla.org/browser/shell-service;1"].
  34. getService(Ci.nsIShellService);
  35. ss.openApplicationWithURI(clientApp, spec);
  36. }

原理是判断阅读器文件名……
包含 “thunderbird” 便发送 -mail 参数……
至于为何要换 openApplicationWithURI 函数为 run ……
事出无奈……
openApplicationWithURI 似乎无法发送形如 -mail feed:URL 的参数……
且源码应该是被封在 browser.xpt 里……
不过使用效果一样就行了……

最后……
轮到测试时间了……
测试之前我建议还没有在 ThunderBird 里建立 RSS 账户的朋友去新建一个……
(File -> New -> Account… -> RSS News & Blogs)
我当初修改了好久均无法调用订阅动作……
看了代码才知道是没有 RSS 账户提供绑定……
(详见 components\newsblog.js 文件的 120-132 行 )

下面跟着我一起访问 feed:http//www.quchao.com/feed/
(要是觉得慢也可以自己随便找个源喔……)
浏览器会把你带到订阅界面……
在下拉菜单中选择 “Choose Application” 并定位于你的 ThunderBird ……
(如顶图)
接下来猛击 “Subscribe Now”……
不出意外 ThunderBird 应该被激活(或启动)来验证 Feed 地址……
如果验证无误……
这个 Feed 应该就乖乖躺在你的 RSS 账户里了……
如果没有它躺下……
您可以在本文后留下您遇到的问题……
我会尽力解答……

Use FolderPane Tools to change the order

题外话一:
如果你和我一样由于邮箱太多……
新建的 RSS 账户位于底部看不见的话……
我建议使用 FolderPane Tools 来调整账户的顺序……
(如上图)

题外话二:
如果你和我一样不习惯将 RSS 和 Mail 数据放在一起的话……
你可以看看这篇文章……
顺便说一下我的 RSS 账户 ID 是 11……
(现在你知道我到底在 ThunderBird 里放了多少东西了吧)
修改完后……
RSS、邮件和新闻组的数据放在不同的文件夹……
看着舒心……
用着也放心……

题外话三:
很早之前用过一个名为 RSS News Ticker 的软件……
相当好用……
但是该软件的更新是全局式的……
比如你设置 10 分钟更新一次……
那么不管 RSS 有没有显示完它都会“敬业”地进行更新……
我的想法是仅仅订阅一个源……
这个源包含所有我未读 RSS ……
是否能通过编写 Thunderbird 扩展来完成呢……
考虑ing……

2 则评论 | 永久链接 | Trackback | RSS 2.0

[080418] 天涯助手 1.3:高亮楼主 && 只看楼主 (UserScript)

屈超(沙滩凉鞋) 发表于 2008 年 4月 18 日 12 时 48 分

 注意:新版本尚在编写中,推荐使用缩略版:
http://www.quchao.com/entry/tianya-helper-lite/

[080418]
修正本脚本在天涯某些使用 Ajax 进行分页的版面里无法正确获取首页楼主 ID 的 Bug……
使用鄙人所架设的 ChinaList for Pagerization 源的朋友……
如果想更好使用本脚本……
请在 Pagerization 的 Excluded Pages 添加以下页面……

http://cache.tianya.cn/publicforum/content/*
http://cache.tianya.cn/techforum/content/*
http://*.tianya.cn/new/publicforum/Content.asp?idWriter=*
http://*.tianya.cn/new/techforum/Content.asp?idWriter=*

经过鄙人测试……
该脚本应该算是比较圆满了……
如没有大的问题就不会再更新了……
:)

[080417]
终于解决了此脚本运行时出现的兼容问题……
我开始以为是 FF2 和 FF3 所渲染出来的页面差异问题……
害我昨天的更新还专门针对浏览器的大版本来区别处理……
今天找 ObiWan 测试后才知道“全世界”就我的 Firefox 渲染出来的页面代码不同……(笑)
我的系统和环境基本都是英文的……
不知道和语言版本有没有关系……
不过算了……
既然代码有些许不同……
我只好用正则来解决了……
起初怕正则效率低影响大伙儿的看帖热情……
写完后测试下发现还不错……
哎……
早就该采用正则 + Xpath 这样比较科幻的方法来解决的……
害我昨天白更新了……

浮动控制栏 今天最大的更新是添加了“浮动控制栏”……
Skyee 说这种方便的玩意儿是“小白专用”的……
那我觉得他应该就算最大的小白了……
浮动栏的效果不错……(如右图)
还可以从猴子命令里进行隐藏哟……(-__-|)

1.2 的更新内容如下:
1.添加浮动控制栏……
2.修正某些 Bug ……
3.改用正则替换解决版本间兼容问题……

============================================

[080416]
发布后收到许多 FF2 用户不能正常使用的反馈……
坐下来研究了下……
原来是 FF2 和 FF3 对 HTML 源码进行整理的结果不同所致……
无奈只能找出尘封已久的 FF2.0.014 测试并更新……
目前应该能支持 FF2 平台了……
另外……
Adblock+Firebug 等会对页面源码进行修改的插件也在一定程度上影响了脚本效果……
我只能尽可能地加以兼容……
GreaseMonkey 本身对脚本的影响也不小……
比如某些旧版本的猴子在读写选项值时是不支持 Unicode 字符的……
就需要用 encodeURI 和 decodeURI 加以处理……

1.1 的更新内容如下:
1.支持 FF2 平台……
2.修正某些 Bug ……
3.缩小代码重构范围来提高速度……

ToDo:
1.完善对某些特殊版面(使用 js 分页)的支持……
目前仅支持该类型版面(如开心乐园)帖子的第一页……

2.增加浮动按钮方便激活功能……
3.消除与 Pagerization 的冲突……

============================================

[080415]
几个月前就答应 Skyee 君要编写这样一个用户脚本(GreaseMonkey UserScript)……
而当时也确实着手去写了一个……
无奈天涯社区里帖子的 HTML 代码实在是太不规范……
无法用 XPath 去做预想中的操作……
然后编写工作就中断了……

近来天涯俨然成了我等“愤怒青年”(笑)的集散地……
闲暇时刻要在那里耗费不少时间……
而帖子里主次不分的回复也着实让俺深切体会到了 Skyee 君的痛苦……
于是乎俺下定决心要写为天涯论坛写一个“只看楼主”的猴子脚本了……

花了两个晚上的时间……
终于实现了这个功能……
天涯社区的帖子代码嵌套有不小问题……
导致 DOM 树生长得很畸形……
因此 XPath 只用在了取楼主 ID 这样的小地方……
真正的操作还是通过重构源码来实现的……
有兴趣的朋友还是直接看代码吧……

该脚本为用户提供了两个主要的功能……
一是仅显示楼主所发的帖子……(Ctrl - Y)
二是高亮显示楼主所发的帖子……(Alt - Y)
个人觉得第二个功能似乎还要更常用一些……
毕竟天涯里的回帖也是战斗的乐趣所在……
因此俺给高亮功能提供了较大的自由度……
你可以通过编写 CSS 自定义高亮的效果……
(默认是粗体+红色边框…… 详见后面的截图)

除了  Ctrl - Y 和 Alt - Y 两个快捷键……
你还可以通过状态栏的猴子的菜单命令来控制……
在猴子图标上点击右键并选择 User Script Commands……
选单中……
1.天涯助手 - 只看楼主/恢复
2.天涯助手 - 高亮楼主/恢复
3.天涯助手 - 隐藏浮栏/恢复
(自 1.2 起添加了浮动控制栏可供更方便地操作……)

下面来讲解一下功能配置……
在 GreaseMoneky 中选中本脚本并进行编辑……
脚本信息的下方便是配置代码段……

  1. /*-----------------------------------------------------------------------------
  2. * Configuration
  3. *-------------------------------------------------------------------------- */
  4. // Auto show author's only? [true or false]
  5. var AUTO_ENABLE = false;
  6.  
  7. // Auto highlight author's? [true or false]
  8. var AUTO_HIGHLIGHT = false;
  9.  
  10. // Disable the hotkeys? [true or false] (Note: Ctrl-Y to hide/show; Alt-Y to highlight/restore)
  11. var DISABLE_HOTKEY = false;
  12.  
  13. // Hightlight style, Sample: font-weight:bold!important;border:1px solid red;
  14. var HIGHLIGHT_STYLE = '';
  15.  
  16. // Normal style, Sample: font-weight:normal!important;border:0;
  17. var NORMAL_STYLE = '';

其中……
AUTO_ENABLE 设置是否自动开启“只看楼主”功能……(true 或 false)
AUTO_HIGHLIGHT 设置是否自动开启“高亮楼主”功能……(true 或 false)
DISABLE_HOTKEY 设置是否禁用快捷键……(Ctrl - Y 和 Alt - Y)
HIGHLIGHT_STYLE 设置高亮帖子的 CSS ……(默认是粗体加红框显示)
NORMAL_STYLE 设置非高亮状态时的 CSS ……

说这么多不如直接给出截图……
(截图来源于此贴……
如果您觉得截图内容侵犯了您的权益……
请联系我移除……)

原始状态:
原始状态

只看楼主 (Ctrl-Y):
只看楼主 (Ctrl-Y)

高亮楼主 (Alt-Y):
高亮楼主 (Alt-Y)

猴子命令:
高亮楼主 (Alt-Y)

浮动控制栏:
浮动控制栏

功能就介绍到这里……
感兴趣的朋友可以直接下载试用……
国外用户:http://www.QuChao.com/Projects/UserScripts/Tianya_Helper.user.js
国内用户:http://VIP.YYJoy.com/Chappell/UserScripts/Tianya_Helper.user.js
脚本官方http://UserScripts.org/Scripts/Source/25213.User.js

有什么意见和建议就留言吧……
如有需要俺会及时更新的……
今天就到这里吧……

12 则评论 | 永久链接 | Trackback | RSS 2.0

[080404] ChinaList for Pagerization 支持 VeryCD 全站

屈超(沙滩凉鞋) 发表于 2008 年 4月 4 日 0 时 30 分

终于有时间更新了……
因为老外的两个数据源已经不再支持 Baidu ……
那么我的 ChinaList 理所当然得接过了这个任务……
目前修复了百度绝大部分的常用服务……
除了图片和视频……
前者是使用 js 生成的链接……
后者则是用 js 控制着排版……
虽然最新版本的 Pagerization 已然增加对前者类型的支持……
(也就是说 cnBeta 这样的站将有可能自动滚屏成功……)
但 ChinaList 是一个 XPath 专用源……
如果添加了类似站点的支持……
不知道会不会对不同滚屏脚本的兼容度造成影响……
因此我暂时没有添加对百度图片的滚屏支持……
而百度视频由于排版的关系将不予支持……
规则已经注释在 ChinaList 页面源码内……
有兴趣地可以自行浏览……

目前我使用 FF3B4 + GreaseMonkey 0.7.20080121.0 + Pagerization 0.2.2a ……
使用正常……
(重新安装 Pagerization 别忘了添加 ChinaList 喔……)

=============== 华丽地分割 =================

沉寂了多日……
今天终于忍不住更新了……
为了方便自己长期关注“天使也魔鬼” MM ……
我终于加入了对 Mop 贴贴 的支持……
这样就能“一拖到底”了……
更有甚者居然要求我编写“只看楼主”的用户脚本……
我艹……
好色也该有个限度吧……
另附“天使也魔鬼”的更新帖地址供大伙儿体验……
请猛击:http://tt.mop.com/club/read_2033236.html

=============== 华丽地分割 =================

Pagerizations 是著名 Firefox 扩展—— GreaseMonkey 的一个 User Script……
简而言之就是一款用于自动读取分页形式下次页内容的脚本……
(与我之前写的 Baidu Auto Pager 效果相同…… 甚至更好……)
难能可贵的是作者为这个脚本实现了“数据源”的概念……
脚本自动缓存数据源的分页规则……
遇到匹配的网站便找出规则分析并予以处理……
目前官方非官方的数据源已经能处理数十个站点的分页了……
但其中外文站点占了绝大多数……
因此作为这个脚本的绝对拥趸……
我曾想过自己 Host 一个中文站点的数据源……
可惜人太懒……
未能付诸行动……

恰逢昨天有朋友通过 Baidu Auto Pager 的页面找到我……
希望我能帮忙编写“百度知道”的自动翻页脚本……
我想了一下……
与其另写一个脚本……
倒不如提供自己常用分页规则给大家……
于是乎……
我建立了这个名为“ChinaList for Pagerization”的源……

国内用户:http://vip.yyjoy.com/chappell/chinalist
国外用户:http://www.quchao.com/projects/chinalist

使用方法很简单……
先打开 Firefox gm_scripts 目录下的 Pagerization.user.js 文件……
再从上方两个数据源中选择适于自己网络环境的那个地址……
将其加入 SITEINFO_URL 数组……
添加完毕后……
数据源的定义部分应该看起来像这样:

  1. var SITEINFO_URL = [
  2. 'http://k75.s321.xrea.com/pagerization/siteinfo#function', // Official release data
  3. 'http://swdyh.infogami.com/autopagerize', // Autopagerize Wiki data. Xpath ONLY!!
  4. 'http://vip.yyjoy.com/chappell/chinalist', // ChinaList. Xpath ONLY!!
  5. ];

接着右键点一下小猴子的头像……
选择 User Script CMD -> Cache Update ……
当弹出 “Cache update complete” 后就算是添加完毕了……
接下来你就可以在 ChinaList 所定义的中文站点中享受自动翻页的服务了……

PS.
我希望作者能够将其作为原始数据源加入 Pagerization ……
那样就可以免去以上繁琐的更新过程了……

有点儿晚了……
睡觉觉去……

更新日志:
[071103]

初始版本,支援 Baidu (部分)、iAsk (几乎全部)和 BXNA ……

[071104]

支援 Sogou 全站、MXNA ……

[071106]

支援 Engadget、AutoBlog(除英文)……

[071109]

支援 Yahoo 全站(除“吃住玩”)……

[071113]

支援 XiaoNei 全站、TianYa 帖子……

[071117]

支援 YoDao 全站(除图片搜索)……

[080107]

支援 Mop 贴贴(不支持框架)……

[080120]

支援 Yupoo 全站……

[080329]

重新支援 Baidu 大部分服务……

[080404]

支援 VeryCD 全站……

50 则评论 | 永久链接 | Trackback | RSS 2.0

[080327] Rank Fetcher 2.3 支持 Quantcast Rank

屈超(沙滩凉鞋) 发表于 2008 年 3月 27 日 18 时 06 分

Rank Fetcher 2.3

080327 更新:

添加 Quantcast Rank 的支持……
修正 ChinaRank 无法获取的错误……
修正程序的一处小 bug ……

071109 更新:

没什么好说的……
ChinaRank 修正……

071013 更新:

Kumoo 报告无法运行于他 4.3 版本的 PHP 环境下……
现在修正了这个问题……
理论上支持 PHP 4.2+ 的环境……(未测试)

071001 更新:

重写了 Alexa 类反比百分比的计算代码……
添加了 AW 编写的 Flash 版本 RankShow ……
PS.文档将择日送上……

======================================

再拖延了数月之后……
凉鞋俺终于完成了 Rank Fetcher 2.0 的底层构建……
目前支持的 Rank 类型如下:

Alexa Rank
Google Page Rank
Sogou Rank
Chinarank
Compete Rank
Quantcast Rank

接下来是 ChangeLog :

增加:多域名(页面)查询(同时提供域名限制选项);
增加:提供 Compete Rank 查询;
修正:无法查询子域名 Google PR (因为不同页面 PR 值亦不同);
改进:以 JSON 格式输出(方便不同外壳调用);
改进:渐进式自动更新(不再同时更新所有 Rank);
改进:自定义手动更新 Key (预防恶意刷新);
改进:自定义缓存文件(必要时可供切换)

另外……
本次还与 AWFlasher 合作……
由他提供名为 RankShow 的 Flash 外壳……
但目前无法与他取得联系……
(昨天还在 Gtalk 上说好了来着……)
因此这部分暂且搁下不谈……

演示:http://demo.quchao.com/rank/
下载:http://www.box.net/shared/xh1xxwrwo4

之前的版本至此不再提供支持……
那么……
今天就到这里……

10 则评论 | 永久链接 | Trackback | RSS 2.0

播放器加载中……
读取中……
图书数据加载中……
读取中……
剧集数据加载中……
读取中……
专辑数据加载中……
读取中……
第三届 D2 前端技术论坛 (上海)