Facebook, Twitter, LinkedIn, доля ссылок
Есть ли способ получить число пользователей, разделяющих какую-либо ссылку на Facebook, Twitter, LinkedIn
Пример
: сколько раз какая-то ссылка была передана Facebook, Twitter, LinkedIn для расчета популярности некоторого контента.
как получить долю, подсчитанную моим конкретным api? есть ли другой вариант?
Есть ли какие-нибудь api?
Ответы
Ответ 1
Я нашел ответ...!!!!!!!
URL-адреса данных
Heres, где вы можете найти данные
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. Кроме того, Im
используя класс 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;}
Ответ 2
Обновление
К сожалению, подсчет доли в Twitter невозможен с API 1.1
Ссылка: intgr/(number)
- количество акций, и все ответы находятся в JSON
Facebook
http://graph.facebook.com/?id=http://{URL}
Возвращает:
{
"id": "http://{URL}",
"shares": intgr/(number)
}
Twitter
http://cdn.api.twitter.com/1/urls/count.json?url=http://{URL}
Возврат:
{
"count": intgr/(number)
"url":"http:\/\/{URL}\/"
}
v1.1 Обновление
Версия 1.1 API Twitter, которая не поддерживает count.json
. Таким образом, будет невозможно пересчитать чириканье. Тем не менее, я понял, что Tweet Buttons используют пользовательскую конечную точку для получения этих чисел.
Здесь новая конечная точка
https://cdn.syndication.twitter.com/widgets/tweetbutton/count.json?url={URL}
Я не уверен, удастся ли Twitter остановить эту конечную точку и заменить ее, когда они официально завершают работу версии 1.0, но она работает.
LinkedIn
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}"
}
Получение количества акций с помощью jQuery
Ссылка: для 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();
});
Complete Fiddle
UPDATE:
Еще один скрипт (возвращает общие доли по сравнению с приведенными выше 3)
Ответ 3
Этот класс 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>
Дополнительные примеры и документация
Класс Javascript для получения URL-адресов на Facebook, Twitter и LinkedIn
Ответ 4
проверьте это:
//
http://www.jsfiddle.net/eXJBs
//
//чтобы изменить URL-адрес на ваш, вы найдете http://www.google.com, просто снимите его и добавьте http://www.yourdomain.com
и вы также можете проверить страницы разработчиков на facebook, что очень полезно
https://developers.facebook.com/docs/plugins/share-button/
Ответ 5
Эта функция будет извлекать счетчики акций из 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'];