2024-10-13

細かすぎて伝わらないはてなブックマークエントリーIDの話

はてブブクマページにはIDがある。

htmlタグのdata-entry-eid属性に書いてある数字であるはてなブックマークエントリー情報取得APIでも取得できる。

これをエントリーIDと呼ぶ。

ユーザーブクマURLは以下のようになっている。

https://b.hatena.ne.jp/entry/{エントリーID}/comment/{ユーザーID}

あるいはユーザーブクマ一覧中のブクマアクセスする以下のURLもある。

https://b.hatena.ne.jp/{ユーザーID}/{日付}#bookmark-{エントリーID}

ところがこのエントリーIDは1つのエントリー複数存在する可能性がある。

たとえば以下のブクマページ。

https://b.hatena.ne.jp/entry/s/nordot.app/1211910352128279184

エントリーIDは4760262558153474272である

からブクマURLは以下のようになる。

https://b.hatena.ne.jp/entry/4760262558153474272/comment/{ユーザーID}

しかし一部のブクマURLは以下のようにエントリーIDの部分が異なる。

https://b.hatena.ne.jp/entry/4760262556542860384/comment/{ユーザーID}

ブクマページはエントリーIDを使ってアクセスすることもできる。

https://b.hatena.ne.jp/entry/{エントリーID}

から以下のURLブクマページにアクセスできる。

https://b.hatena.ne.jp/entry/4760262558153474272

別のエントリーIDらしきものでも同様にブクマページにアクセスできる。

https://b.hatena.ne.jp/entry/4760262556542860384

まりエントリーID複数存在するようだが、ブクマページやAPIで取得できるエントリーIDはただ1つである

4760262558153474272はエントリーIDとして取得できるが、4760262556542860384はブクマページを探してエントリーIDとして使用しているブクマを見つけることでしか取得できない。

何かが修正されたときエントリーIDが変わることがあるのだろうか?

はてなブックマークエントリー情報取得API」でエントリーIDと各ブクマユーザー投稿日時を取得して、これを使って「はてなスターカウントAPI」でブクマが得たスター数を取得する場合、通常は以下のURLスター数を取得できる。

https://s.hatena.com/entry.json?uri=https://b.hatena.ne.jp/{ユーザーID}/{日付}#bookmark-{エントリーID}

(uri=以降のパラメーターはURLエンコードする)

ところがエントリーIDが異なるブクマは当然個別エントリーIDでないとスター数を取得できないので、はてブAPIだけでは情報が欠損する。

わざわざ現場ブクマを1個1個見る必要がある。

追記

別に細かくなく公式言及のあった話でしっかりと伝わったのでタイトルは誤りでした。

ブクマするURLパラメーターが付いているとエントリーIDが変わるということだそうです。

ご教示ありがとうございます

  • ほーん

  • URLの正規化でページが統合されるから。 https://bookmark.hatenastaff.com/entry/2019/02/13/105009 https://b.hatena.ne.jp/help/entry/canonicalization

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん