1

我正在研究一个解析大量 RSS 提要的项目,我只是发现 Superfeedr 关于如何将PubSubHubbub API 与 PHP 一起使用的文档很差。

请任何人都可以给我一个很好的教程或示例如何使用它来订阅任何提要?

谢谢,

4

4 回答 4

4
$x=json_decode(file_get_contents("php://input")); //for recieving new data.
于 2012-11-24T20:08:40.180 回答
1

Superfeedr 的 API 实际上是 PubSubHubbub 协议,所以我想第一步是找到实现 PubSubHubbub 的好方法。这里有几个链接,比如这个,或者这个

于 2010-10-17T09:12:56.197 回答
1

我以前在那里。结论如下: 1. 在您的服务器上创建一个 PHP 文件并将其命名为 endpoint.php,因此您的文件的 url 应该类似于http://yoursite.com/endpoint.php

  1. 您应该在 superfeedr.com 创建一个帐户,它应该为您提供用户/通行证
  2. 您的 PHP 文件应该做两件事,订阅/取消订阅提要,在这种情况下,您应该(仅)在文件中编写的所有内容都是 hub_challenge

    (if(isset($_Get["hub_challenge"])){ 
          echo $_Get["hub_challenge"];
        return;}//to ensure that it only echo the hub_challenge}
    

    成功订阅您的提要后,您应该(自动接收)来自 superfeeder 的新 rss 内容。使用 PHP 你应该收到这样的内容

    $x=json_decode(file_get_contents("php://input"));
        $x now is an array of new contents.you should do what ever you want with this array.
    --the file endpoint should be like
    if(isset($_Get["hub_challenge"])){
       echo $_Get["hub_challenge"];return;
    }else{
        $x=json_decode(file_get_contents("php://input"));
        //then loop through it or what ever you want 
    }
    

添加 rss 链接的方式非常简单,只需在屏幕右上角的帐户链接上访问 superfeedr.com,单击它,然后选择仪表板。

单击 xmpp,您将找到所有提要的列表。您还可以添加新提要。

输入 rss 链接 (http://example.com/rss.xml) 和您的回调 (endpoint.php) 文件。类似http://yoursite.com/endpoint.php

如果您想通过 PHP 代码(在任何 php 文件中)添加它。使用 GET 请求进行 curl 调用,如文档中所述。

于 2012-11-24T20:42:17.307 回答
0
  //first create file called callback.php
  //in this file write

  if(isset($_Get["hub_challenge"])){
       echo $_Get["hub_challenge"];
       return;
  }
  //which will be used to subscribe new rss feeds

  //second recieve data
  $my_array = json_decode(file_get_contents("php://input"));
  //offcource you will not be able to see that data and to test it do one of the following to test test results
  //1-mail it to your self
  mail("youremail@yahoo.com","test callback",print_r($my_array,true)); 
  //2-write it to file and make sure that file has 0777 permissions
  file_put_contents("myfile.txt", print_r($my_array,true));

 //third step if you want to manually add rss links by code not with superfeedr console.
 //after inserting rss link to your db you have to send post request to superfeedr like this
 function superfeedr_curl_post($url, array $post = NULL, array $options = array()){
$defaults = array(  
    CURLOPT_POST => 1,
    CURLOPT_HEADER => 0,
    CURLOPT_URL => $url,
    CURLOPT_FRESH_CONNECT => 1,
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_FORBID_REUSE => 1,
    CURLOPT_TIMEOUT => 4,
    CURLOPT_POSTFIELDS => http_build_query($post)
);

$ch = curl_init();
curl_setopt_array($ch, ($options + $defaults));
if( ! $result = curl_exec($ch)){
    trigger_error(curl_error($ch));
}
curl_close($ch);
return $result;
 }

 function superfeedr_subscribe_rss($rss_url){
$mypost=array();
$mypost["hub.mode"]="subscribe";
$mypost["hub.verify"]="async";
$mypost["hub.callback"]="http://yoursite.com/yourcallback-file.php";
$mypost["hub.topic"]=$rss_url;
$mypost["superfeedr.digest"]=true;

$result=superfeedr_curl_post("http://myusername:mypass@superfeedr.com/hubbub",$mypost);
return $result;
}

//then simply you can call
superfeedr_subscribe_rss("http://www.aljazeerasport.net/Services/Rss/?PostingId=201191510242078998");
于 2013-05-30T07:14:40.147 回答