tumblrのshowページでautopagerizeがつかいたい!
ということでしらべてみた.すげぇ汚いメモだけど、オープンする.
http://www.tumblr.com/show/{everything|text|photos|quotes|links|chats|videos|audios}/by/{everyone|me}
というurlになるのな.これらのページでautopagerizeがつかいたい!
HOW TO EDIT SITEINFO
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 の siteinfo はどうなっているか?
url: http://www.tumblr.com/dashboard nextLink: //div[@id="pagination"]/a[last()] insertBefore: //div[@id="pagination"] pageElement: //ol[@id="posts"]
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ページから先が表示されん!
Tumblr ver.3 のAutoPagerize用SITEINFO
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に貼り付けてみたよ.おおっ、動いたぜ.ラッキー.
で、firebugってなんなんだろう?
そんなわけでAutoPagerizeのSITEINFO記述を楽にするためのブックマークレットを作りました。まだ単体ではきれいなXPathを作れませんがfirebugと組み合わせると、ゼロから書くよりかなり楽ができます。
どういうこと?
nextLinkが '//div[@id="pagination"]/a[@class="blue_button"]', だと3ページ目でアウト '//div[@id="pagination"]/a[@title="Go to older posts"]',でその先まで行けたの
どうしてなの?ってきいたら.
元のHTMLソース見てないからわからんけど、たぶんclassが"blue_button"になってるのは次ページのリンクだけじゃなく、例えば前ページに戻るリンクとかにも使われているんじゃないだろうか。
ということで、確認してみたよ./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ページ目だけ表示できるのは、最初は戻るリンクがないからですね。
わかったよ.ウレシイ!