Migrer les followers d’un compte Twitter vers un autre

Pas facile d’abandonner son compte avec tous ses followers, pour en prendre un nouveau, mais parfois, ca doit se faire quand même. Alors pour cela, automatisons des rappels/spams pour ceux qui n’ont pas suivi la transition.

Pour commencer, il vous faudra la libraie Twitter PHP dispo sur
https://github.com/abraham/twitteroauth

Ensuite, rendez-vous sur dev.twitter.com et créér une application pour récupérer vos identifiants (Consumer Key, Consumer Secret , Access Token et Access Token Secret).
N’oubliez pas de lu donner la permission maximum pour pouvoir écrire à vos fidèles lecteurs.

Ensuite, laissez faire le code ci-dessous.
Il va établir une liste des abonnés du compte 1, puis du compte 2, faire la différence, et commencez à envoyer des rappels à ces personnes. Une liste des personnes qui auront reçu le message est ainsi généré (send.txt) permettant de reprendre l’envoi si le script venait à être coupé.
Twitter est un peu tatillons sur le nombre d’appels autorisés, alors quelques temporisations ont étés ajoutés. Il suffit d’être patient.
Tester le quand même sur vous auparavant pour être sur d’avoir le bon message, et que ca passe bien.
Rappel: seuls vos abonnés peuvent être notifiés.


<?php //Script permettant d'envoyer un message de migration aux abonnees d un compte twitter //Restriction: vous ne pouvez ecrire qu'aux personnes abonnes a votre compte (enfin celui qui possede l'appli avec les tokens) //DOC : https://dev.twitter.com/rest/reference/get/followers/list define("consumer_key",""); define("consumer_secret",""); define("oauth_token",""); define("oauth_token_secret",""); //Nom des comptes $name1 = "COMPTE1"; //Compte avant migration $name2 = "COMPTE2"; // Comptes apres migration set_time_limit(0); require('twitteroauth/twitteroauth.php'); /* Recupere les donnees dun compte twitter */ function getTwitterData($username){ $connection = new TwitterOAuth(consumer_key, consumer_secret, oauth_token, oauth_token_secret); $user = $connection->get('https://api.twitter.com/1.1/users/show.json?screen_name='.$username);

return $user;
}

/* Recupere les abonnees dun compte twitter */
function getTwitterDataFollowers($username,$cursor = -1){
$connection = new TwitterOAuth(consumer_key, consumer_secret, oauth_token, oauth_token_secret);
$list = $connection->get('https://api.twitter.com/1.1/followers/list.json?cursor='.$cursor.'&amp;count=200&amp;screen_name='.$username);

return $list;
}

/* Envoi un message a un compte twitter */
function sendTwitterMessage($username,$msg = ""){
$connection = new TwitterOAuth(consumer_key, consumer_secret, oauth_token, oauth_token_secret);
$s = $connection->post('https://api.twitter.com/1.1/direct_messages/new.json?text='.$msg.'&amp;screen_name='.$username);

return $s;
}

//Recuperation des abonnes
for ($k= 1; $k<=2 ; $k++){ if ($k==1){ $name = $name1; }else{ $name = $name2; } $cursor = "-1"; $users = array(); set_time_limit(0); while ($cursor &lt;&gt; 0 ){ $s = getTwitterDataFollowers($name,$cursor); if (isset($s->users)){
$fp = fopen($name.".txt","a+");
foreach ($s->users as $user){
fputs($fp,$user->id_str.":".$user->screen_name."\n");
//$users[$user->id] = $user->screen_name;
}
$cursor = $s->next_cursor_str;
fclose($fp);
}else{
echo "Rate LIMIT";
sleep(60);
}
}
}


//On recupere la liste des users du compte 1
$tabUsers = array();
$sFile = file_get_contents($name1.".txt");
$tabTmp = explode("\n",$sFile);
foreach ($tabTmp as $s){
if ($s != ""){
$infos = explode(":",$s);
$tabUsers[$infos[0]] = $infos[1];
}
}

//On supprime de la liste des users ceux du compte 2
$sFile = file_get_contents($name2.".txt");
$tabTmp = explode("\n",$sFile);
foreach ($tabTmp as $s){
if ($s != ""){
$infos = explode(":",$s);
if (isset($tabUsers[$infos[0]])){
unset($tabUsers[$infos[0]]);
}
}
}
//echo var_dump($tabUsers);

$tabUsersAlreadySend = array();
if (file_exists("send.txt")){
$sFile = file_get_contents("send.txt");
$tabTmp = explode("\n",$sFile);
foreach ($tabTmp as $s){
if ($s != ""){
$tabUsersAlreadySend[$s] = $s;
}
}
}

//On supprime de la liste ceux a qui ont a deja envoyé
foreach ($tabUsersAlreadySend as $id){
if (isset($tabUsers[$id])){
unset($tabUsers[$id]);
}
}

foreach ($tabUsers as $id=&gt;$user){

$msg = "Bonjour ".$user.". Pour information, Compte1 et Compte2 ne font aujourd’hui plus qu’un, nous vous invitons désormais à suivre notre actualité sur @compte2 . Merci et à très bientôt !";
$s = sendTwitterMessage($user,$msg);
if (isset($s->error)){
//echo "NON ".var_dump($s->error);
sleep(61);
}else{
if (isset($s->errors)){
//echo "NON ".var_dump($s->errors);
sleep(61);
}else{
$fp = fopen("send.txt","a+");
fputs($fp,$id."\n");
fclose($fp);
}
}
}

?>

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.