|
|
||
ということでしらべてみた.すげぇ汚いメモだけど、オープンする.
http://www.tumblr.com/show/{everything|text|photos|quotes|links|chats|videos|audios}/by/{everyone|me}
というurlになるのな.これらのページでautopagerizeがつかいたい!
Please check the script source code itself.
ソースを読むとわかります。
url
対象となるサイトのURLにマッチする正規表現。 location.href.matchで、対象かどうかを判別している。
- ドットは「\.」
- 1文字の任意の文字は「.」
- 任意の長さの任意の文字は「.+」(注意:「*」ではありません。「www.example.com/foo/*」ではなく「www\.example\.com/foo/.+」です)
- alphabet,number,underscoreの繰り返しは「\w+」。[A-Za-z0-9_]+ と同等
- 数字の繰り返しは「\d+」
- www.example.jpかexample.jpのどっちでも良い場合は「(?:www\.)?example\.jp」
- hoge(?!fuge)で、hogeに続いてfugeが現れない場合にのみマッチ。例:「www\.example\.com/(?!setting)」
nextList
次のページへのリンクをXPathで指定。取得したリンクから次のページを読み込む。
insertBefore
読み込んだページから切り出したノード群を挿入する際に基準となるノードをXPathで指定。 insertBeforeのと言う名の通り、基準となるノードの前に挿入される。
ヒント:insertAfter相当が欲しいのならば、
*expression*/following-sibling::node()とすればよい。
pageElement
ページから切り出すノード群をXPathで指定。この指定によって取得されたノード群がinsertBeforeの要素の前に挿入される。
remainHeight (obsolete)
次のページを自動で読み込む際の基準を指定。 廃止。0.0.9より自動的に計算される。
Tumblr (dashboard)
url: http://www.tumblr.com/dashboard nextLink: //div[@id="pagination"]/a[last()] insertBefore: //div[@id="pagination"] pageElement: //ol[@id="posts"]
Tumblr
url: http://[^.]+.tumblr.com/(page/\d+)?$ nextLink: //div[@id="content" or @id="container"]/div[last()]/a[last()] insertBefore: //div[@id="content" or @id="container"]/div[last()] pageElement: //div[@id="content" or @id="container"]/div[@class!="footer" or @class!="navigation"]
ブックマークレットなので起動してみた.ページをクリックして要素を選ぶだけ.なんだ簡単じゃん.
### Tumblr <textarea class="autopagerize_data" readonly="readonly"> url: http://www.tumblr.com/show/everything/by/me nextLink: //div[@id="pagination"]/a[@class="blue_button"] insertBefore: //div[@id="pagination"] pageElement: //ol[@id="posts"] </textarea>
urlの正規化がわからんけど、"*"がワイルドカードだろっ、ってことで.以下をautopagerize.user.jsに書き写してみた.
{
url: 'http://www.tumblr.com/show/*',
nextLink: '//div[@id="pagination"]/a[@class="blue_button"]',
insertBefore: '//div[@id="pagination"]',
pageElement: '//ol[@id="posts"]',
}
だめだ、3ページから先が表示されん!
ver.3になったときにdashboardのautopagerizeが効かなくなったときに野良siteinfoが出回ってたなぁとおもいググル.
,{
url: 'http://www.tumblr.com/dashboard*’,
nextLink: '//div[@id="pagination"]/a[@title="Go to older posts"]',
insertBefore: '//div[@id="pagination"]',
pageElement: '//ol[@id="posts"]',
},
なんか微妙に違うのだ.nextLinkが.よくわからんがコレを当ててみる.
訂正というよりは、上のやつのurlを変更してみるだけだ.
{
url: 'http://www.tumblr.com/show/*’,
nextLink: '//div[@id="pagination"]/a[@title="Go to older posts"]',
insertBefore: '//div[@id="pagination"]',
pageElement: '//ol[@id="posts"]',
}
って、これを autopagerize.user.js のSITEINFOに貼り付けてみたよ.おおっ、動いたぜ.ラッキー.
そんなわけでAutoPagerizeのSITEINFO記述を楽にするためのブックマークレットを作りました。まだ単体ではきれいなXPathを作れませんがfirebugと組み合わせると、ゼロから書くよりかなり楽ができます。
nextLinkが '//div[@id="pagination"]/a[@class="blue_button"]', だと3ページ目でアウト '//div[@id="pagination"]/a[@title="Go to older posts"]',でその先まで行けたの
Twitter / 天下泰平: nextLinkが '//div[@id=
どうしてなの?ってきいたら.
元のHTMLソース見てないからわからんけど、たぶんclassが"blue_button"になってるのは次ページのリンクだけじゃなく、例えば前ページに戻るリンクとかにも使われているんじゃないだろうか。
Twitter / ちょろ: @taizooo 元のHTMLソース見てないからわから...
ということで、確認してみたよ./show/everything/by/me の2ページ目で、
<div id="pagination">
<a href="/show/everything/by/me/1" class="blue_button"
style="margin-right:10px;"
title="Go to newer posts">← newer</a>
<a href="/show/everything/by/me/3" class="blue_button"
title="Go to older posts">older →</a>
</div>
ってなっていて、その通りでした.ありがとう!@tyoro
そういう理由で titleを指定してるんだな.
まだ、全然わかっていないけど.たのしいねっっ!
@taizooo やっぱりでしたか。 なので、たぶんclass指定だと次ページにたどりつけなかったのですねヽ|'◇'|ノ 2ページ目だけ表示できるのは、最初は戻るリンクがないからですね。
Twitter / ちょろ: @taizooo やっぱりでしたか。 なので、たぶんc...
わかったよ.ウレシイ!