Accueil » Blog » Semi-automatiser la publication des statuts sur différents réseaux sociaux
Logo de plusieurs réseaux sociaux : Twitter, Identi.ca, Facebook, Posterous etc...

Semi-automatiser la publication des statuts sur différents réseaux sociaux

publié le 20 novembre dans Média sociaux - 0 commentaire

Question pour tous les pros de l’automatisation de tâches de référencement :
Comment semi-automatiser la mise à jour des statuts sur plusieurs sites de réseaux sociaux ?

Après quelques recherches sur Google j’ai trouvé, HelloTxt. Mon seul problème avec ce site c’est qu’il demande de saisir comptes et mots de passe directement dans leur interface et n’utilise pas le protocole oAuth !

Vous donner accès à tous mes comptes de réseaux sociaux ? Même si vous êtes honnêtes, je ne pense pas non !

N’étant pas un génie en PHP, je suis reparti en chasse d’un script simple me permettant de faire la même chose sur mon propre serveur, ou en local. J’ai trouvé la class PHP suivante :

<?php
/*
  * Twitter.class.php - update the status of a twitter user
  * Author: Felix Oghina
  */
class Twitter {
    
  private $auth = false;
  private $debug = false;
  public  $error = false;
  
  function __construct($user, $pass, $debug=false) {
  // Store an auth key for the HTTP Authorization: header
  $this->auth = base64_encode($user . ':' . $pass);
  $this->debug = $debug;
  }
  
  function update($new_status) {
  if (strlen($new_status) > 140) {
  $this->error = "Status too long: {$new_status}.";
  return false;
  }
  $fp = @fsockopen('twitter.com', 80, $errno, $errstr);
  if (!$fp) {
  $this->error = "Socket error #{$errno}: {$errstr}";
  return false;
  }
  $post_data = "status=" . urlencode($new_status);
  $to_send  = "POST /statuses/update.xml HTTP/1.1\r\n";
  $to_send .= "Host: twitter.com\r\n";
  $to_send .= "Content-Length: " . strlen($post_data) . "\r\n";
  $to_send .= "Authorization: Basic {$this->auth}\r\n\r\n";
  $to_send .= $post_data . "\r\n\r\n";
  $bytes = fwrite($fp, $to_send);
  if ($bytes === false) {
  $this->error = "Socket error: Error sending data.";
  return false;
  }
  elseif ($bytes < strlen($to_send)) {
  $this->error = "Socket error: Could not send all data.";
  return false;
  }
  if ($this->debug) echo "Sent:\n{$to_send}\n\n";
  $response = '';
  while (!feof($fp)) {
  $buf = fread($fp, 1024);
  if ($buf === false) {
  $this->error = "Socket error: Error reading data.";
  return false;
  }
  $response .= $buf;
  }
  if ($this->debug) echo "Received:\n{$response}";
  $was_error = preg_match(
  "#" .
  preg_quote("<error>") .
  "(.+)" .
  preg_quote("</error>") .
  "#i",
  $response, $matches);
  if ($was_error) {
  $this->error = "Twitter error: {$matches[1]}";
  return false;
  }
  list($first_line) = explode("\r\n", $response);
  if ($first_line != "HTTP/1.1 200 OK") {
  $this->error = "Request error: {$first_line}";
  return false;
  }
  return true;
  }
}

Elle fonctionne à merveille sur plusieurs sites, il suffit de changer le @fsockopen, de pointer le $to_send vers l’API et d’utiliser les bonnes variables dans le $post_data pour mettre à jour votre statut sur ces réseaux sociaux.

En plaçant un formulaire comportant tous les sites de réseaux sociaux en amont de cette fonction (et en la modifiant un peu), je pourrais semi-automatiser le tout. Je choisis la semi-automatisation pour pouvoir éditer le message pour chaque site sinon je risque de me retrouver avec des profils identiques – « duplicate content » et tout ça.

C’est après cette réflexion que je me suis dit : mes amis référenceurs ont peut être une meilleure idée. Alors, je vous pose la question : bonne idée ou mauvaise ? Avez vous déjà trouvez / créez des scripts pour automatiser vos mises à jour de statuts ? Pouvez-vous les partager ?

  • Envoyer
  • Digg
  • Del.icio.us
  • Stumble Upon
  • Facebook

{ 0 commentaires… ajoutez-en un maintenant }

Laisser un commentaire