用 Ubiquity 打造个 hellotxt

September 28th, 2008 at 9:03 am

虽然用 hellotxt 可以同步到 plurk、饭否、twitter,但干嘛不用 Ubiquity 来折腾个呢?

尤其是推荐文章的时候超级方便。

先说用法,呼出 Ubiquity,输入“ff [动作] 文字”就可以闪电同步,[动作]部分为 Plurk 所有,可以根据需要输入。输入“ff s”或者“ff share”或者“ff 推”就可以快速分享当前的正在看的页面到三大服务。

为虾米要用 ff 做命令?因为好按,也是分发的首拼音,也好记。不喜欢自己修改代码

复制以下代码,并修改 uid 的值“272105”为你自己的 uid,快速获得自己的 uid:查看自己的头像地址,比如我的:http:

//avatars.plurk.com/272105-small.gif,那串数字就是你的 uid。

按下呼出 Ubiquity 的快捷键,输入:command-editor,回车。粘贴到 Ubiquity 的命令编辑框里面。Ubiquity 会自动保存,关闭 Ubiquity 的命令编辑界面。哦也。

CmdUtils.CreateCommand({
  name: "ff",
  takes: {status: noun_arb_text},
  homepage: "http://blog.loland.net/2008/09/28/58.et",
  author: {name: "sfufoet", homepage: "http://blog.loland.net/"},
  license: "MPL",
 
  preview: function(previewBlock, statusText, mods) {
    var previewTemplate = '</div><br/>' +
                          "将要发布到饭否、plurk、twitter 的内容如下: <br/>" +      
                          "<b>${status}</b><br /><br />" +
                          " 总字数为: <b>${chars}</b>";
    var truncateTemplate = "<br />后面 <b>${truncate}</b> " +
                           "个字将予以删除!";
   
    if(statusText.text=="share" || statusText.text=="s" || statusText.text=="推"){
      statusText.text = context.focusedWindow.getSelection()
 + "推荐 " + context.focusedWindow.location +" (" + context.focusedWindow.document.title + ")";
    }

    var previewData = {
      status: statusText.text,
      chars: statusText.text.length
    };
     
    var previewHTML = CmdUtils.renderTemplate(previewTemplate,
                                               previewData);
  
    if(previewData.chars > 140) {
      var truncateData = {
        truncate: previewData.chars - 140
      };
     
      previewHTML += CmdUtils.renderTemplate(truncateTemplate,
                                                   truncateData);
    }

    jQuery(".emoticon").click(function(){
            var mark= jQuery(this).attr("id");
            alert(mark);
    });
   
    previewBlock.innerHTML = previewHTML;
  },
 
  execute: function(statusText) {
    if(statusText.text.length < 1) {
      displayMessage("出错:内容不可空白");
      return;
    }

    var updateUrl = "http://www.plurk.com/TimeLine/addPlurk";
    var updateParams = {
      uid: 272105,
      qualifier:":",
      lang:"cn",
      content: statusText.text
    };
   
    jQuery.ajax({
      type: "POST",
      url: updateUrl,
      data: updateParams,
      dataType: "json",
      error: function() {
        displayMessage("Plurk 发布错误");
      },
      success: function() {
        displayMessage("Plurk 发布成功");
      }
    });

    updateUrl = "http://api.fanfou.com/statuses/update.json";
    updateParams = {
   source: "fanfou",
   status: statusText.text
    };
   
    jQuery.ajax({
      type: "POST",
      url: updateUrl,
      data: updateParams,
      dataType: "json",
      error: function() {
        displayMessage("饭否:发布错误");
      },
      success: function() {
        displayMessage("饭否:发布成功");
      }
    });

    updateUrl = "https://twitter.com/statuses/update.json";
    updateParams = {
   source: "Twitter",
   status: statusText.text
    };
   
    jQuery.ajax({
      type: "POST",
      url: updateUrl,
      data: updateParams,
      dataType: "json",
      error: function() {
        displayMessage("Twitter:发布错误");
      },
      success: function() {
        displayMessage("Twitter:发布成功");
      }
    });
  }
});

说明:发布到 twitter 的时候,会弹出输入用户名和密码的对话框。想同步到其他服务,搜索下吧。后面很相似的代码就是起发布作用的。

7 Responses

  1. 火山真奶神人也

    sein - September 28th, 2008 at 12:29 pm Notify
  2. 一点都没看懂的人掩面跑开...

    Enson - September 28th, 2008 at 1:14 pm Notify
  3. 高科技

    steen - September 28th, 2008 at 9:34 pm Notify
  4. e, 我用 vimperator

    邱焜 - September 29th, 2008 at 9:36 pm Notify
  5. 那个FAVICON的S很炫啊。。。。

    XYON - October 2nd, 2008 at 9:29 am Notify
  6. NB 两个字

    scavin - October 5th, 2008 at 1:14 pm Notify
  7. [...] 把以前那个《用 Ubiquity 打造个 hellotxt》下的脚本修改了一下,同步已经没有意义了,封的封,挂的挂。 [...]

Leave a Reply