#html{{ <script> location.href="https://live.erinn.biz/manual.php?tab=api"; </script> }} * 開発者向けAPI [#h0a4a034] #contents ** 概要と注意事項 [#l0805fa7] - kukuluLIVE の開発者向けAPIは実験的に提供されているものです。&br; - 予告なく変更や廃止したり、制限を課す場合がありますのでご了承ください。&br; - 従来より内部で使用しているものも含まれるため、このドキュメントに記載のないレスポンスパラメータが返るものがありますが、維持が保証されないため使用は非推奨です。 - APIの使用方法やその成果物の利用に際してはノンサポートになります。(バグレポートや機能追加の要望は歓迎します)&br; ** 更新と仕様変更 [#ac783207] - 2020/05/08 コメント取得やコメント投稿において配信番号(hash)を自動取得する機能を追加、コメント投稿において匿名コメントパラメータ(anon)追加 - 2019/12/17 配信一覧(category=live)のレスポンスパラメータを追加(NSFW属性) - 2019/08/05 配信一覧(category=live)のレスポンスパラメータを追加(プロフィールページのURLや100x100サムネ画像など) - 2019/08/05 コメント投稿(category=comment&type=write)追加 - 2019/08/03 エモーション一覧(category=comment&type=emotions)追加 ** 認証について [#zf82c43c] - APIキーでの認証 -- APIキーは[[このリンク>https://live.erinn.biz/login.php?action=getAPIKey]]から生成や再生成できます。自身のサーバからAPIを使いたい場合はこちらをご利用ください。 - Cookieでの認証 -- APIキー(apikey)のパラメーターが指定されない場合は、Cookieでの認証を試みます。ソフトウェアに簡易的に組み込みたい場合などはこちらをご利用ください。 * APIリファレンス [#mb9f7ea4] ** 放送中の配信一覧を取得 [#qb6815f6] ''リクエストフォーマット''&br; https://live.erinn.biz/api/?category=live - category: live - (認証なし) ''レスポンスフォーマット''&br; - フォーマット: JSON - エンコード: UTF8 #html{{ <pre> { "live": [ { "hash": 配信番号, "_id": 配信者識別番号, "profile_page": "配信者のプロフィールページのURL", "broadcaster_language": "配信者言語", "broadcaster_locale": "配信者接続国", "created_at": "放送開始日時", "created_at_unix": 放送開始日時のUNIXタイム, "name": "配信者の名前@アカウントタイプ", "display_name": "配信者の名前表示", "game": "プレイ中のゲーム", "game_category": "プレイ中のゲームのカテゴリ", "games": [ "配信でプレイしたゲームの一覧", ... ], "language": "配信のデフォルト言語", "logo": "配信者のサムネイル", "title": "配信のタイトル", "description": "配信の説明", "updated_at": "最後のプッシュ接続日時", "updated_at_unix": 最後のプッシュ接続日時のUNIXタイム, "url": "配信視聴URL", "video_banner": "配信映像のサムネイル画像URL", "video_banner_small": "配信映像のサムネイル画像URL(100x100)", "viewers": 現在の視聴者数, "viewers_max": 瞬間最大視聴者数, "views": 累積訪問者数, "comments": コメント数, "partner_hash": 共同配信の場合の配信番号(ない場合は0), "nsfw": NSFW属性の有無(無効=0,有効=1) }, { ... } ], "_total": 生放送中の配信の数, "success": 取得成功の場合は1, "error": エラーの場合はエラー番号 } </pre> }} ''レスポンスサンプル''&br; #html{{ <pre> { "live": [ { "hash": 4566456456543, "_id": 9930, "profile_page": "https://live.erinn.biz/userdata.php?uid://******/", "broadcaster_language": "JP", "broadcaster_locale": "JP", "created_at": "2019-07-27 12:42:58", "created_at_unix": 1564198978, "name": "kukusama@Twitter", "display_name": "kukusama", "game": "", "game_category": "", "games": [ ], "language": "JP", "logo": "https://live.erinn.biz/reguser/noimage.jpeg", "title": "初配信です", "description": "人生初心者ですがよろしくお願いします", "updated_at": "2019-07-27 12:45:19", "updated_at_unix": 1564199119, "url": "https://live.erinn.biz/live.php?h0", "video_banner": "https://live.erinn.biz/live.capture.view.php?hash=0", "video_banner_small": "https://live.erinn.biz/1.jpg?hash=0", "viewers": 141, "viewers_max": 216, "views": 231, "comments": 855, "partner_hash": 0, "nsfw": 0 }, { "hash": 4566456456544, "_id": 9931, "profile_page": "https://live.erinn.biz/userdata.php?uid://******/", "broadcaster_language": "JP", "broadcaster_locale": "JP", "created_at": "2019-07-27 12:38:30", "created_at_unix": 1564198710, "name": "くくさま", "display_name": "くくさまりゆ", "game": "マビノギ", "game_category": "MMO", "games": [ "マビノギ", "ぷーさんのホームランダービー", "Minecraft" ], "language": "JP", "logo": "https://live.erinn.biz/reguser/noimage.jpeg", "title": "ウィズエリートTA", "description": "目指せ24時間切り", "updated_at": "2019-07-27 12:39:27", "updated_at_unix": 1564198767, "url": "https://live.erinn.biz/live.php?h0", "video_banner": "https://live.erinn.biz/live.capture.view.php?hash=0", "video_banner_small": "https://live.erinn.biz/1.jpg?hash=0", "viewers": 542, "viewers_max": 952, "views": 3126, "comments": 1252, "partner_hash": 0, "nsfw": 0 } ], "_total": 2, "success": 1, "error": 0 } </pre> }} ** 放送枠の取得 [#l71156d7] ''リクエストフォーマット''&br; https://live.erinn.biz/api/?category=mylive&type=port_get&apikey={APIKEY}&eula=1&withrec={0|1} - category: mylive - type: port_get - apikey: 自身のkukuluIDのAPIキー ([[認証について>#zf82c43c]]) - eula: 1 (=すべてのルールに同意したとみなします) - withrec: 1 (=録画あり放送枠), 0 (=録画なし放送枠) ''レスポンスフォーマット''&br; - フォーマット: JSON - エンコード: UTF8 #html{{ <pre> { "success": 成功した場合は1, "error": エラーの場合はエラー番号, "error_display": "エラーの詳細情報(ある場合)" } </pre> }} ''レスポンスサンプル''&br; #html{{ <pre> { "success": 1, "error": 0 } </pre> }} ** 自分の配信の放送枠情報を取得 [#q99ba63f] 放送枠の取得状態や放送番号、プッシュ接続状態等を取得できます。&br; ''リクエストフォーマット''&br; https://live.erinn.biz/api/?category=mylive&type=port_info&apikey={APIKEY} - category: mylive - type: port_info - apikey: 自身のkukuluIDのAPIキー ([[認証について>#zf82c43c]]) ''レスポンスフォーマット''&br; - フォーマット: JSON - エンコード: UTF8 #html{{ <pre> { "success": 成功した場合は1, "error": エラーの場合はエラー番号, "error_display": "エラーの詳細情報(ある場合)" "mylive": 放送中の放送枠取得状態(あり=1、なし=0), "status": 放送状態(準備中=1, 公開放送中=2、非公開放送中=3, 放送終了=0), "connect": プッシュ接続状態(未接続=0, プッシュ接続中=1), "hash": 配信番号, "livepriv": 放送枠タイプ(録画あり放送枠=10, 録画なし放送枠=11), "serveraddr": "RTMP接続先", "streamname": "RTMPストリームキー", "socketaddr": "チャットサーバアドレス", "socketport": チャットサーバポート番号, "livetitle": "配信のタイトル", "livecomment": "配信の説明", "liveuser_image": "配信者サムネイル", "getport_from_pc": 放送枠取得元端末の種別(パソコンまたはAPI=1, スマホアプリ=0), "liveowner_key": "配信者認証キー(チャットサーバで使用)" } </pre> }} ''レスポンスサンプル''&br; #html{{ <pre> { "success": 1, "mylive": 1, "status": 1, "connect": 0, "hash": 98797645345222, "livepriv": 10, "serveraddr": "rtmp://pushlive-edge-000-00-000-00.erinn.biz:11935/live/", "streamname": "h98797645345222_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "socketaddr": "livec2.kukulu.erinn.biz", "socketport": 6862225, "livetitle": "初配信です", "livecomment": "人生初心者ですが優しくしてください", "liveuser_image": "https://kukulu.erinn.biz/reguser/noimage.jpeg", "getport_from_pc": 1, "liveowner_key": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" } </pre> }} ** 自分の配信の設定を変更 [#h4df20ed] 配信のタイトルや説明を変更できます。&br; ''リクエストフォーマット''&br; https://live.erinn.biz/api/?category=mylive&type=port_modify&apikey={APIKEY}&title={TITLE}&description={DESCRIPTION} - category: mylive - type: port_modify - apikey: 自身のkukuluIDのAPIキー ([[認証について>#zf82c43c]]) - title: 配信のタイトル - description: 配信の説明 ''レスポンスフォーマット''&br; - フォーマット: JSON - エンコード: UTF8 #html{{ <pre> { "success": 成功した場合は1, "error": エラーの場合はエラー番号, "error_display": "エラーの詳細情報(ある場合)" } </pre> }} ''レスポンスサンプル''&br; #html{{ <pre> { "success": 1, "error": 0 } </pre> }} ** 自分の配信の放送状態の変更や放送枠の返上 [#a21633bb] プッシュ接続完了後に公開放送または非公開放送にできます。&br; 放送枠を返上して配信を終わることもできます。&br; 公開放送はkukuluLIVEのトップページに表示されます。非公開放送はトップページには表示されませんがプロフィールページには表示されます。&br; ''リクエストフォーマット''&br; https://live.erinn.biz/api/?category=mylive&type=port_status&apikey={APIKEY}&status={0|1|2} - category: mylive - type: port_status - apikey: 自身のkukuluIDのAPIキー ([[認証について>#zf82c43c]]) - status: 0 (=放送枠の返上), 1 (=公開放送の開始), 2 (=非公開放送の開始) ''レスポンスフォーマット''&br; - フォーマット: JSON - エンコード: UTF8 #html{{ <pre> { "success": 成功した場合は1, "error": エラーの場合はエラー番号, "error_display": "エラーの詳細情報(ある場合)" } </pre> }} ''レスポンスサンプル''&br; #html{{ <pre> { "success": 1, "error": 0 } </pre> }} ** 自分の配信のコメントを取得 [#r11023d6] 自身の配信のコメントを全て取得したり、最新のもののみを取得したりすることができます。&br; [[kukuluLIVE Coffretソフトウェアの外部転送機能>kukuluLIVE Coffret#tfaba290]]を使うほうが楽な場合もありますので最適な実装を選択してください。&br; ''リクエストフォーマット''&br; https://live.erinn.biz/api/?category=comment&type=list&apikey={APIKEY}&hash={LIVE_NUMBER}&cnum={COMMENT_ID} - category: comment - type: list - apikey: 自身のkukuluIDのAPIキー ([[認証について>#zf82c43c]]) - hash: 自身の配信番号 (未指定の場合は有効な放送を自動取得) - cnum: 最新コメントのみを取得する場合は既に取得した最後のコメントID(任意) ''レスポンスフォーマット''&br; - フォーマット: JSON - エンコード: UTF8 #html{{ <pre> { "success": 成功した場合は1, "error": エラーの場合はエラー番号, "error_display": "エラーの詳細情報(ある場合)" "comments": [ { "type": "データ種別(comment=通常コメント,visualchat=お絵描きコメント,sscomment=画像または動画コメント,voicecomment=ボイスコメント)", "cnum": コメントID, "from": "投稿種別またはマーカー(空白=一般, master=配信者, partner=共同配信者, #XXXXXX=マーカー色, admin=管理者告知)", "date": "投稿時間(HH:MM)", "message": "コメント本文", "message_additional": { "visualchat_url": "お絵描きコメントの画像URL(お絵描きコメントの場合のみ)", "sscomment_url": "画像または動画コメントのURL(画像または動画コメントの場合のみ)", "voicecomment_url": "ボイスコメントの再生URL(ボイスコメントの場合のみ)", }, "ipid": "配信ごとの視聴者ユニークID", "url": "リンク先URL", "icon_num": "コテハン番号", "icon_name": "コテハンの名前@アカウント種別", "time": 投稿時間のUNIXタイム, "number": コメント番号, "link_number": "レス先のコメント番号", "flag_first": 配信ごとの初コメフラグ(1=初コメ, それ以外=初コメではない), "language": "日本語以外の場合のみコメントの言語(EN等)", "emotions": { "エモーションキー(持ち込みエモーションの場合のみ)": { "url": "エモーションの画像URL", "message": "エモーションの感情表現" }, { ... } } }, { ... } ], "_total": コメント数 } </pre> }} ''レスポンスサンプル''&br; #html{{ <pre> { "success": 1, "error": 0, "comments": [ { "type": "comment", "cnum": 59176067, "from": "", "date": "18:32", "message": "1: やふーじゃぱん https://kuku.lu/s3/", "message_additional": [ ], "ipid": "fc6be1", "url": "https://kuku.lu/s3/", "icon_num": "", "icon_name": "", "time": 1564219964, "number": 1, "link_number": "", "flag_first": "", "language": "", "emotions": [ ] }, { "type": "comment", "cnum": 59176070, "from": "", "date": "18:32", "message": "2: ほげほげ", "message_additional": [ ], "ipid": "fc6be1", "url": "", "icon_num": "", "icon_name": "", "time": 1564219967, "number": 2, "link_number": "", "flag_first": "", "language": "", "emotions": [ ] }, { "type": "comment", "cnum": 59176078, "from": "master", "date": "18:32", "message": "3: てすとてすと", "message_additional": { }, "ipid": "", "url": "", "icon_num": 1, "icon_name": "くくさまりゆ@Twitter", "time": 1564219973, "number": 3, "link_number": "", "flag_first": "", "language": "", "emotions": [ ] } ], "_total": 3 } </pre> }} ** 自分のエモーション一覧を取得 [#q5224098] あなたがエモーションをkukuluIDに登録している場合、あなたの配信で視聴者がエモーションを使うことができます。&br; エモーションの持ち込みを許可している場合は、あなたの登録しているエモーションに加えて、視聴者が登録しているエモーションも使用できます。&br; 視聴者が持ち込んだエモーションはコメント取得結果の「emotions」から画像URL等が取得できますが、&br; あなたが登録しているエモーションを視聴者が使用した場合は、コメント取得結果で画像URLをとれませんので、あらかじめ自身のエモーション一覧を取得しておく必要があります。&br; ''リクエストフォーマット''&br; https://live.erinn.biz/api/?category=comment&type=emotions&apikey={APIKEY}&hash={LIVE_NUMBER} - category: comment - type: emotions - apikey: 自身のkukuluIDのAPIキー ([[認証について>#zf82c43c]]) - hash: 自身の配信番号 (未指定の場合は有効な放送を自動取得) ''レスポンスフォーマット''&br; - フォーマット: JSON - エンコード: UTF8 #html{{ <pre> { "success": 成功した場合は1, "error": エラーの場合はエラー番号, "error_display": "エラーの詳細情報(ある場合)" "openemo": エモーション持ち込みの許可状況(0=許可しない, 1=許可する), "emotions": { "エモーションキー": { "url": "エモーションの画像URL(拡張子pngでもgifの場合がありますのでバイナリの冒頭またはvパラメタで判断してください)", "message": "エモーションの感情表現" }, { ... }, }, "_total": エモーション登録数 } </pre> }} ''レスポンスサンプル''&br; #html{{ <pre> { "success": 1, "error": 0, "openemo": 1, "emotions": { "otu": { "url": "https://live.erinn.biz/live/emotion/44418/0d054.png?v=d41d8c-1550319114", "message": "おつ" }, "daisuki": { "url": "https://live.erinn.biz/live/emotion/7347/f5313.png?v=d41d8c-1550196696-gif", "message": "だいすき" } }, "_total": 2 } </pre> }} ** 自分の配信にコメントを投稿する [#df2d976e] 自身の配信にコメントを投稿します。&br; コメント投稿をcategory=comment&type=listで検知し、反応を自動で返すチャットボットのような実装や、 他の配信サイトと同時配信する際のコメント同期などに利用できます。&br; [[コメントスクリプト>https://magical.kuku.lu/?num=2332]]を使うほうが楽な場合もありますので最適な実装を選択してください。&br; ''リクエストフォーマット''&br; https://live.erinn.biz/api/?category=comment&type=write&apikey={APIKEY}&hash={LIVE_NUMBER}&comment={COMMENT_TEXT}&icon={0|1} - category: comment - type: write - apikey: 自身のkukuluIDのAPIキー ([[認証について>#zf82c43c]]) - hash: 自身の配信番号 (未指定の場合は有効な放送を自動取得) - comment: コメント本文 - anon: 匿名コメントにするか否か(0=配信主コメント, 1=匿名コメント) - icon: 名前表示コメントにするか否か(0=しない, 1=する) ''レスポンスフォーマット''&br; - フォーマット: JSON - エンコード: UTF8 #html{{ <pre> { "success": 成功した場合は1, "error": エラーの場合はエラー番号, "error_display": "エラーの詳細情報(ある場合)" } </pre> }} ''レスポンスサンプル''&br; #html{{ <pre> { "success": 1, "error": 0 } </pre> }}