Видео, загруженное через API (v3), не прикреплено к моей учетной записи в Imgur - PullRequest
0 голосов
/ 04 апреля 2020

Фрагмент кода:

Вот мой фрагмент кода:

function uploadByCurl($uploadFilePath, $accessToken){
    $ch = curl_init();
    $mimeType = mime_content_type($uploadFilePath);
    $fileType = '';
    if(strpos($mimeType, 'image')!==false){
        $fileType = 'image';
    }else if(strpos($mimeType, 'video')!==false){
        $fileType = 'video';
    }
    if(!$fileType){
        return false;
    }
    $filename = basename($uploadFilePath);
    $options = [
        CURLOPT_URL => 'https://api.imgur.com/3/upload',
        CURLOPT_POST => true,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HTTPHEADER => [
            'Authorization:Bearer ' . $accessToken,
        ],
        CURLOPT_POSTFIELDS => [
            //$fileType's value can be 'image' or 'video'
            $fileType => new \CURLFile($uploadFilePath),
            'type' => 'file',
            'name' => $filename,
            'title' => $filename,
            'description' => $filename,
        ],
        //In case you're in Windows, sometimes will throw error if not set SSL verification to false
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_SSL_VERIFYHOST => 0,
        CURLOPT_TIMEOUT => 30,
    ];
    //In case you need a proxy
    //$options[CURLOPT_PROXY] = 'http://127.0.0.1:1087';
    // var_dump($options);exit;
    curl_setopt_array($ch, $options);
    $result = curl_exec($ch);
    if(curl_errno($ch)){
        echo 'Error: ' . curl_error($ch);
    }
    return $result;
}

$uploadFilePath = '/path/to/YOU_VIDEO.mp4';
$accessToken = '<YOU ACCESS TOKEN>';
$result = uploadByCurl($uploadFilePath, $accessToken);
var_dump($result);

Загрузка изображения

Фрагмент кода выше можно использовать для загрузки изображения и видео, для изображения , он работает нормально, успешно загружает изображение и возвращает ссылку на изображение, и самое главное, изображение прикреплено к моей учетной записи Imgur, ответ json выглядит следующим образом:

{
  "data": {
    "id": "C1CuRYw",
    "title": "Xnip2020-04-04_15-43-41.jpg",
    "description": "Xnip2020-04-04_15-43-41.jpg",
    "datetime": 1585987477,
    "type": "image/jpeg",
    "animated": false,
    "width": 748,
    "height": 632,
    "size": 126123,
    "views": 0,
    "bandwidth": 0,
    "favorite": false,
    "account_id": 96115121,
    "is_ad": false,
    "in_most_viral": false,
    "has_sound": false,
    "tags": [],
    "ad_type": 0,
    "ad_url": "",
    "edited": "0",
    "in_gallery": false,
    "deletehash": "uTg1rOZhEggKjgR",
    "name": "Xnip2020-04-04_15-43-41.jpg",
    "link": "https://i.imgur.com/C1CuRYw.jpg"
  },
  "success": true,
  "status": 200
}

Загрузка видео

Я также могу успешно загрузить видео, и формат ответа json совпадает с форматом загрузки изображения:

{
  "status": 200,
  "success": true,
  "data": {
    "id": "SHCsEXK",
    "deletehash": "44oeDQCmP0Oba3o",
    "title": "testvideo.mp4",
    "description": "testvideo.mp4",
    "name": "",
    "type": "video/mp4",
    "width": 0,
    "height": 0,
    "size": 0,
    "views": 0,
    "bandwidth": 0,
    "animated": true,
    "favorite": false,
    "in_gallery": false,
    "in_most_viral": false,
    "has_sound": false,
    "is_ad": false,
    "link": "https://i.imgur.com/SHCsEXK.mp4",
    "tags": [],
    "processing": {
      "status": "pending"
    },
    "datetime": 1585986090,
    "mp4": "https://i.imgur.com/SHCsEXK.mp4",
    "hls": ""
  }
}

link в порядке, но проблема Я могу Вы не видите это видео в моей учетной записи Imgur , это означает, что оно не прикреплено к моей учетной записи.

Другая конечная точка загрузки

На самом деле, можно использовать еще одну конечную точку загрузки, которая https://api.imgur.com/3/image (см. здесь ), я попытался изменить:

CURLOPT_URL => 'https://api.imgur.com/3/upload',

на:

CURLOPT_URL => 'https://api.imgur.com/3/image',

Это сработало, и на этот раз видео успешно прикреплено на мой аккаунт Imgur, но дело в том, что в ответе нет видео ссылки, вот ответ json от https://api.imgur.com/3/image конечная точка:

{
  "data": {
    "ticket": "33565dc7"
  },
  "success": true,
  "status": 200
}

Для чего используется ticket? Я никогда не нашел его на API do c.

Что означает значок блокировки?

И я нашел это в здесь : enter image description here Что означает значок lock?

...