Evernote + Tombloo をでっち上げる件

いろいろでっちあげたもの連続ポストしようと思う。

Tomblooに良くお世話になっているのですが、EvernoteにPOSTするメニューが無かったぽいので
こちらと

http://d.hatena.ne.jp/Constellation/20080726/1217088917

tombloo 本家を参考に

http://wiki.github.com/to/tombloo

Evernote対応のスクリプトを作ってみますた。基本的にEvernotebookmarkletをベースに作ったので、regular, quote, link 位しかまともに動かないと思います。

完全に雰囲気だけで作ったので、へんな書き方になってると思いますがご容赦ください。ついカッとなってやった。反省はしてない。

下記スクリプトを「20_Evernote.js」というファイル名で、ローカルに保存して、Firefoxのプロファイルの,tombloo用の拡張スクリプトを置くフォルダに設置してFFを再起動すれば、tomblooのメニューにEvernoteが表示されると思います。

僕のWinXPマシンではこんな感じのフォルダです。

C:\Documents and Settings\[USERNAME]\Application Data\Mozilla\Firefox\Profiles\[PROFILENAME]\tombloo\script

[USERNAME]    => ユーザーアカウント名 が入ります
[PROFILENAME] => ランダムな文字列っぽいプロファイル名が入ります。

実行スクリプトな。

if(typeof(models)=='undefined')
  this.models = models = new Repository();

models.register(update({
  name : 'Evernote',
  ICON : 'http://www.evernote.com/about/media/img/favicon.ico',
  POST_URL : 'http://www.evernote.com/clip.action',
   
  check : function(ps){
    return (/(regular|quote|link|conversation|video)/).test(ps.type) && !ps.file;
  },
  
  post : function(ps){
    var Evernote = this;
    return Evernote.getToken(ps).addCallback(function(token){
      var content = {
          notebookGuid: token.notebookGuid,
                  __fp: token.fp,
           _sourcePage: token.sourcePage,
                   url: (ps.itemUrl) ? ps.itemUrl : 'no url',
                 title: (ps.item) ? ps.item : 'no title',
               comment: ps.description,
                  body: ps.body,
                  tags: ps.tags ? ps.tags.join(',') : '',
              fullPage: ps.body ? 'true' : 'false',
         saveQuicknote: 'save',
                format: 'microclip'
      };
      return request(Evernote.POST_URL, {
        redirectionLimit : 0,
        sendContent : content,
      });
    });
  },
  
  getAuthCookie : function(){
    return getCookieString('evernote.com', 'auth');
  },
  
  getToken : function(ps){
    var Evernote = this;
    switch (this.updateSession()){
    case 'none':
      throw new Error(getMessage('error.notLoggedin'));
    case 'same':
    case 'changed':
      var self = this;
        return request(Evernote.POST_URL, {sendContent: {format: 'microclip', quicknote: 'true'}}).addCallback(function(res){

          //noteBookGuide
          if(res.responseText.match(/selected="selected" value="(.*)"/)){
            self.noteBookGuide = RegExp.$1;
          }else{
            throw new Error(getMessage('error.notLoggedin'));
          }

          //_sourcePage
          if(res.responseText.match(/"_sourcePage" value="(.*)"/)){
            self.sourcePage = RegExp.$1;
          }else{
            throw new Error(getMessage('error.notLoggedin'));
          }

          //__fp
          if(res.responseText.match(/"__fp" value="(.*)"/)){
            self.fp = RegExp.$1;
          }else{
            throw new Error(getMessage('error.notLoggedin'));
          }

          return self;
        });
    }
  },
}, AbstractSessionService));

本当はGitHub経由で、本家に取り込んでもらえるようにするのが筋だと思うけど、まだgit含め使い方が良く分からんかったのですよ。。。しょぼくてすいません。

http://d.hatena.ne.jp/brazil/20080804/1217856808

追記:2010/01/10 下記id:bardiche-assaultさんより頂いたfaviconのURLを上記ソース上で変更いたしました。ご連絡ありがとうございます。