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