2007-04

Latest Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Twit! ブックマークレット

TwitThisはパスワードを送らないといけないのでブックマークレットを書いた。
POSTしろとかRefererを空にしろとかうるさいけど、これで行けた。
Twit!
javascript:(function(){w=window.open('','_blank','width=520,height=300,resizable=1,scrollbars=1');f=w.document.createElement('form');f.setAttribute('action','http://twitter.com/statuses/update.xml');f.setAttribute('method','POST');i=w.document.createElement('input');i.setAttribute('type','hidden');i.setAttribute('name','status');i.setAttribute('value','Reading '+document.title+' '+location.href);f.appendChild(i);w.document.documentElement.appendChild(f);f.submit();}())
(追記参照)

今見ているページを送信します。
twitter.comとしか通信しません。2回目以降はログイン情報を保持します。(Cookieではないのでブラウザを閉じるまで)
更新後のページは生XMLで見苦しいけど。あと確認画面とかも出さないので、エロサイトとか見ている時にうっかり押さないように注意。
Firefoxで確認。escape()しなくていいのかな。"Reading "を入れたので". "はいらない?

(4/13追記)
トラバ返し。
Collection & Copy - ロケーションバーからTwitterへポストするキーワードブックマーク
なるほど。window.onunloadを使えばsubmitが完了してからウィンドウを閉じられるのね。こちらこそ勉強になりました。
修正版。
Twit!
javascript:(function(){w=window.open('','_blank','width=0,height=0');f=w.document.createElement('form');f.setAttribute('action','http://twitter.com/statuses/update.xml');f.setAttribute('method','POST');i=w.document.createElement('input');i.setAttribute('type','hidden');i.setAttribute('name','status');i.setAttribute('value','Reading '+document.title+' '+location.href);f.appendChild(i);w.document.documentElement.appendChild(f);f.submit();w.onunload=function(){w.close();}}())

IE不可が判明。Refererが空にならない。

(追記)
さらに今では接頭文言をprompt()で入力するようにしている。
Twit!
javascript:(function(){w=window.open('','_blank','width=0,height=0');f=w.document.createElement('form');f.setAttribute('action','http://twitter.com/statuses/update.xml');f.setAttribute('method','POST');i=w.document.createElement('input');i.setAttribute('type','hidden');i.setAttribute('name','status');i.setAttribute('value',(prompt('','Reading'))+' '+document.title+' '+location.href);f.appendChild(i);w.document.documentElement.appendChild(f);f.submit();w.onunload=function(){w.close();}}())


(追追記)
さらに、間違って触ってしまった時のためにキャンセルを可能に。
Twit!
javascript:(function(){if(m=prompt('','Reading')){w=window.open('','_blank','width=0,height=0');f=w.document.createElement('form');f.setAttribute('action','http://twitter.com/statuses/update.xml');f.setAttribute('method','POST');i=w.document.createElement('input');i.setAttribute('type','hidden');i.setAttribute('name','status');i.setAttribute('value',m+'%20'+document.title+'%20'+location.href);f.appendChild(i);w.document.documentElement.appendChild(f);f.submit();w.onunload=function(){w.close();}}}())


(2009/2/8追記)
Google Chrome 対策をしました。→Twit! ブックマークレットの Google Chrome 対策 - 無用の科学あるいは錬金術
スポンサーサイト

ついったーもばいる

引き続き。
やっぱ携帯から更新しなきゃね。会社ではできないし。

twitterMobile(PHPを設置)
tmitter(つながらない)
Perlで(CGI設置でupdateのみ)
モバトゥイッター(CGIでパスワードpost)

まあPHPなり設置してもいいんだけど、やっぱりインターフェースとしてはメール送信、だろう。
Rubyで書いたtwpost.rb

require 'nkf'
require 'net/http'
require 'cgi'
Net::HTTP.version_1_2

id="xxxxxxxx"
pass="xxxxxxxx"
from="xxxxxxxx@docomo.ne.jp"

status="Moving"
address=""
response=""

while line=gets
if line =~ /^Subject: (.*)$/
status=CGI.escape(NKF.nkf('-mw',$1))
elsif line =~ /^From: (.*)$/
address=$1
end
end

if Regexp::new(from) =~ address

header = {'Authorization' => 'Basic '+[ "#{id}:#{pass}" ].pack('m').gsub(/\n/, ''), 'X-Twitter-Client' => 'N902i'}
path="/statuses/update.xml"
data="status="+status

Net::HTTP.start(host="twitter.com",80) {|http|
response=http.post( path, data, header )
}
end



さくらなので.mailfilter(パーミッション600)

to "| /usr/local/bin/ruby /home/xxxxxxxx/twpost.rb"



(4/14追記)
+" ."は消した。

«  | HOME |  »

移転しました。

ブログ引っ越しました。
無用の科学あるいは錬金術

 

株価情報

 

最近の記事

最近のコメント

 

最近のトラックバック

月別アーカイブ

カテゴリー

RSSフィード

ブログ内検索

 

なかのひと

 

ヘビーローテーション

 

 

リンク

広告

 

 

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。