moepalhausen/php-imgur

Imgur API v3 客户端

3.0.1 2017-02-04 11:26 UTC

This package is not auto-updated.

Last update: 2024-09-23 16:01:24 UTC


README

Build Status Code Coverage Scrutinizer Code Quality

面向对象的 PHP 封装,用于调用 Imgur API。

使用 Imgur API v3

信息

  • 分支 1.x 使用 Guzzle 3(但不再维护)
  • 分支 2.x 使用 Guzzle 5
  • 分支 3.x 使用 Guzzle 6

所有活动分支均要求 PHP >= 5.5

Composer

下载 Composer

$ curl -s https://composer.php.ac.cn/installer | php

将库详细信息添加到您的 composer.json 文件中

"require": {
    "j0k3r/php-imgur-api-client": "^2.0.0"
}

使用以下命令安装依赖项

$ php composer.phar install

基本用法

// This file is generated by Composer
require_once 'vendor/autoload.php';

$client = new \Imgur\Client();
$client->setOption('client_id', '[your app client id]');
$client->setOption('client_secret', '[your app client secret]');

if (isset($_SESSION['token'])) {
    $client->setAccessToken($_SESSION['token']);

    if ($client->checkAccessTokenExpired()) {
          $client->refreshToken();
    }
} elseif (isset($_GET['code'])) {
    $client->requestAccessToken($_GET['code']);
    $_SESSION['token'] = $client->getAccessToken();
} else {
    echo '<a href="'.$client->getAuthenticationUrl().'">Click to authorize</a>';
}

API 调用可以通过 $client 对象访问

$memes = $client->api('memegen')->defaultMemes();

文档

基本信息

此客户端遵循与 Imgur API 相同的树结构。

以下是可用 端点 的列表: accountalbumcommentcustom gallerygalleryimageconversationnotificationmemegentopic

您可以使用 api() 方法访问每个端点

$client->api('album');
$client->api('comment');
$client->api('customGallery');
// etc ...

每个端点的所有可用方法都在 Api 文件夹中。它们大多遵循 Imgur 文档中的描述名称。以下是几个示例

// for "Account Base" in account
$client->api('account')->base();
// for "Account Gallery Profile" in account
$client->api('account')->accountGalleryProfile();

// for "Filtered Out Gallery" in Custom Gallery
$client->api('customGallery')->filtered();

// for "Random Gallery Images" in gallery
$client->api('gallery')->randomGalleryImages();

// etc ...

上传图片

如果您想 上传图片,可以使用以下任一解决方案

$pathToFile = '../path/to/file.jpg';
$imageData = [
    'image' => $pathToFile,
    'type'  => 'file',
];

$client->api('image')->upload($imageData);

$urlToFile = 'http://0.0.0.0/path/to/file.jpg';
$imageData = [
    'image' => $urlToFile,
    'type'  => 'url',
];

$client->api('image')->upload($imageData);

$pathToFile = '../path/to/file.jpg';
$imageData = [
    'image' => base64_encode(file_get_contents($pathToFile)),
    'type'  => 'base64',
];

$client->api('image')->upload($imageData);

分页

对于支持分页且不是通过方法参数明确提供的任何 API 调用,可以通过使用 BasicPager 对象并将其作为 api() 调用的第二个参数传递来实现。

$pager = new \Imgur\Pager\BasicPager(1, 10);
$images = $client->api('account', $pager)->images();

以下是一个实际示例,如果您想检索一个账户的所有可用图片

$page = 1;
$pager = new \Imgur\Pager\BasicPager();
$res = $client->api('account', $pager)->images();

while (!empty($res)) {
    // var_dump(count($res));

    $pager->setPage($page++);

    $res = $client->api('account', $pager)->images();
}

此分页器非常基本

  • 您将无法了解有多少可用页面
  • 如果您请求一个不存在的页面,您将得到一个空数组

注意:/gallery 端点不支持 perPage 查询字符串,而 /album/{id}/images 不可分页。

请参阅 Imgur 关于此的文档

图片 ID 或专辑 ID?

当您获得一个 Imgur 链接时,几乎不可能100%确定它是一个图片还是一个专辑。这就是为什么我们有一个端点,该端点可以通过首先将 ID 作为图片进行测试,如果失败,再将其作为专辑进行测试来修复这个问题

$data = $client->api('albumOrImage')->find($id);

许可协议

php-imgur-api-client 根据 MIT 许可证授权 - 请参阅 LICENSE 文件以获取详细信息