rennokki/reddit-json-api

Reddit JSON API 提供了一种简单快捷的方法来获取子版块数据。

2.5.0 2023-04-05 16:00 UTC

README

CI codecov StyleCI Latest Stable Version Total Downloads Monthly Downloads License

Reddit JSON API 是一个用于处理公共子版块 JSON 信息的 PHP 包装器。

🚀 安装

您可以通过 composer 安装此软件包

composer require rennokki/reddit-json-api

🙌 使用方法

use Rennokki\RedditApi\Reddit;

$app = Reddit::app(
    'renoki-co/reddit-json-api',
    '2.0',
    'web',
    'someusername'
);

$subreddit = Reddit::subreddit(
    'funny', // subreddit name
    $app
);

$posts = $subreddit->get();

foreach ($posts as $post) {
    $id = $post['id'];
}

在获取帖子时,结果将包装在 Rennokki\RedditApi\RedditList 类中。该类基于 Laravel Collection,您可以在其上更容易地使用管道操作。请参阅Laravel Collections 文档

分页

为了分页,您应从之前的 $posts 中调用 nextPage()

$subreddit = Reddit::subreddit('funny', $app);

$posts = $subreddit->get();

$nextPageOfPosts = $posts->nextPage();

排序

Reddit 允许按帖子类型排序。当前使用的有

public static $sorts = [
    'hot', 'new', 'controversial', 'top', 'rising',
];

要应用排序,您应该调用 sort()

$subreddit = Reddit::subreddit('funny', $app);

$subreddit->sort('top');

时间过滤

与排序相同,时间过滤器也很少

public static $times = [
    'hour', 'day', 'week', 'month', 'year', 'all',
];
$subreddit = Reddit::subreddit('funny', $app);

// Top, all time sorting.
$subreddit
    ->sort('top')
    ->time('all');

限制

默认情况下,每次调用都返回 20 个帖子。

$subreddit = Reddit::subreddit('funny', $app);

$subreddit->setLimit(100);

调试

如果您想检查正在调用的 URL,您可以这样做

$subreddit = Reddit::subreddit('funny', $app);

$subreddit
    ->setLimit(30)
    ->sort('top')
    ->time('week');

$url = $subreddit->getCallableUrl();

🐛 测试

vendor/bin/phpunit

🤝 贡献

请参阅CONTRIBUTING 了解详情。

🔒 安全性

如果您发现任何安全相关的问题,请通过电子邮件alex@renoki.org联系,而不是使用问题跟踪器。

🎉 致谢