Post a link 并在 reddit 上添加评论 php
Post a link and add a comment on reddit with php
我想创建一个 cronjob,定期将 links 发布到 reddit(imgur 上的图片)并向发布的 link 添加评论。
我找到了这样的东西https://github.com/jcleblanc/reddit-php-sdk
我创建了这个脚本,它在 reddit
上发布了 links
<?
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 );
}
有了这个,你可以有名称参数来添加评论
$array_pageInfo = objectToArray($pageInfo);
$comment_name = $array_pageInfo['data']['children'][0]['data']['name'];
但现在我还有最后一个大疑问。在各种测试中,我注意到授权令牌每小时都会过期,我想在我的服务器上创建一个 cronjob,但是如果令牌过期...
如何让这个东西在 cronjob 中工作?
最后,这几天一直在努力,我想我解决了。
这并不容易或快速,我还必须添加其他东西,比如按照建议更新令牌的小脚本和上传图片的 imgur api,因为许多 subreddits 不接受其他来源等地址等
一个由小部分组成的完整脚本就出来了,最后写起来比理解每一步如何工作要容易。
然而,一个全新的脚本出来了,独立于最初使用的 sdk,它自己完成所有事情,而且在 crontab 上似乎也做得很好。
因为我记性不好,所以我在我的博客中一步一步地解释了它,以备下次我需要它的时候,当我在那里的时候,我也把它翻译成了英文。
如果有人需要,可以在这里找到:https://www.alebalweb-blog.com/87-cronjob-that-uploads-a-photo-from-imgur-and-adds-a-comment-on-reddit.html
我想创建一个 cronjob,定期将 links 发布到 reddit(imgur 上的图片)并向发布的 link 添加评论。
我找到了这样的东西https://github.com/jcleblanc/reddit-php-sdk
我创建了这个脚本,它在 reddit
上发布了 links<?
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 );
}
有了这个,你可以有名称参数来添加评论
$array_pageInfo = objectToArray($pageInfo);
$comment_name = $array_pageInfo['data']['children'][0]['data']['name'];
但现在我还有最后一个大疑问。在各种测试中,我注意到授权令牌每小时都会过期,我想在我的服务器上创建一个 cronjob,但是如果令牌过期...
如何让这个东西在 cronjob 中工作?
最后,这几天一直在努力,我想我解决了。
这并不容易或快速,我还必须添加其他东西,比如按照建议更新令牌的小脚本和上传图片的 imgur api,因为许多 subreddits 不接受其他来源等地址等
一个由小部分组成的完整脚本就出来了,最后写起来比理解每一步如何工作要容易。
然而,一个全新的脚本出来了,独立于最初使用的 sdk,它自己完成所有事情,而且在 crontab 上似乎也做得很好。
因为我记性不好,所以我在我的博客中一步一步地解释了它,以备下次我需要它的时候,当我在那里的时候,我也把它翻译成了英文。
如果有人需要,可以在这里找到:https://www.alebalweb-blog.com/87-cronjob-that-uploads-a-photo-from-imgur-and-adds-a-comment-on-reddit.html