php - 使用 php 在 reddit 上发布链接并添加评论
问题描述
我想创建一个 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 中工作?
解决方案
最后,这些天我一直在努力,我想我解决了它。
这并不容易或快速,而且我还必须添加其他内容,例如按照建议更新令牌的小脚本和上传图片的 imgur api,因为许多 subreddit 不接受其他地址,例如来源等。等等
一个由小部分组成的完整脚本出来了,最终编写它比理解每个步骤的工作原理更容易。
然而,一个全新的脚本出现了,它独立于最初使用的 sdk,它自己完成所有事情,而且它似乎在 crontab 上也做得很好。
由于我的记忆力很差,我在我的博客中一步一步地解释了它,下次我需要它的时候,我也在那里翻译成英文。
如果有人需要,你可以在这里找到它:https ://www.alebalweb-blog.com/87-cronjob-that-uploads-a-photo-from-imgur-and-adds-a-comment-on- reddit.html
推荐阅读
- javascript - django 中的表单字段不应为无,并且无法在 javascript 中读取属性“值”错误
- angular - Angular 9 jit 编译
- javascript - 如何在谷歌地图 javascript api 中使用两种不同类型的标记?
- python - Python Selenium - 更改网址日期
- swift - Swift Async - asyncDetached 在哪个线程上运行?
- python - 如何使用 jupyter notebook 从 waston studio 将数据保存在 mongoDB 中?
- antd - 如何设置英文的 SettingDrawer?蚂蚁设计专业版
- javascript - 为什么我在简单的 Next.js 路由上看不到路由属性?
- python - 如何将激活映射数组从 VGG16 保存到向量
- firebase - snapshot.data.docs.length 不适用于颤振