はりをきば

そこにピカマンがいる限り 私はテイッハットウッをやめない

pixivのプロパティまとめ(JavaScript)

¯注意
この記事はを最後に更新されていない。
更新日が1年以上前の記事はリンク切れしていたり、情報としては役に立たなくなっている可能性あり。
ˆMixed Contentについて
この記事は投稿日が古い為、記事中の画像は非SSL(http://)で貼られている。(※投稿画像以外は全てSSL)
この件に関して詳しくはこちらを参照。

いつもの誰得備忘録。


pixivは一部のページ*1を除き、ほぼ全てのページでjQuery(1.8.3)を読み込んでいる。


jQueryが読み込まれているページでは同時に
グローバル空間にpixivという名の連想配列(window.pixiv)がセットされており、
この中にUIを操作する為のメソッドと各種情報が色々詰まってる。


その内、メソッド(関数)以外で割と使えそうなのを一通りメモっとく。
(関数は数がハンパなく多く動作確認面倒なので気になるなら各自確認してくれ)
(私はROM専なので投稿周りはほとんど分からん。誰か情報プリーズ)



context

閲覧しているページの情報が格納されてる。

名前 説明
illustTitle 文字列 作品個別ページでのみ出現。
作品タイトル。
illustId 文字列 作品個別ページのID。
URLのillust_id=横の数字と同じ。
illustIdという名だが小説でも値が入ってる。
novelId 文字列 小説ページにのみ出現。
値はillustIdと同じ。
workId 文字列 小説ページにのみ出現(?)
値はillustIdと同じ。
userId 文字列 投稿者のID。
member.php?id=の数字。
userName 文字列 作品個別ページ(ry
投稿者のユーザー名。
embedId 文字列 作品個別(ry
作品埋め込み(貼り付け)コードのdata-id属性内の値
updated 文字列 更新や再投稿があった場合にのみ出現(?)
更新日時のUnix時刻。
type 文字列 イラストや漫画ならillust
小説ならnovel
rated 真偽値 評価すると点数に拘らずtrueになる。
手動でfalseにすると再び評価できるようになる。*2
self 真偽値 不明。
おそらく投稿者が自分自身だった場合にtrue?
favorite 真偽値 投稿者をお気に入り(フォロー)しているとtrue?
myPixiv 真偽値 投稿者とマイピク関係にあるとtrue?
queries 連想配列 現在のURLパラメータの名と値がそのまま入ってる。
queries.illust_id: "0123456789"てな感じで)
location.searchを分解する手間が省けて便利。
pages 配列 漫画一覧ページでのみ出現。
ページ数が1つずつ数値で入ってる。
lengthで総ページ数を取得できるので便利。
images 配列 漫画一覧(ry
その漫画の全ページの画像URLが1つずつ文字列として入ってる。
言うまでもなく先頭は0。
thumbnailImages 配列 漫画(ry
↑のサムネイルサイズが同じように入ってる。

rating

評価関係のメソッドが入ってる。

名前 説明
rate 数値 評価した点数が入る。
評価していない場合は0。

title

名前 説明
original 文字列 本来のページタイトル(生ソースのtitleタグの中身)が入ってる。*3

user

自身に関する情報が入ってる。

名前 説明
loggedIn 真偽値 ログインしているとtrue。
尚、この値がfalse(ログインしてない)だと
以下のプロパティは全てundefined。
premium 真偽値 プレミアム会員ならtrue
gender 文字列 男:male 女:female
id 文字列 自身のユーザーID
anonymousHash 文字列 何かのハッシュっぽいが
どこで使われているのかは不明。
unreadCount 連想配列 未読のメッセージ&通知。
message(pixivメッセージ)とpopboard(通知)に
それぞれ未読数が数値で入ってる。



例えば、以下のブックマークレットを作品個別ページで実行すると
上の表通りの情報が返ってくるはず。

(function(p){
	alert(
		'作品名:' + p.context.illustTitle + '\n' +
		'投稿者:' + p.context.userName    + '\n' +
		'\n' +
		'【未読】' + 'メッセージ⇒' + p.user.unreadCount.message + ' ' + '通知⇒' + p.user.unreadCount.popboard
	);
})(window.pixiv);

window.pixiv test


…まぁ、こんなところ。
主にブックマークレットやユーザースクリプトなんかで使えるかなと。


出来ればメソッドもまとめたいけど数がやばい。

*1:イラストや漫画などでオリジナルサイズを表示した際の画像単体表示ページ等

*2:あくまでもUI上は。このやり方で二重評価を実行すると一応JSONは正しく200で返ってくるが、実際にカウントに計上されているのかどうかは不明。

*3:漫画ページではタイトルの最後に現在のページ番号が追加される為、document.titleだとそれらをカットする手間がかかる。