2016-06-15 4 views
1

のredditのシェア数/スコアを取得するにはどうすればよい/私たちは、私がのredditのURLの株式数を取得しようとしていたURL

http://www.reddit.com/api/info.json?url=yoururl 

方法を試してみました.I PHPを使ったスコア。

ブラウザでリンクを開くと結果が表示されます。私はこの使用してカール、

$url = 'yoururl'; 
    $reddit_url = 'http://www.reddit.com/api/info.{format}?url='.$url; 
    $format = 'json'; 
    $score = $ups = $downs = 0; 

    $content = get_url(str_replace('{format}',$format,$reddit_url)); 
    if($content) { 
     if($format == 'json') { 
      $json = json_decode($content,true); 
      foreach($json['data']['children'] as $child) { 
       $ups+= (int) $child['data']['ups']; 
       $downs+= (int) $child['data']['downs']; 
       //$score+= (int) $child['data']['score']; 
      } 
      $score = $ups - $downs; 
     } 
    } 

    echo "Ups: $ups<br />"; 
    echo "Downs: $downs<br />"; 
    echo "Score: $score<br />"; 
     function get_url($url) { 
     $ch = curl_init(); 
     curl_setopt($ch,CURLOPT_URL,$url); 
     curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
     curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,1); 
     $content = curl_exec($ch); 
     curl_close($ch); 
     return $content; 
    } 

かのfile_get_contents方法、

$json = json_decode(file_get_contents($reddit_url),true); 

をしようとしたときしかし、私は次のエラーメッセージ、だから、行政規則により

を禁じ

要求を得ました私はreddit APIを使用してスコアを得ました、UP投票、

$pageInfo = $reddit->getPageInfo($url); 

しかし、ログイン資格情報を使用する必要があり、セッションは1時間しかありません。

私はURLのredditスコアを取得するための最良の方法をPHPを使って教えてください。

ありがとうございます。

+1

- 言い換えれば、公式のAPIを使用して、 –

+0

をスクリーンスはありませんあなたは[のredditのAPI規則]をお読みください(https://github.com/reddit/reddit/wiki/API#rules)、なぜあなたが問題を抱えているかを説明し、残りのAPIドキュメンテーションにも良い読書を与えます。 –

+0

また、リンクスコアは、取得したシェアの数に関係なく、投票によって計算されます。 –

答えて

0

動作させるには、CURLOPT_USERAGENTを設定する必要があります。次のコードが動作します。

「行政規則による」
<?php 
function curlRequest($url){ 
    $curl = curl_init(); 
    $time = microtime(true); 
    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5); 
    curl_setopt($curl, CURLOPT_USERAGENT,'Mozilla/5.0 (compatible; Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13'); 
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 
    curl_setopt($curl, CURLOPT_MAXREDIRS, 10); 
    curl_setopt($curl, CURLOPT_URL, $url); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
    $data = curl_exec($curl); 
    curl_close($curl); 
    return $data; 
} 
echo curlRequest('https://www.reddit.com/api/info.json?url=http://google.com'); 
?> 
+0

ありがとうMathan .It works :) – ulman

+0

私はURLからhttp:// google.comというスコアを取得しようとしましたが、私は28点しか得ていません。 ここからポイントを取得した場合、https://www.reddit.com/buttonlite.js?i=0&url=http://google.comには128ポイントが表示されます。なぜ違うのですか? – vee

+0

@vee "https://www.reddit.com/api/info.json?url=http://google.com"リクエストで最新の株式の詳細を表示し、buttonlite.jsはあなたに累積スコア。 「http://google.com」は一般的なURLであるため、より多くの情報を共有しています。 redditで古い共有情報を取得できませんでした。 –

関連する問題