【发布时间】:2020-10-22 04:49:14
【问题描述】:
我想创建一个 cronjob,定期发布指向 reddit(imgur 上的图像)的链接,并为发布的链接添加评论。
我发现了类似https://github.com/jcleblanc/reddit-php-sdk
我创建了这个在 reddit 上发布链接的脚本
<?
require_once('reddit/reddit.php');
$reddit = new reddit();
$response = $reddit->createStory('title', 'https://i.imgur.com/....', 'funny');
$pageInfo = $reddit->getPageInfo("https://i.imgur.com/...");
echo var_dump($response);
echo '<br><br>-------------------------------------------------------------------<br><br>';
echo var_dump($pageInfo);
echo '<br><br>-------------------------------------------------------------------<br><br>';
echo 'name: '.$pageInfo->name;
$response = $reddit->addComment('name from pageInfo', 'comment');
?>
链接有效,但我无法从 $pageInfo 获取名称,我遗漏了一些东西,但我真的很迷茫和困惑......
$pageInfo var_dump,可爱是因为太长了...
object(stdClass)#2 (2) {
["kind"]=>
string(7) "Listing"
["data"]=>
object(stdClass)#3 (5) {
["modhash"]=>
NULL
["dist"]=>
int(1)
["children"]=>
array(1) {
[0]=>
object(stdClass)#4 (2) {
["kind"]=>
string(2) "t3"
["data"]=>
object(stdClass)#5 (108) {
["approved_at_utc"]=>
NULL
["subreddit"]=>
string(15) "funny"
["selftext"]=>
string(0) ""
["author_fullname"]=>
string(8) "t2_mgufp"
["saved"]=>
bool(false)
["mod_reason_title"]=>
NULL
["gilded"]=>
int(0)
["clicked"]=>
bool(false)
["title"]=>
string(11) "test title3"
["link_flair_richtext"]=>
array(0) {
}
["subreddit_name_prefixed"]=>
string(17) "r/funny"
["hidden"]=>
bool(false)
["pwls"]=>
NULL
["link_flair_css_class"]=>
NULL
["downs"]=>
int(0)
["thumbnail_height"]=>
int(140)
["top_awarded_type"]=>
NULL
["hide_score"]=>
bool(false)
["name"]=>
string(9) "t3_hjgx8u"
--------------更新-------- -
也许我发现了......也许这不是最简单或最优雅的方式,但它似乎工作......
这个函数将对象(stdClass)转换成php可以读取的数组
function objectToArray( $object )
{
if( !is_object( $object ) && !is_array( $object ) )
{
return $object;
}
if( is_object( $object ) )
{
$object = get_object_vars( $object );
}
return array_map( 'objectToArray', $object );
}
有了这个,你可以有 name 参数来添加评论
$array_pageInfo = objectToArray($pageInfo);
$comment_name = $array_pageInfo['data']['children'][0]['data']['name'];
但现在我有最后一个大疑问。在各种测试中,我注意到授权令牌每小时都会过期,我想在我的服务器上创建一个 cronjob,但是如果令牌过期......
如何让这个东西在 cronjob 中工作?
【问题讨论】:
-
好吧,如果你的反应是不变的,那么你可以只使用一个模因作为图片,人们会为你评论。
-
请分享
var_dump($pageInfo);的结果 -
我分享了它,但我不得不剪掉它,因为它太长了......
-
对于更长的持续时间,请参阅刷新令牌。 github.com/reddit-archive/reddit/wiki/…
标签: php arrays api reddit stdclass