Facebook、Twitter、LinkedInでリンクを共有するユーザー数を取得する方法はありますか
例:一部のコンテンツの人気度を計算するためにFacebook、Twitter、LinkedInに共有されたリンクの回数。
共有を取得するには、特定のAPIを数えますか?他のオプションはありますか? APIはありますか?
私は答えを見つけました... !!!!!!
データURLここにデータを見つけることができます
Facebook http://graph.facebook.com/?ids=YOURURL
Twitter http://urls.api.Twitter.com/1/urls/count.json?url=YOURURL
Google https://clients6.google.com/rpc [see below for JSON-RPC]
注:「動的」を使用しているため、これには.NET 4.0が必要です。また、正式に廃止されたJavaScriptSerializerクラスを使用していますが、おそらく実際には削除されません。 Regexを使用してこれらの単純な値を簡単に取得することもできます。*
int GetTweets(string url) {
string jsonString = new System.Net.WebClient().DownloadString("http://urls.api.Twitter.com/1/urls/count.json?url=" + url);
var json = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize(jsonString);
int count = (int)json["count"];
return count;
}
int GetLikes(string url) {
string jsonString = new System.Net.WebClient().DownloadString("http://graph.facebook.com/?ids=" + url);
var json = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize(jsonString);
int count = json[url]["shares"];
return count;
}
int GetPlusOnes(string url) {
string googleApiUrl = "https://clients6.google.com/rpc"; //?key=AIzaSyCKSbrvQasunBoV16zDH9R33D88CeLr9gQ";
string postData = @"[{""method"":""pos.plusones.get"",""id"":""p"",""params"":{""nolog"":true,""id"":""" + url + @""",""source"":""widget"",""userId"":""@viewer"",""groupId"":""@self""},""jsonrpc"":""2.0"",""key"":""p"",""apiVersion"":""v1""}]";
System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(googleApiUrl);
request.Method = "POST";
request.ContentType = "application/json-rpc";
request.ContentLength = postData.Length;
System.IO.Stream writeStream = request.GetRequestStream();
UTF8Encoding encoding = new UTF8Encoding();
byte[] bytes = encoding.GetBytes(postData);
writeStream.Write(bytes, 0, bytes.Length);
writeStream.Close();
System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)request.GetResponse();
System.IO.Stream responseStream = response.GetResponseStream();
System.IO.StreamReader readStream = new System.IO.StreamReader(responseStream, Encoding.UTF8);
string jsonString = readStream.ReadToEnd();
readStream.Close();
responseStream.Close();
response.Close();
var json = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize(jsonString);
int count = Int32.Parse(json[0]["result"]["metadata"]["globalCounts"]["count"].ToString().Replace(".0", ""));
return count;}
更新
残念ながら、Twitterの共有数はAPI 1.1では不可能です。
参照:intgr/(number)
はシェア数であり、すべての応答はJSON
にあります
http://graph.facebook.com/?id=http://{URL}
戻り値:
{
"id": "http://{URL}",
"shares": intgr/(number)
}
http://cdn.api.Twitter.com/1/urls/count.json?url=http://{URL}
戻り値:
{
"count": intgr/(number)
"url":"http:\/\/{URL}\/"
}
count.json
をサポートしないTwitter APIのバージョン1.1。したがって、ツイート数を廃止することはできません。しかし、私は Tweet Buttons がカスタムエンドポイントを使用してこれらの数値を取得することを理解しました。
これが新しいエンドポイントです
https://cdn.syndication.Twitter.com/widgets/tweetbutton/count.json?url={URL}
Twitterがこのエンドポイントを停止し、正式にv 1.0をシャットダウンしたときに置き換えられるかどうかはわかりませんが、動作します。
http://www.linkedin.com/countserv/count/share?url=http://{URL&format=json
戻り値:
{
"count": intgr/(number),
"fCnt": "intgr/(number)",
"fCntPlusOne":"intgr/(number) + 1", // increased by one
"url":"http:\/\/{URL}"
}
参照:TwitterとlinkdInの場合、応答を取得するためにcallback
を追加する必要がありました
HTML:
<p id="facebook-count"></p>
<p id="Twitter-count"></p>
<p id="linkdin-count"></p>
JS:
$('#getJSON').click( function () {
$('#data-tab').fadeOut();
$URL = $('#urlInput').val();
// Facebook Shares Count
$.getJSON( 'http://graph.facebook.com/?id=' + $URL, function( fbdata ) {
$('#facebook-count').text( 'The URL has ' + ReplaceNumberWithCommas(fbdata.shares) + ' shares count on Facebook')
});
// Twitter Shares Count
$.getJSON( 'http://cdn.api.Twitter.com/1/urls/count.json?url=' + $URL + '&callback=?', function( twitdata ) {
$('#Twitter-count').text( 'The URL has ' + ReplaceNumberWithCommas(twitdata.count) + ' shares count on Twitter')
});
// LinkIn Shares Count
$.getJSON( 'http://www.linkedin.com/countserv/count/share?url=' + $URL + '&callback=?', function( linkdindata ) {
$('#linkdin-count').text( 'The URL has ' + ReplaceNumberWithCommas(linkdindata.count) + ' shares count on linkdIn')
});
$('#data-tab').fadeIn();
});
このJavaScriptクラスを使用すると、Facebook、Twitter、LinkedInから共有情報を取得できます。
使用例
<p>Facebook count: <span id="facebook_count"></span>.</p>
<p>Twitter count: <span id="Twitter_count"></span>.</p>
<p>LinkedIn count: <span id="linkedin_count"></span>.</p>
<script type="text/javascript">
var smStats=new SocialMediaStats('https://google.com/'); // Replace with your desired URL
smStats.facebookCount('facebook_count'); // 'facebook_count' refers to the ID of the HTML tag where the result will be placed.
smStats.twitterCount('Twitter_count');
smStats.linkedinCount('linkedin_count');
</script>
ダウンロード
https://404it.no/js/blog/SocialMediaStats.js
次のようにHTMLヘッダーに追加します。
<script type="text/javascript" src="SocialMediaStats.js"></script>
その他の例とドキュメント
これをチェックして:
//
http://www.jsfiddle.net/eXJBs
//
// URLを自分のものに変更するには、 http://www.google.com を見つけて、 http://www.yourdomain.com
そして、あなたはこのFacebookの開発者のページもチェックすることができます https://developers.facebook.com/docs/plugins/share-button/
この関数は、facebook、g-plus、linkedin、pinterestから共有カウントをフェッチします
function social_share_counts($pageurl)
{
//facebook
$fb_data = file_get_contents('http://graph.facebook.com/'.$pageurl);
$fb_json = json_decode($fb_data,TRUE);
if(count($fb_json) > 1){
$facebook_shares = $fb_json['shares'];
}
else{
$facebook_shares = 0;
}
//facebook
//google
$curl = curl_init();
curl_setopt( $curl, CURLOPT_URL, "https://clients6.google.com/rpc" );
curl_setopt( $curl, CURLOPT_POST, 1 );
curl_setopt( $curl, CURLOPT_POSTFIELDS, '[{"method":"pos.plusones.get","id":"p","params":{"nolog":true,"id":"' . $pageurl . '","source":"widget","userId":"@viewer","groupId":"@self"},"jsonrpc":"2.0","key":"p","apiVersion":"v1"}]' );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $curl, CURLOPT_HTTPHEADER, array( 'Content-type: application/json' ) );
$curl_results = curl_exec( $curl );
curl_close( $curl );
$google_json = json_decode( $curl_results, true );
$google_shares = intval( $google_json[0]['result']['metadata']['globalCounts']['count'] );
//google
//linkedin
$linkedin_data = file_get_contents('https://www.linkedin.com/countserv/count/share?format=json&url='.$pageurl);
$linkedin_json = json_decode($linkedin_data);
$linkedin_shares = $linkedin_json->count;
//linkedin
//pinterest
$pinterest_data = file_get_contents('http://api.pinterest.com/v1/urls/count.json?callback=sharecount&url='.$pageurl);
preg_match('/"count":(\d*).+$/',$pinterest_data,$match);
$pinterest_shares = $match[1];
//pinterest
return array("facebook"=>$facebook_shares,"google"=>$google_shares,"linkedin"=>$linkedin_shares,"pinterest"=>$pinterest_shares);
}
//now check->
$share_cnts = social_share_counts('https://www.facebook.com');
echo $share_cnts['facebook'];