0

現在、hitbox.tv api プラグインを自分の Web サイトに使用してプロジェクトを行っています。ライブ ストリームを配信しているときに、ビデオのタイトルを更新したいと考えています。guzzle 6 を使用して http リクエストを API エンドポイントに送信します。以下は私のコードです。

myGuzzle.php

<?php
namespace myGuzzle;

require __DIR__.'/../vendor/autoload.php';
use GuzzleHttp\Client;
use GuzzleHttp\Exception\ClientException;

class myGuzzle{


    public $params;
    public $method;
    public $endpoint;
    public $body;
    public $status;
    public $errorJson;


    function response($params=[],$method,$endpoint) {

        $this->params = $params;
        $this->method = $method;
        $this->endpoint = $endpoint;
             $client = new Client();
             try{

            $response = $client->request($this->method, $this->endpoint,['json' => $this->params]);

             $this->body = $response->getBody();
             $this->status = $response->getStatusCode();

             }

             catch(ClientException $e){


             $this->body = $e->getMessage();
             $this->status = $e->getCode();
             $this->errorJson = $e->getResponse()->getBody();
                }


    }



     function getStatus(){

         return $this->status;
     }   
     function getBody(){
         return $this->body;

     }
     function getErrorJson(){

         return $this->errorJson;
     }
}

updateLiveMedia.php

namespace models;

use myGuzzle\myGuzzle;

class updateLiveMedia {
    protected $username;
    protected $access_token;
    public $media_user_name;
    public $media_id;
    public $media_category_id;
    public $media_live_delay;
    public $media_hidden;
    public $media_recording;
    public $media_mature;
    public $media_hosted_name;
    public $media_countries = [];
    public $media_status;
    public $media_description;



    function __construct($username,$acessToken) {

        $this->username = $username;
        $this->access_token = $acessToken;
        $this->media_countries = ["EN"];
        $this->media_category_id = '0';
        $this->media_recording = "1";
        $this->media_mature ='0';
        $this->media_user_name = $this->username;
        $this->media_hosted_name = "on";
        $this->media_live_delay='2';
        $this->media_hidden = '0';
    }

    /*
     * Parameters function(title,descritption) or
     * Parameters function(title,description,countries).
     */

    function update($opts=[]){

        if(is_array($opts)){

            foreach($opts as $key=>$value){

                $this->$key = $value;
            }

        }
        $myGuzzle = new myGuzzle;

        $uri = "https://api.hitbox.tv/media/live/".$this->username."?authToken=".$this->access_token;
        $params = ["livestream"=>[
    [
      "media_user_name"=>$this->username,
      "media_id"=>$this->media_id,
      "media_category_id"=>$this->media_category_id,
      "media_live_delay"=>$this->media_live_delay,
      "media_hidden"=>$this->media_hidden,
      "media_recording"=>$this->media_recording,
      "media_mature"=>$this->media_mature,
      "media_hosted_name"=>$this->media_hosted_name,
      "media_countries"=>  $this->media_countries,
      "media_status"=>$this->media_status,
      "media_description"=>$this->media_description,
    ]
  ]];
       $myGuzzle->response($params,"PUT",$uri);
       return $myGuzzle->getBody();
       if($myGuzzle->getStatus() == 200){
           return true;
       }
        return false;

        } 

        }

update() を実行すると、次の結果が返されます

{"success":true,"error":false,"message":"host_mode_enabled"}

hitbox.tv ( http://developers.hitbox.tv/#update-live-media ) が提供するドキュメントによると、次のようなものが返されます。

{
  "livestream": [
    {
      "media_user_name": "masta",
      "media_id": "1",
      "media_category_id": "447",
      "media_live_delay": "0",
      "media_hidden": "0",
      "media_recording": "1",
      "media_mature": "0",
      "media_countries": [
        "EN"
      ],
      "media_status": "This is a stream title!",
      "media_description_md": null
    }
  ]
}
4

1 に答える 1

0

update-live-media の API ドキュメントには、ホスティング フラグが変更されていない場合にのみ期待される応答が記載されています。

他のケースでは、さまざまなタイプの回答が返されます。

  1. ホストモード有効時

    {"success":true,"error":false,"message":"host_mode_enabled"}

  2. ホストモード無効時

    {"success":true,"error":false,"message":"host_mode_disabled"}

また、エラーはドキュメントとは異なるものも返します。たとえば、次のようになります。

  1. authToken / media_idが無効であるか、権限が不十分な 場合

    {"success":true,"error":false,"message":"auth_required_token"} または {"success":true,"error":false,"message":"auth_required"}

ホスティング モードを更新する場合、他の情報 (タイトル) は更新されません。クエリからmedia_hosted_nameを除外して、説明とタイトルがどのように更新されるかを確認してください。ユーザー (およびチャット ボット) は、更新された情報を確認できます。

API に関してまだ問題がある場合はお知らせください。具体的な例が必要であり、さらに役立つ可能性があります。

于 2016-07-25T11:47:33.673 に答える