ニコニコ動画で、ユーザーIDからニックネーム(ユーザーネーム)を取得する
ポイント
- 公式のAPIが無い&公開されてはいないので、「マイページを直接叩くよりはマシ」という程度の認識で使う。
- 確実に取得する方法はないので、ユーザーネーム取得に失敗した時のためにダミーテキストを用意してやると良い。 戻り値が空文字やnullでエラーにならないように。
- メソッドは全てGET, パラメータはIDのみなので省略。
正道
何か | URL | response | 動画ページから アクセス可能 |
---|---|---|---|
投稿動画RSS | http://www.nicovideo.jp/user/33333333/video?rss=2.0 | xml | yes |
大百科API | http://api.nicodic.jp/page.summary/json/u/2 | text/javascript (jsonp) | yes |
静画API | http://seiga.nicovideo.jp/api/user/info?id=1 | XML | no |
iframe | http://ext.nicovideo.jp/thumb_user/1 | HTML | no |
Vita/3DS | http://api.ce.nicovideo.jp/api/v1/user.info?user_id=1 | XML, JSON | no |
投稿動画RSS
レスポンスタイプ: xml
成功条件: 公開設定(ユーザーによる)
成功
url: http://www.nicovideo.jp/user/33333333/video?rss=2.0 レスポンス: <dc:creator>iueha</dc:creator>
失敗1
url: http://www.nicovideo.jp/user/1/video?rss=2.0 レスポンス: <dc:creator>非公開ユーザー</dc:creator> 理由: 非公開設定
失敗2
url: http://www.nicovideo.jp/user/0/video?rss=2.0 レスポンス: HTMLページ 理由: 存在しないユーザーID
大百科API
レスポンスタイプ: jsonp
成功条件: 作成されている
成功
url: http://api.nicodic.jp/page.summary/json/u/2 レスポンス: {"title":"2","view_title":"戀塚","summary":"戀塚昭彦\ntwitter: @koizuka"};
jsonの部分はcallback関数名。標準では n が使われている。
http://api.nicodic.jp/page.summary/n/u/2
失敗
url: http://api.nicodic.jp/page.summary/n/u/0 レスポンス: n(null);
静画API
レスポンスタイプ: xml
成功条件: 不明
成功
url: http://seiga.nicovideo.jp/api/user/info?id=1 レスポンス: <nickname>しんの</nickname>
失敗
url: http://seiga.nicovideo.jp/api/user/info?id=0 レスポンス: <nickname>-</nickname>
iframe
レスポンスタイプ: HTML
成功条件: ページが存在している & 公開設定(管理者による?)
成功
url: http://ext.nicovideo.jp/thumb_user/1 レスポンス: <title>しんのさんのプロフィール‐ニコニコ動画</title>
失敗1
url: http://ext.nicovideo.jp/thumb_user/0 レスポンス: <title>非公開プロフィール‐ニコニコ動画</title> 理由: 非公開
失敗2
url: http://ext.nicovideo.jp/thumb_user/9999999999999999999999999 レスポンス: <title>無効なプロフィール‐ニコニコ動画</title> 理由: 未作成、管理者削除(?)
VITA / 3DS
レスポンスタイプ: XML, JSONが選べる。
JSONにしたいなら、パラメータに __format=json
をつける。
成功: http://api.ce.nicovideo.jp/api/v1/user.info?user_id=1&__format=json
{ "nicovideo_user_response": { "user": { "id": "1", "nickname": "しんの", "thumbnail_url": "http://dcdn.cdn.nimg.jp/nicoaccount/usericon/0/1.jpg?1446235447" }, "vita_option": { "user_secret": "0" }, "additionals": "", "@status": "ok" } }
失敗: http://api.ce.nicovideo.jp/api/v1/user.info?user_id=0&__format=json
{ "nicovideo_user_response": { "error": { "code": "PARAMERROR", "description": "パラメータが不正です" }, "@status": "fail" } }
邪道
「ニコる」がユーザー名を持ってくるのでそれを流用する。
- 要ログイン
- 複数のユーザー名を一括で取れる
- 動画ページからアクセス可能
- 小サイズのサムネもついてくる
それぞれ nicoru.js の 180、44行から抜粋・改変
// user_ids以外は何でも良い var data = { 'mode': 'details', 'link_id': "sm9", 'user_ids': "1,2,3,4", // コンマ区切りで複数ユーザー。コンマ前後のスペースは無し 'last_like_time': "2014-10-10 10:00:00", 'innerPage': 1 }; jQuery.ajax({ type: 'GET', url: '/my/nicoru/active', data: data, dataType: 'html', success: function(result){ console.log(result) } });