JavaScript
はてなブックマーク
userscript
greasemonkey

はてブではてなお気に入りユーザーのスターを強調するユーザースクリプト

概要

ファクトチェックやポリティカルコレクトネスなど、ITリテラシーや政治的姿勢が重視されかつ監視されやすい昨今。かと思います。
webページの評価基準の一つにはてブを置いていますが、はてブ自体の(人気)コメントの真偽判定や、政治的に自分もスターを付けていいか迷ったときに、自分あるいは信頼している人と似ている属性をもつ人がスターを付けているかを一種の指標としてみる。

検証環境

  • Firefox 52
  • greasemonkey 3.11
  • はてなログイン済み

コード

favoStar.user.js

favoStar.user.js
// ==UserScript==
// @name        bookmark style
// @namespace   khsk
// @include     http://b.hatena.ne.jp/entry/*
// @version     1
// @grant       GM_xmlhttpRequest
// @grant       GM_addStyle
// ==/UserScript==

const Hatena = unsafeWindow.Hatena
const favoritesUrl = 'http://s.hatena.ne.jp' + Hatena.Bookmark.user.link + 'favorites.json';

GM_xmlhttpRequest({
  method: "GET",
  url: favoritesUrl,
  onload: function(response) {
    favorites = JSON.parse(response.responseText).favorites;
    favorites.forEach((obj) => {
      // 大きくなる理由はよーわからん 好きに装飾してね
      GM_addStyle('a[href="http://b.hatena.ne.jp/' + obj.name + '/"] > img.hatena-star-star {  width:3%;}');
    })
  },
  onerror: function(response) {
    console.log(response.responseText);
  },
});

ここでは自分のお気に入りを取得しているが、Hatena.Bookmark.user.link/「ID」/にすれば他人のお気に入りも取得できる。
あまり発信しない人や、大喜利ばっかりしている人は著名な人を使うほうがいいかも。
自分の場合は技術記事には役立ちません…。

クロスドメインのためにGM関数を使ったので、CSSの追加もついでにGM関数でえいやと登録。
だいたい50回ぐらい走るので効率は悪いしソースがひどくなる。

スクリーンショット

image.png

はてなブックマーク - Qiita キータ - プログラマの技術情報共有サービス

自分では大きくならなかったので著名そうなhtomineさんのIDをお借りして反映。

スター意外に少ないしトップもスター連打だし悲しみ。
スター連打も多すぎると省略されて分かるんですけど、半端だとわかりづらいのでこっちも何か対策して可視化したほうがいいのかも。(人気コメント判定には連打は無意味ですが)

あと、他人のお気に入りを借りると当人は当然出てこないので、手動で追加した方がいい(画像だとhtomineさんのスターが強調されない)
じゃあ気になる人だけ全部リストアップすればいいんですけど、それが面倒でAPIを使ったのでうーん…。

お気に入り

APIのお気に入り≠手動でお気に入り設定したユーザー。
あくまではてなが機械的に判定したユーザー郡。
基準は

はてなお気に入りAPIは、あるユーザーが気になっている「お気に入り」ユーザーの一覧を取得できるAPIです。「気になっている」かどうかは、はてな内でのコメントをつける、スターをつける、同じグループに所属するといった行動から算出しています。

手動でお気に入り登録したユーザーはAPIから取得できなくて、Qiitaの記事のいいねユーザー一覧は手に入らずストックは取得できるといい、びみょーに欲しいAPIから外れるのはなぜなのだ。(いいねAPIはTeam専用)

参考