web-dev-qa-db-fra.com

Facebook, Twitter, LinkedIn, nombre de liens de partage

Existe-t-il un moyen de faire en sorte que plusieurs utilisateurs partagent des liens sur Facebook, Twitter, LinkedIn?

exemple: combien de fois un lien a été partagé sur Facebook, Twitter, LinkedIn pour calculer la popularité de certains contenus.

comment obtenir des parts compter mon api particulier? Existe-t-il une autre option?

22
Sajith

J'ai trouvé la réponse ... !!!!!!!

URL de données C’est ici que vous pouvez trouver les données

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]

Remarque : Comme j'utilise «dynamique», cela nécessite .NET 4.0. Aussi, je suis en utilisant la classe JavaScriptSerializer qui est officiellement dépréciée, mais ne sera probablement pas réellement supprimé. Vous pouvez aussi facilement utiliser Regex pour obtenir ces valeurs simples. *

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;}
9
Sajith

Mettre à jour

Malheureusement, le nombre de partages sur Twitter est impossible avec API 1.1

Ref: intgr/(number) est le nombre d’actions et toutes les réponses sont en JSON

Facebook

http://graph.facebook.com/?id=http://{URL}

Résultats: 

{
   "id": "http://{URL}",
   "shares": intgr/(number)
}

Gazouillement

http://cdn.api.Twitter.com/1/urls/count.json?url=http://{URL}

Résultats:

{  
   "count": intgr/(number)
   "url":"http:\/\/{URL}\/"
}

mise à jour v1.1

Version 1.1 de l'API Twitter qui ne supporte pas count.json. Ainsi, il ne sera pas possible de se retirer des comptes de tweets. Cependant, j'ai découvert que (Boutons Tweet) utilise un point de terminaison personnalisé pour obtenir ces chiffres. 

Voici le nouveau point final

https://cdn.syndication.Twitter.com/widgets/tweetbutton/count.json?url={URL}

Je ne sais pas si Twitter prendra ce point final et le remplacera lors de l'arrêt officiel de la version 1.0, mais cela fonctionne.

LinkedIn

http://www.linkedin.com/countserv/count/share?url=http://{URL&format=json

Résultats: 

{
   "count": intgr/(number),
   "fCnt": "intgr/(number)",
   "fCntPlusOne":"intgr/(number) + 1", // increased by one
   "url":"http:\/\/{URL}"
}

Obtenir des partages comptent avec jQuery

Ref: pour Twitter et linkdIn j'ai dû ajouter callbackpour obtenir une réponse

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();

});

_ { Terminez Fiddle } _

METTRE À JOUR:

Un autre Fiddle (renvoie le nombre total d'actions sur les 3 ci-dessus) }

29
Adam Azad

Cette classe Javascript vous permettra de partager des informations partagées sur Facebook, Twitter et LinkedIn.

Exemple d'utilisation

<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>

Télécharger

https://404it.no/js/blog/SocialMediaStats.js

Ajoutez à l'en-tête HTML comme ceci:

<script type="text/javascript" src="SocialMediaStats.js"></script>

Plus d'exemples et de documentation

Classe Javascript pour obtenir des partages d'URL sur Facebook, Twitter et LinkedIn

1
PerKristian

vérifie ça:

//
http://www.jsfiddle.net/eXJBs
//

// pour changer l'URL, vous trouverez un http://www.google.com il suffit de l'enlever et d'ajouter votre http://www.yourdomain.com

et vous pouvez aussi consulter ces pages de développeurs sur Facebook, ce qui est très utile https://developers.facebook.com/docs/plugins/share-button/

0
geekslot

Cette fonction va chercher le nombre de partages sur 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'];
0
srv