コピーできないPDFからコピーする
http://www.bravaviewer.jp/reader.htm
このビュアーを使うとできる。
Webサービスのサイトに写真とかを送信するのを自動化するにはどうするか、的な話。
最初はIEとJavaScriptで適当に送ってみようと思ったんだけどセキュリティがきつくなってて無理でした。というわけでpythonを使うことに。が、pythonもデフォルトではmultipart/form-dataはサポートしてない。ので、結局のところHTTPリクエストを自分でがりがり書くしかない。んでよくよく調べてたらurllib2をかっこよく拡張してる人を発見。
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/146306/
このスレッドの一番最後のコメント。
http://odin.himinbi.org/MultipartPostHandler.py
このMultipartPostHandler.pyを以下のように使うとurlとパラメータ渡すだけで通信できる。
cookies = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookies),
MultipartPostHandler.MultipartPostHandler)
params = { "username" : "bob", "password" : "riviera",
"file" : open("filename", "rb") }
opener.open("http://wwww.bobsite.com/upload/", params)
ちなみにこのMultipartPostHandlerをハンドラに加えるとopenの第二引数のエンコードを自動的にやってくれる。
ブックマークレットです。タイトルのまんまです。
登録したいときはたいていそのページを読み終わってないことが多くて、デフォルトのブックマークレットだとはてなに飛んでしまって続きが読めないので別ウインドウにしてみました。
window.openしただけだから1エントリにするのも何だけどPC再インストしたときにまた書くのがめんどくさいからUP
これでそのページの動画をダウンロードするダイアログが開きます。(ダウンロードページを開くのではなくて直接落とし始めます。)
常にファイル名がget_videoになってしまいますが、ファイルの拡張子は.flvという形式です。
ちなみにgoogle videoからAVIで直ダウンロードするブックマークレットは
Google Operating System: Download Google Videos As AVI Files
にあります。
(Ref: Going My Way: Google VideoからAVI形式でダウンロード可能なBookmarklet )
さらにちなみに、VideoDownloader(直リンじゃないけどやたら多数の動画サイトからダウンロードするページを作れる)のブックマークレットは以下
思わず作ってみました。
IE系ブラウザ(IE6,Sleipnir,glucose,...)でみてるWebページのリンクにショートカットをつけて、Altキーを押しながらショートカットを入力することでリンクを飛べるようになります。
ほかにはAlt+上で上のディレクトリに移動したり、マウス右クリックしながら右にドラッグで進む、左にドラッグで戻る、といったマウスジェスチャーがIEでも可能になります。
FireFoxにおけるGreaseMonkeyみたいなことをして実装してます。
ほとんど思いつきで作ったんでかゆいところに手が届いてないですが、機会があったらもっと使えるものにしたいなーと。
「このコンピューターで利用できるターミナル サーバー クライアント ライセンスがないため、リモートセッションは切断されました。サーバー管理者に問い合わせてください。」
というのが出たときはHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensingをいじるとなんとかなったりする。
・HardwareID,Parameters,Storeをリネームするなどしてバックアップ。特にHardwareID\ClientHWIDがなくなると何とかして書き戻すまでリモートデスクトップ接続がまったく使えなくなるため注意。
・HardwareID\ClientHWIDに元の値の末尾を適当にちょこっとかえた値を設定すると繋がるようになる。
<div style="padding-left:10%;"> <textarea style="width:80%"></textarea> </div>
というHTMLがあると、以下のように表示されます。
IE6で見てる人は上のテキストエリアをクリックして何か書き込んでみてください。突然テキストエリアが右ににょきっと延びるはずです。と、まぁこういう困ったバグがあるのですが、これは親要素にwidthを指定してやることで解消されます。
<div style="padding-left:10%;width:100%"> <textarea style="width:80%"></textarea> </div>
Function.prototype.bind = function(object) {
//関数のthisを取得
var __method = this;
//objectを退避
var __object = object;
//引数の配列を用意(ただし一番初めのthisをshiftして取り除く)
var __arguments = arguments;
for( var index = 0; index < __arguments.length-1; ++index )
__arguments[index] = __arguments[index+1];
__arguments.length = __arguments.length-1;
//thisにbindした関数を実行する無名関数を返す。
return function(){ __method.apply(__object, __arguments); }
}
function Obj1() {
this.counter = 0;
this.caller(2);
}
Obj1.prototype.caller = function( step ) {
this.counter += step
alert( this.counter );
setTimeout( this.caller.bind(this, step), 100 )
}
obj1 = new Obj1();こんな感じ。prototype.jsを使ってるならFunction.prototype.bindを使ったほうが早し。
最近のコメント