読者です 読者をやめる 読者になる 読者になる

direct_bookmarkのbtagsが例外を吐く

2.0に移行中です。
補完が少し変わっていたりしていましたが、すぐ馴れそうです。

一通り今使っているプラグインcodereposの2.0向け(trunk*1)のプラグインに置き換えました。

http://coderepos.org/share/browser/lang/javascript/vimperator-plugins/trunk

direct_bookmark以外動作確認がとれたのですが、最後の1個でつまずいてしまいました・・・

vimperatorrcには

let g:direct_sbm_use_services_by_tag = "l"
let g:direct_sbm_use_services_by_post = "l"

を追記して、livedoor clipのみ使用するようにしています。
「:sbm [hogehoge]コメントほにゃらら」でclipはできるのですが、tagsの取得が働きません。

明示的に「btags」でユーザ名とAPIキーを入力して実行しても

direct_bookmark.js: Exception throwed! TypeError: tags is null

と例外メッセージが表示されてしまいます。

うーん。困ったなぁなんでだろう。他の方で同様のエラーが発生している様子もないのでデバッグフラグが立ちそう。

最後になりましたが以前作ったパッチ「direct_bookmark.jsのLDCでレートを扱えるようにしてみました - Guyon Diary」をarccosineさんがtrunkへマージしてくれていました。
ありがとうございました。

4/5 23:50 追記

1.2でも同じエラーが発生しました。
livedoor clip側でなにか変更されたかな。

tags:functionの

var mypage_html = parseHTML(xhr.responseText, ['img', 'script']);

あたりっぽい。
xhr.responseTextでclipページを取得できていない。(タグを補完する為のdivタグからtagを取得する)

ブラウザからclipページにアクセスしてみたら

システムの混雑、またはエラーが発生しております。

  • しばらく時間をおいてからもう一度操作を行ってみてください。
  • 原因調査のために、お手数ですがこちらのお問い合わせから利用環境や操作した手順をご送信ください。参考にさせていただきます。

livedoor クリップへ戻る

とのこと。とりあえず時間をおいてからもう一度確かめてみることにします。

4/6 20:30 追記

Livedoor側のサーバーエラーが発生しなくなったのでclipページの取得はできていた。

parseHTML関数の

range.setStartAfter(window.content.document.body);

でエラーになっている。

この辺りを調査中。

4/6 22:00 追記

↑はエラーコンソールで実行していたのが原因で、debug方法がバグっているという自らが招いたあほでした。

Livedoor clipのページが変更されて構造が少し変わっていたのを以前1.2で変更した事を思い出したので、Xpathの指定を変更したらbtagsが動きました。そりゃそうだよな・・・ とほほ。

//var tags = getElementsByXPath("id(\"tag_list\")/span",mypage_html);
var tags = getElementsByXPath("id(\"tag_list\")/div/span",mypage_html);

*1:本当は2.0タグの方がいいのかもしれないけど