とりあえず、適当にPITAから洗い出したので箇条書きでメモしておきます。
情報めちゃくちゃです、統一性とかありません。あくまで私的メモ程度です。真に受けないで下さい。
-----------
: ニコ生API まとめ
-----------
・基本
* 下記の情報は、間違っている可能性や情報が古い可能性もある。
* XMLにおいて特に不要と思われる項目を省略していることがある。
* XMLにおいては、実際にブラウザ等で確認してから使用すること。
・共通点
文字コード = UTF8
XML
~XMLの例~
<getplayerstatus status="ok" time="1262713590">
<stream>
</stream>
</getplayerstatus>
ルート要素の属性値 statusは、ほぼ全てのAPIに存在する。
ok = 正常に取得
fail = 取得失敗
・ログイン
POSTパラメータ
mail = メールアドレス
password = パスワード
POST先URL
https://secure.nicovideo.jp/secure/login
Cookie
user_session = セッション
・ニコニコ動画
・動画情報を取得[XML]
http://ext.nicovideo.jp/api/getthumbinfo/[動画番号]
thumb
video_id = 動画番号
title = タイトル
description = 紹介文
thumbnail_url = サムネイルのURL
first_retrieve = 投稿日時
length = 長さ ( 4:07 のような形式 )
movie_type = 動画の種類 ( flv or mp4 )
size_high = 動画のファイルサイズ(byte)
size_low = 〃 (エコノミー、0ならsize_highと共有)
view_counter = 再生数
comment_num = コメント数
mylist_counter = マイリスト数
last_res_body = 最後のコメント
watch_url = 動画のURL
thumb_type = 不明。
embeddable = 外部再生の可否。
1 = 可
0 = 否
tags
* 10件まで
* domain="jp" のようにdomainで複数にグループ分けされていることがある。
tag = タグ
user_id = 投稿した人のユーザーID
平均ビットレート
平均ビットレート = size_high ÷ length(秒) × 8
削除されているかどうか
status属性 = fail
error/code
NOT_FOUND = 存在しない。
DELETED = 削除されている。
* 但し実際には、確定がもてない。
・マイリスト
・マイリストを取得[XML-RSS]
http://www.nicovideo.jp/mylist/[マイリスト番号]?rss=2.0
* 非公開マイリストでもセッションが有効なら取得できる。
* タイトルは、前に「マイリスト 」後に「‐ニコニコ動画(9)」が付加されている。
・とりあえずマイリスト[JSON]
http://www.nicovideo.jp/api/deflist/list
・マイリストに動画を追加
1, 下記URLにアクセスしてNicoAPI.tokenを取得する。
マイリスト登録ページ[HTML]
http://www.nicovideo.jp/mylist_add/video/[動画番号]
2, 下記のパラメータを生成してPOSTする。
group_id = マイリスト番号 ( default or NULL = とりあえずマイリスト )
description = マイリストコメント
token = トークン( NicoAPI.token )
POST先
http://www.nicovideo.jp/api/mylist/add : マイリスト番号を指定しているとき
http://www.nicovideo.jp/api/deflist/add : マイリスト番号を指定しない(とりあえずマイリスト)
・マイリストグループ[JSON]
http://www.nicovideo.jp/api/mylistgroup/list
-------------------------------------------------------------------------------------
参考URL
RSS一覧 http://www.nicovideo.jp/static/base/rss.html
・ランキング[XML-RSS]
http://www.nicovideo.jp/ranking/[ターゲット]/[期間]/[カテゴリー]?rss=2.0
ターゲット
comment = コメント
view = 再生数
fav = 総合
mylist = マイリスト
期間
hourly = 毎時
daily = デイリー
weekly = 週間
monthly = 月刊
total = 合計
カテゴリー
g_rss = 公開RSS
g_all = カテゴリー総合
g_ent = エンタ・音楽・スポ
g_life = 教養・生活
g_politics = 政治
g_try = やってみた
g_culture = アニメ・ゲーム
g_popular = アイマス・東方・ボカロ
・新着動画
・新着動画[XML-RSS]
投稿 http://www.nicovideo.jp/newarrival?rss=2.0
コメント http://www.nicovideo.jp/recent?rss=2.0
公式 http://www.nicovideo.jp/tag/%E5%85%AC%E5%BC%8F?sort=f
%E5%85%AC%E5%BC%8F = 公式
・カテゴリー別[XML-RSS]
http://www.nicovideo.jp/tag/[カテゴリー]?rss=2.0
カテゴリー
ent = エンターテイメント
music = 音楽
sport = スポーツ
animal = 動物
fashion = ファッション
cooking = 料理
diary = 日記
nature = 自然
science = 科学
history = 歴史
lecture = ニコニコ動画講座
sing = 歌ってみた
play = 演奏してみた
dance = 踊ってみた
draw = 描いてみた
tech = ニコニコ技術部
anime = アニメ
game = ゲーム
imas = アイドルマスター
toho = 東方
VOCALOID = VOCALOID
other = その他
・任意タグ[XML-RSS]
http://www.nicovideo.jp/tag/[任意タグ]?rss=2.0
例 : http://www.nicovideo.jp/tag/MikuMikuDance?rss=2.0
・オススメ動画[XML-RSS]
http://www.nicovideo.jp/api/getrelation?page=[ページ番号]&video=[動画番号]
・ニコニコ動画検索
* 3~5秒以内に連続して検索すると規制される。
* ページ番号は、1から始まる。
[HTML]
http://www.nicovideo.jp/[検索方法]/[キーワード]?page=[ページ番号]&[並び替えフラグ]
検索方法
search = キーワード
tag = タグ
related_tag = キーワードを含むタグ
キーワード
+ で連結する。
例 「abc+def」
並び替えフラグ
sort=f = 投稿が新しい順
sort=f&order=a = 投稿が古い順
sort=v = 再生が多い順
sort=v&order=a = 再生が少ない順
order=a = コメントが新しい順
sort=r = コメントが古い順
sort=r&order=a = コメントが多い順
sort=m = マイリストが多い順
sort=m&order=a = マイリストが少ない順
sort=l = 時間が長い順
sort=l&order=a = 時間が短い順
応答
検索できなかったとき
「短時間での連続アクセスはご遠慮ください」
検索できたとき(キーワード or タグ)
class = search_total → ヒット件数
動画番号の列挙
1, aタグを抽出する。
2, class = watch であり、href属性を含むタグに絞り込む。
3, hrefに動画番号が含まれているので正規表現で抜き出す。
検索できたとき(キーワードを含むタグ)
class = result_total → ヒット件数
タグの列挙
1, aタグを抽出する。
2, href属性があり、その値が「tag/」から始まるものに絞り込む
・ニコニコ静画
・静画情報[XML]
http://seiga.nicovideo.jp/api/theme/info?id=[静画番号]
response/theme/id = 静画番号( sg を除く )
response/theme/res_count = 画像枚数
response/theme/title = スレッドのタイトル
response/theme/view_count = 再生数
response/theme/comment_count = コメント数
response/theme/created = スレッド作成日時 ( yyyy-MM-dd HH:mm:ss )
response/theme/updated = スレッド更新日時 ( yyyy-MM-dd HH:mm:ss )
response/theme/delete_flag = 削除の有無 ( 1=削除 )
tag_list = タグリスト ( 10件まで )
tag
id = id
name = タグ名
lock_status = ロック状態 ( 1=ロック 0=編集可能 )
thumbnail_url = サムネイルのURL
・画像リスト[XML]
http://seiga.nicovideo.jp/api/theme/res/list?theme_id=[静画番号]
* ここでの静止番号は、sgを除いたものである。
* コメントも全て取得してしまうため、糞重い^ ^
res_list
res
id = 識別ID
image_id = 画像番号
number = 投稿番号
created = 投稿日時( yyyy-MM-dd HH:mm:ss )
comment_id = コメントID?
type = 不明
status = ステータス(不明)
frame = 不明
source_url = 画像の元URL
* ニコニコ静画内に画像が投稿されている場合は、存在しない
comment_list = その画像に対するコメント
・画像のダウンロード
* ニコニコ静画内に投稿されている画像の場合
http://seiga.nicovideo.jp/image/source?id=[画像番号]
http://lohas.nicoseiga.jp/img/[静画番号]l = 大きいサイズ
http://lohas.nicoseiga.jp/img/[静画番号]s = 小さいサイズ(サムネイル)
・コミュニティ
・コミュニティ名[HTML]
http://com.nicovideo.jp/community/[コミュニティ番号]
h1タグから取得
・ニコニコ生放送
・番組情報
http://live.nicovideo.jp/api/getplayerstatus?v=[生放送番号]
getplayerstatus
属性
time = サーバー日時(Unxi)
stream
id = 生放送番号
default_community = コミュニティ番号
base_time = 放送開始時間(Unxi)
open_time = 〃
watch_count = 累計来場者数
comment_count = コメント数
ms
addr = コメントサーバーのアドレス
port = コメントサーバーのポート番号
thread = コメントサーバーに接続するためのスレッド番号
user ※ ※放送主ではなく、アクセスした人の情報なので注意
room_label = 部屋名(コミュニティ番号)
room_seetno = シート番号(プレーヤーの右下に出る座席番号)
userAge = 年齢
userSex = 性別 1=男 0=女
userPrefecture = 不明
nickname = ユーザー名
user_id = 自分のユーザーID
is_premium = 1 ならプレミアム会員
is_join = 不明
contents_list
contents = コマンド(例 : smile:sm6258578)
属性
id = 画面
main = メイン画面
sub = サブ画面
start_time = 再生開始時間(Unxi)
duration = 動画の秒数(動画再生時のみ)
title = 動画のタイトル
・NGリストを取得[XML] (放送主のみ)
http://live.nicovideo.jp/api/configurengword?mode=get&video=[生放送ID]
* NGワード、NGユーザー両方をまとめて取得する。
type
id = ユーザーID
word = NGワード
is_regex
trueなら正規表現である
use_case_unify
trueなら半角・全角・小文字・大文字の違いを無視する
・NG追加と削除 (放送主のみ)
http://watch.live.nicovideo.jp/api/configurengword?video=[生放送番号]&mode=[モード]&source=[キーワード]&type=[タイプ]&use_case_unify=false
モード
add = 追加
delete = 削除
キーワード
ユーザーIDまたは、NGワード
タイプ
WORD = キーワード
ID = ユーザーID
COMMAND = コマンド
その他
&use_case_unify=false
* use_case_unify=true にすれば、大文字、小文字、半角、全角の違いを無視する。
・運営コメント
POSTパラメータ
body = 本文
mail = コマンド
POST先URL
http://watch.live.nicovideo.jp/api/broadcast/[生放送番号]
・アラート
生放送の情報を取得[XML]
http://live.nicovideo.jp/api/getstreaminfo/[生放送番号]
streaminfo/default_community = コミュニティID
communityinfo/name = コミュニティ名
streaminfo/title = 番組名
streaminfo/description = 番組説明文
request_id = 生放送番号
communityinfo/thumbnail = サムネイルのURL
・枠取り (放送主のみ)
順番待ち[XML]
http://live.nicovideo.jp/api/waitinfo/[生放送番号]
waitinfo/count = 待ち人数
waitinfo/charge_flag = 順番待ちに変更があったかのフラグ(特に使う必要はないと思う)
waitinfo/charge_count = 割り込み回数(これも特に不要かと…)
waitinfo/start_time = 開始予定日時
waitinfo/stream_status = ステータス
0 = 順番待ち中
1 = 不明
2 = 順番キター
waitinfo/remain_time = 順番が来たときの300秒待ちのやつ
waitinfo/exclude = 不明
waitinfo/currentstatus = ステータス
onair = 枠が確保できた(順番キター)
closed = 枠が終了している?
・延長 (放送主のみ)
・ポイント表[XML]
http://watch.live.nicovideo.jp/api/getsalelist?v=[生放送番号]
getsalelist/item/code = コード
getsalelist/item/price = ポイント
getsalelist/item/num = 識別番号
getsalelist/item/item = 属性
freeextend = 無料
extend = 有料
・延長[XML]
http://watch.live.nicovideo.jp/api/usepoint?v=[生放送番号]&code=[コード]&item=[属性]&token=[トークン]&num=[識別番号]
usepoint/mode = extend なら延長成功
usepoint/new_end_time = 新しい放送終了時間(Unxi)
* 応答に数十秒掛かる。
* 仮に延長できたとしてもブラウザの生主用コンソールが更新されないため、
コンソールが生放送を切断してしまう。その後、ページを開き直せば、延長されている。
・コメントサーバー
* XML Socket を使って通信を行う。
* アラート用のコメントサーバーも同類の方法で使用可能。
・接続
1, getplayerstatus (API) で番組情報を取得
(アドレス、ポート、スレッド番号を取得)
2, 下記のXMLを生成
「<thread thread=\"[スレッド番号]\" res_from=\"[過去レス数]\" version=\"20061206\" /> 」
* >の右側にに半角スペースが含むことに注意
* 過去レス数は、「-200」のように指定。デフォルトは、-50。0は、指定できない。
3, 接続直後
thread 要素が送られてくる。
属性
ticket = チケット番号
last_res = 最後のレス番号
・受信
chat 要素 = コメント
属性
no = レス番号
date = 投稿日時(Unxi)
user_id = ユーザーID
vpos = vpos(動画では、コメントの位置情報、生放送では特に不要)
premium = ユーザーの属性値
0 = 一般
1 = プレミアム
2 = アラート
3 = 放送主
6 = 運営
mail = コマンド
chat_result 要素 = コメント送信結果
属性
status = 送信結果
1 = 失敗
0 = 成功
・送信
* chat要素を生成する。
* 恐らく3秒以内に連続送信すると規制される。
* 前回と同じコメントは、送信できない。
※ 送信方法も知っているが荒らし行為防止のため詳しくは非公開としたい。