Un peu de code, un peu de web, beaucoup de cadeaux - 1/3

Cet article est le premier dans la série des articles sur mon Bot Twitter qui joue et qui gagne. Il présente le projet du Bot, la façon dont j’ai abordé le projet et les résultats auxquels je suis arrivé. On y abordera Internet, la programmation, les robots, les singles dédicacés et les Community Managers.

La série complète :

Inspiration

C’est l’été, il fait chaud et la moiteur ne me donne envie que d’une seule chose : rester au frais et coder toute la journée, sans trop utiliser mon CPU. Mi-juillet, un matin, je me lève, je te bouscule, tu ne te réveilles pas, je jette un coup d’œil aux nouvelles neuves sur Internet et je tombe sur cet article :  « J’ai construit un robot twitter et j’ai gagné des concours avec » [en]. Je le lis et je trouve ça plutôt marrant comme idée :

Le Bot s’amuse à faire des recherches sur Twitter, s’abonne, RT des messages qui parlent de gagner des lots en échange de ce suivi. Il s’appuie sur des mot clefs et sur un algo pour décider si le tweet vaut la peine d’être RT ou pas… Mais il est anglophone et je me demande s’il ne serait pas possible de faire pareil en français. Pas de code source pour le Bot. Mais après tout, je pourrais probablement construire un robot qui ferait la même chose à moindre coût, et ce dans la langue de Molière !

Choix des technologies

Côté technologies, en août 2015, je fais du Rust, du Node.js, du Ruby, mais j’ai envie de changer un peu. L’écosystème Rust est encore un peu jeune côté client de l’API Twitter (je sais que ça sera la principale pièce de mon système, le reste pouvant être adapté). Et donc, je me tourne presque logiquement vers Scala :

  • il tourne sur JVM, donc c’est facile,
  • il n’a pas besoin d’IDE pour coder, vu la température extérieure, pas obligé de réchauffer la planète encore plus,
  • c’est un langage fonctionnel, rempli de petites pépites,
  • il est interopérable avec Java, donc je peux utiliser twitter4j dans mon code… Et ça, c’est cool !
  • ça fait longtemps que j’en ai pas fait (enfin, j’en fait à côté, mais dans du Play2)

Comme je sais que je vais devoir faire un tuyau de traitement de données, j’ai l’inspiration incroyable et soudaine : je vais utiliser le framework Akka et ses acteurs pour rendre ce traitement facile et léger (Play utilise les acteurs en interne pour distribuer les requêtes HTTP au code et l’inspiration n’est pas si incroyable, donc).

Je sais aussi que je pourrais ne rien stocker en local. Mais Twitter impose des quotas d’usage de son API assez bas et je dois donc cacher certaines choses en local pour économiser ces appels. J’utiliserai donc MongoDB, que je connais assez bien pour savoir que c’est trivial à utiliser en développement, voir même en production pour du code à base de bouts de ficelles.

C’est un robot, donc il doit tourner en ligne de commande et je n’aurai pas besoin d’interface graphique. Donc, hop ! Pas de framework web, et pas de souci !

Implémentation et Résultats

Le 5 août, un nouvel utilisateur arrive sur Twitter. Il s’appelle Octave Contra-T, et je crois que je tweete une première fois à la main. Ensuite, je laisserai le Bot twitter tout seul comme un grand, et donc ce compte ne fera que faire des RTs.

OctaveLe profil de mon Bot.

Au départ, une des mes approches avait été de faire croire que le robot était un être humain. Mais finalement, je n’en ai pas eu besoin pour gagner des concours. Si j’avais un peu de temps, je travaillerai bien sur quelques extensions du robot pour qu’il puisse passer pour un être humain plus facilement : en crawlant des sites de news et en twittant des infos trouvées sur l’internet, il pourrait facilement passer pour quelqu’un de relativement humain.

Le Bot tourne sur ma machine personnelle, et donc il ne tourne pas si souvent que cela. Et pourtant, dès le 14 août, je gagne une clef pour un jeu vidéo et ensuite, les choses s’enchaînent doucement. J’ai mis à jour le Bot petit à petit pour corriger quelques bugs, bannir des comptes et être plus malin dans la sélection des tweets à RT.

Huit mois plus tard, j’ai gagné quelques cadeaux, mais surtout des followers en pagaille. Sans jamais twitter de vrai statut, il a aujourd’hui 425 438 abonnés (et suit 1104 1223 comptes), soit plus que mon compte personnel ! L’expérience continue a être intéressante, même sociologiquement parlant.

La liste des cadeaux gagnés :

  • 14/08, clef pour la beta de Black Ops 3,
  • 16/08, crédit ByPass,
  • 17/08, Film dématérialisé Divergente 2,
  • 17/08, re-clef pour la beta de Black Ops 3,
  • 18/08, re-re-clef (patch du Bot pour ignorer BO3 et Steam),
  • 24/08, un single dédicacé de Megan,
  • 31/08, deux places pour « We are your Friend »,
  • 09/09, deux places pour une soirée à Paris avec Mika et The Avener,
  • 20/09, consultation de voyance gratuite.

(entre temps, je me remet à bosser et donc le Bot ne tourne plus trop)

  • 29/2/2016, 50(!) centimes sur un site de paiement en ligne

Vous voulez savoir comment j’ai fait ? Suivez moi dans le prochain article