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));
来年の4月1日はネットに繋がない日にする
と、去年も思ったので、来年の今日もまたカリカリしてるんだと思う。
続・tomblooでtumblrのpost先tumblelogを変更する
tomblooでtumblrのpost先tumblelogを変更する - zaknakの日記
やり方変えてvimperatorのpluginとして書いてみた。
:setchannelid [channel_id] http://www.tumblr.com/tumblelog/private_123456 なら、 :setchannelid private_123456 デフォルトに戻すなら、 :setchannelid 0
(function(){ const sv = Components.classes['@brasil.to/tombloo-service;1'].getService().wrappedJSObject; var channel_id = '0'; sv.addBefore(sv.Tumblr,'appendTags', function(form,ps){ if(channel_id != '0' || channel_id != ''){ form.channel_id = channel_id; } }); commands.addUserCommand(['setc[hannelid]'], 'set tumblr channel_id', function(args){ switch(args.length){ case 0: liberator.echo(channel_id); break; case 1: channel_id = args[0]; liberator.echo(channel_id); break; default: liberator.echoerr('too many args'); break; } },{ completer:function(context,args){ context.title = ['channel_id']; context.completions = [ ['0','default'], ['private_','prefix private tumblelog'], ['private_123456','private tumblelog'], ]; } } ); })();
tomblooでtumblrのpost先tumblelogを変更する
tumblrは一つのアカウントで複数のtumblelogを作ることが可能ですが、tomblooのpost先はデフォルトである my tumblelog に固定されています。そこで、アカウント内の別のtumblelogにpost出来るようにしてみようという試み。
//setPref('userConfig.tumblr.channel_id',''); addBefore(Tumblr,'appendTags', function(form,ps){ var channel_id = getPref('userConfig.tumblr.channel_id'); if(typeof channel_id == 'string' && channel_id != ''){ form.channel_id = channel_id; } });
post先は about:config に設定を作って指定。
extensions.tombloo.userConfig.tumblr.channel_id
という設定を作って、値にpost先とするtumbleleogのchannel_idを指定します。channel_idはpost先としたいtumblelogのDashboardのurlから得ることが出来ます。
http://www.tumblr.com/tumblelog/private_123456
この場合は private_123456 がchannel_idとなります。post先をデフォルトに戻したいときは、設定自体を消すか、値に空文字を与えるかしてください。
vimperator使ってる人は、
:set! extensions.tombloo.userConfig.tumblr.channel_id=private_123456
で、post先を指定して、
:set! extensions.tombloo.userConfig.tumblr.channel_id=
で、post先をデフォルトにといった具合。
githubがuser pagesを作成出来るようになってた
http://pages.github.com/ に説明がある。"username.github.com"という名前でリポジトリを作るだけ。自分の場合だと "zaknak.github.com" となる。簡単。
http://github.com/zaknak/zaknak.github.com/tree/master → http://zaknak.github.com/
getCurrentUser()でuser名が取れない
models.Hatena.getCurrentUser()でuser名が取れない。多分、Myはてながリニューアルして http://www.hatena.ne.jp/my の構造が変わったせいっぽい。とりあえず、models.Hatena.getCurrentUser()の
'(//*[@class="username"]//strong)[1]/text()',
を、
'id("simple-header-body")/ul/li[@class="welcome"]/strong/a/text()',
としてみた。
09/05/10 追記
修正されました。
vimperatorからtomblooを利用してtumblrのアカウントを切り替える
vimperatorからtomblooのサービスを利用してtumblrやはてなのアカウントを切り替えます。要tombloo かつ tombloo のアカウント切り替え機能が動作すること。
http://github.com/zaknak/vimperator/raw/master/plugin/logintumblr.js
コード貼ってあったけど省略 http://github.com/zaknak/vimperator/tree/master/plugin まで。
使い方
:logintumblr[!] [e-mail] [passwords] :loginhatena[!] [id] [passwords]
第1引数にログインしたいアカウントの e-mail または id を指定して実行します。タブ押下でログインマネージャに保存されているアカウントが補完リストに表示されるので、
通常は補完リストから引数を指定してください。パスワードはログインマネージャに保存されているパスワードが使用されますが、第2引数にて直接指定することも可能です。引数無しで現在ログイン中の e-mail または id を表示します。[!]で各動作後に dashboard または myはてな を開きます。
変更
- 03/20
- !指定で各動作後にdashboardを開くようにした。
- 03/20 夜
- はてなに対応した。:loginhatena[!]
- 引数なしの実行でログイン中のユーザーidを表示しますが、myはてながリニューアルした関係で取得が上手くいかずundefinedを返すことがあります。http://d.hatena.ne.jp/zaknak/20090320/1237536639
- 03/21 v0.1.3
- 第2引数にパスワードを指定出来るようにした。