Stylish 拡張機能で Tumblr のダッシュボードを tmbrtext 化する
普段、Tumblr でテキストを読みたくて tmbrtext という iOS アプリを使っているのだが、最近何やら Text ポストの中に img
要素が埋め込まれていて、画像を含んだポストに遭遇することがある。
面白画像なんかであればまだ良いのだが、NFSW な画像が開くのは嫌なので、なんとかならないかと思って試行錯誤していた。
最初は Tumblr API を利用してダッシュボードを読み込み、画像ポストを除去するか…とか考えていたのだが、OAuth が面倒臭そうで断念。
Tumblr 公式が出している tumblr.js
という npm パッケージを使うと、CLI で Tumblr API が叩けてテキストだけ取得はできたのだが、リブログ等がやりづらくコレも諦めた。ローカルに閉じてやるなら、tumblr.js
を叩く Express サーバみたいなのを作ってゲートウェイ的な API を作ってやれば、SPA なアプリに渡して動作させたりもできそうかなーと思ったのだが、たかだか Tumblr 見るだけでローカルサーバは面倒なので止めた。
んで、考え方を変えて、「画像さえ表示させないようにできればいい」ということにして、思いついたのが、Firefox や Chrome の拡張機能である Stylish を使って、tumblr.com
ドメイン配下の img
要素を非表示にしてしまえばいい、ということだった。
昔々は Proxomitron というローカルプロキシのフリーソフトがあって、コイツに特定のページだけ HTML 編集させたりしていたのだが、Stylish はいわばコレの CSS 限定版なワケだ。JS も埋め込める拡張機能があったら嬉しいのだけど、Greasemonkey や Tampermonkey (Chrome 用) みたいなのを使うまでもないか?と思い、まずはやってみた。
Stylish に新規スタイルを作り、以下のようにコーディング。
/* 画像を含め要素を非表示にする */
img, /* 画像 */
embed, /* 動画 */
#new_post_buttons, /* 新規投稿部分 */
#right_column, /* 右カラム */
#sidebar_footer_nav, /* 右下フッタ */
.l-header-container, /* ヘッダ */
.post_avatar_wrapper, /* 投稿者アイコン */
.post_header, /* 投稿者名 */
.popover, /* ユーザ名フォーカス時の PopOver */
.post_media, /* メディア投稿 */
.photoset, /* 写真セットの投稿 */
.external-image-wrapper, /* External Image */
.safemode, /* セーフモードの案内 */
.post_tags, /* ポスト内タグ */
.post_notes, /* リアクション */
.post-control-icon.share, /* 共有アイコン */
.post-control-icon.reply, /* 返信アイコン */
.post-control-icon.like, /* ライクアイコン */
.standalone-ad-container, /* 広告ポスト */
.post-margin, /* リブログ時の投稿者アイコン */
.source-field, /* リブログ時のオプション */
.caption-field, /* リブログ時のオプション */
.post-form--footer, /* リブログ時のフッタ */
.views, /* リブログ時のテキスト追記部分 */
.rapid-recs, /* その他の素晴らしい投稿 */
.post[data-tumblelog="neos21"] /* 自分の投稿を非表示にする */
{ display: none !important; }
/* 1カラム風にする */
body { overflow-x: hidden !important; overflow-y: scroll !important; }
.l-container, .left_column, .post { width: auto !important; }
.l-container { max-width: 800px !important; }
#posts.posts { margin: 0 !important; }
/* リブログ窓をコンパクトに */
.post-content-text { height: 100px !important; overflow: scroll !important; }
/* テキストサイズを均一に */
.post_wrapper *, /* ポスト */
.post-container * /* リブログ時のプレビュー */
{ font-size: .9rem !important; }
そして「適用先」で「ドメイン上の URL」を選び、「tumblr.com
」を追加する。
コレで、Tumblr にログインした後のダッシュボードを画面中央に1カラムで配置し、全ての画像を非表示にできた。
一番大事なのは img { display: none !important; }
だけで、あとはオマケ。
1カラム風にするための処理はもう少し詰められそうだが、やりたいことはできたのでいいや。「共有」や「ライク」などのアイコンなども非表示にしているが、ココは各自のお好みで。
.post[data-tumblelog="MY_USER_ID"]
という指定の仕方で、自分のリブログを非表示にしているが、コレを応用して常に非表示にするユーザを指定することもできるだろう。
いわずもがな、これらは CSS で非表示にしているだけ、裏では当該ポストも読み込まれていることに注意。