raicem/reddit-public-api-wrapper

Reddit公共API的简单封装

1.0.0 2018-08-20 18:30 UTC

This package is auto-updated.

Last update: 2024-09-18 06:37:08 UTC


README

Reddit通过在正常URL末尾添加 .json 提供了对其数据的非常方便的访问。例如,https://www.reddit.com/r/formula1.json 将呈现json响应。

这是一个围绕Reddit此功能的非常简单的封装。旨在提供对子版块和用户数据的简单访问。

1. 安装

使用 Composer 作为依赖项安装

composer require raicem/reddit-public-api-wrapper

2. 实例化

use RedditWrapper\Wrapper;
use RedditWrapper\WrapperClient;

$wrapper = new Wrapper(new WrapperClient());

3. 查询

3.1. 子版块查询

获取特定子版块的信息。

use RedditWrapper\Queries\SubredditQuery;
use RedditWrapper\Enums\SubredditSort;
use RedditWrapper\Enums\SubredditSortTime;

$query = new SubredditQuery([
    'subreddit' => 'formula1',
]);

$response = $wrapper->fetch($query);

您可以在查询中添加排序选项,以便在子版块中获取最佳、热门、上升、争议性帖子。您可以使用 RedditWrapper\Enums\SubredditSortRedditWrapper\Enums\SubredditSortTime 提供的常量。

use RedditWrapper\Queries\SubredditQuery;
use RedditWrapper\Enums\SubredditSort;
use RedditWrapper\Enums\SubredditSortTime;

$query = new SubredditQuery([
    'subreddit' => 'formula1',
    'sort' => SubredditSort::TOP,
    'sortTime' => SubredditSortTime::WEEK,
]);

$response = $wrapper->fetch($query);

3.2. 用户查询

获取属于用户的源。

use RedditWrapper\Queries\UserQuery;

$query = new UserQuery([
    'username' => 'unidan',
]);

$response = $wrapper->fetch($query);

所有这些查询都扩展了包中的 QueryInterface。因此,您可以在代码库中创建自己的查询,实现 QueryInterface,然后将它提供给 Wrapper

4. 魔法功能

4.1. 包装器上的 __call 方法

我相信这个库的主要功能将是获取子版块信息。我想要尽可能简化这个功能。

因此,您不需要创建新的查询,只需在这个包装器上将子版块名称作为方法调用即可。

use RedditWrapper\Wrapper;
use RedditWrapper\WrapperClient;

$wrapper = new Wrapper(new WrapperClient());

$response = $wrapper->formula1();

包装器上的 fetchSimple 方法

在获取子版块信息时,Reddit发送了大量的信息,这些信息可能并不必要。默认响应可能很难理解。fetchSimple 方法删除所有杂乱的信息,并尝试仅使用更通用的值呈现响应。

$query = new SubredditQuery([
    'subreddit' => 'formula1',
    'sort' => SubredditSort::TOP,
    'sortTime' => SubredditSortTime::WEEK,
]);

$response = $wrapper->fetchSimple($query);

fetchSimple 方法返回这些值。此方法仅适用于 SubredditQuery 实例。