2010-10-17 3 views
1

Я работаю над проектом, который анализирует множество RSS-каналов, и я просто обнаруживаю, что Superfeedr имеет плохую документацию о том, как использовать свой API PubSubHubbub с PHP.Как использовать Superfeedr с PHP

Пожалуйста, можете ли вы дать мне хороший учебник или пример того, как его использовать для подписки на любой канал?

Спасибо,

ответ

1

API Superfeedr является фактически протоколом PubSubHubbub, так что я думаю, первый шаг будет найти хороший способ реализации PubSubHubbub. Здесь есть несколько ссылок, like this one, или this one.

4
$x=json_decode(file_get_contents("php://input")); //for recieving new data. 
+0

«php: // input» не всегда работает. Лучше использовать переменную $ HTTP_RAW_POST_DATA для чтения полезной нагрузки POST. –

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} 
    

    После успешной подписки ваши каналы должны (автоматически получать) новый rss содержание из superfeeder. Использование 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) file.something как http://yoursite.com/endpoint.php

если вы хотите добавить его PHP код (в любом php-файл). Выполните вызов curl с запросом GET, как описано в документации.

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("[email protected]","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:[email protected]/hubbub",$mypost); 
return $result; 
} 

//then simply you can call 
superfeedr_subscribe_rss("http://www.aljazeerasport.net/Services/Rss/?PostingId=201191510242078998"); 
+0

Обратите внимание, что конечная точка Superfeedr изменилась и теперь находится на https://push.superfeedr.com –

Смежные вопросы