pixivのブックマークに対応させてみる
11/7/13 追記
メンテしてないし低機能なので、pixivからブックマークと同時にPOSTできるTomblooパッチがサムネイル対応 | 圧縮電子精神音楽浮遊構造体を利用されることをおすすめします。追記終わり。
tomblooでpixivのブックマークに追加できる様にしてみるテスト。イラストを表示しているページ上でphoto及びlinkにて動作。当然、追加できるのはpixivのイラストのみということになります。
models.register({ name : 'pixiv', ICON : 'http://www.pixiv.net/favicon.ico', check : function(ps){ return (/(photo|link)/).test(ps.type) && ps.pageUrl.match(/^http:\/\/www\.pixiv\.net\/member_illust\.php/); }, post : function(ps){ return request('http://www.pixiv.net/bookmark_add.php', { sendContent : { mode : 'add', id : ps.pageUrl.match(/illust_id=(\d+)/)[1], type : 'illust', restrict : 0, //1 で非公開 tag : ps.tags ? ps.tags.join(' '): '', comment : joinText([ps.body, ps.description], ' ', true), }, }); } });
10/03/01追記
トークンが必要になったので修正というかコピペ。
http://gist.github.com/318137
models.register(update({ name : 'pixiv', ICON : 'http://www.pixiv.net/favicon.ico', check : function(ps){ return (/(photo|link)/).test(ps.type) && ps.pageUrl.match(/^http:\/\/www\.pixiv\.net\/member_illust\.php/); }, getToken : function(){ var status = this.updateSession(); switch (status){ case 'none': throw new Error(getMessage('error.notLoggedin')); case 'same': if(this.token) return succeed(this.token); case 'changed': var self = this; return request('http://www.pixiv.net/bookmark.php').addCallback(function(res){ return self.token = $x( '//form[@id="f"]/input[@name="tt"]/@value', convertToHTMLDocument(res.responseText)); }); } }, getAuthCookie : function(){ //ログイン状態の判別が出来てない。仮で。 return getCookieString('pixiv.net', 'PHPSESSID'); }, post : function(ps){ return this.getToken().addCallback(function(token){ return request('http://www.pixiv.net/bookmark_add.php', { sendContent : { mode : 'add', tt : token, id : ps.pageUrl.match(/illust_id=(\d+)/)[1], type : 'illust', restrict : 0, //1 で非公開 tag : ps.tags ? ps.tags.join(' '): '', comment : joinText([ps.body, ps.description], ' ', true), }, }); }); } }, AbstractSessionService));