Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Twitter API
Code

Construire avec l'API Twitter: Tweet Storms

by
Difficulty:IntermediateLength:LongLanguages:
This post is part of a series called Building With the Twitter API.
Building With the Twitter API: Using Real-Time Streams
Building With the Twitter API: Repeating Tweets From a Group

French (Français) translation by honeymmmm (you can also view the original English article)

Final product image
What You'll Be Creating

En avril, l'investisseur et fondateur de Netscape, Marc Andreessen, a commencé à élargir les limites naturelles de Twitter à 140 caractères en publiant ses pensées sous forme de séquences de tweets, que certains ont surnommés les tweet storms (l'entrepreneur Yvo Schaap les a compilées sur son site Web).

Cela n’a pas pris longtemps avant que BuzzFeed (le débutant du listicule qui doit être stoppé) ne se soit opposé à cette pratique: Pourquoi la nouvelle tendance de Tweetstorm ™ de Twitter doit-elle être stoppée? Personnellement, je suis probablement pour tout ce que BuzzFeed est contre.

Quelques services sont apparus pour aider les simples mortels comme nous à publier plus facilement des tweet storms, mais ils semblaient peu fiables et peu cohérents. J'ai décidé de créer la fonctionnalité moi-même et je pense qu'il est utile de le faire avec votre propre application.

Dans ce tutoriel, je vais vous expliquer comment créer votre propre fonctionnalité de tempête de tweet à l'aide de l'API Twitter. Ceci est la suite de ma série de tutoriels API Twitter sur Tuts +; vous pouvez trouver un lien vers chacun d'eux sur la page de mon auteur.

Fonctionnalités requises pour Tweet Storm

Premièrement, décidons de ce que nous devons accomplir avec notre fonctionnalité TweetStorm.

  • Créez un groupe de tweets.
  • Les numéroter dans l'ordre.
  • Publiez-les dans un ordre séquentiel sur Twitter.
  • Fournissez une page Web publique permettant aux gens de les lire ensemble.
  • Publiez le lien vers cette page dans un dernier tweet.

Les résultats devraient ressembler à ceci:

A five step tweet storm with a final public link

Je suppose que vous connaissez mon précédent tutoriel Birdcage et que vous avez déjà un code qui authentifie votre compte via OAuth avec l'API Twitter.

Le modèle de base de données

Birdcage utilise une table d'état pour les tweets. Tout d'abord, nous allons étendre cette table avec une migration Yii ActiveRecord afin d'inclure des champs pour la séquence numérique tweet_id et la séquence numérique tweet storm.

L'extension de notre modèle de base de données existant est assez facile avec les migrations YR ActiveRecord:

Voici le code de migration:

Nous utiliserons les tweet_ids pour afficher publiquement l'intégralité du tweet storm sur une page Web après la publication. La séquence numérique déterminera l'ordre des tweets d'état dans notre tempête.

Ensuite, nous devons créer une table pour un conteneur de tweets d’état, essentiellement un conteneur pour la tempête de tweets. Je vais utiliser le terme Groupe, car nous allons le réutiliser pour une autre fonctionnalité de regroupement dans un tutoriel de suivi, des tweets récurrents issus d'un groupe. Visitez ma page d’auteur pour savoir quand elle est sortie ou suivez-moi sur Twitter @reifman.

Créons une nouvelle migration pour créer la table Groupe:

Le code ci-dessous construit le schéma. Notez la relation de clé étrangère pour lier la tempête de tweet à un compte Twitter spécifique:

Nous allons également créer une table relationnelle appelée GroupStatus qui suit les tweets sur les statuts au sein de chaque groupe:

Pour afficher publiquement le tweet storm sur une page Web, nous avons besoin d'une autre table pour mettre en cache le code HTML par twitter_id à partir de la méthode de l'API Oembed de Twitter:

Construire le code

Le contrôleur de groupe et les modèles

Ensuite, nous utiliserons le générateur de code d’échafaudage de Yii, Gii, pour construire le modèle, les contrôleurs et CRUD. Sur mon environnement local, je visite http://localhost:8888/twitter/app/gii pour accéder à Gii. Tout d'abord, je crée le modèle:

Yii Model Generator

Ensuite, j'utilise le générateur Bootstrap CRUD:

Bootstrap Generator

Nous utiliserons également Gii pour créer des modèles par défaut pour les tables GroupStatus et Embed. Ils n'ont pas besoin de contrôleurs et de vues.

Dans la vue de la barre de navigation (/app/protected/views/layouts/main.php), je vais ajouter une option dans mon menu de composition au groupe de tweets:

La page Gestion des tweets de groupe ressemble à ceci:

Manage Groups of Tweet Storms

En cliquant sur l'icône la plus à gauche dans chaque ligne, un groupe apparaît pour ajouter des tweets et les séquencer.

En cliquant sur le lien ajouter un menu de groupe, un formulaire vous permettant de nommer le tweet storm et de choisir un compte Twitter pour y accéder apparaît:

Create a Group for a Tweet Storm

Nous devons étendre le comportement de création par défaut pour compléter le modèle. Je réutilise ma méthode Slugify de Geogram pour créer un slug ressemblant à une URL à partir du nom. Ajoutez ceci à Group.php:

Voici l'actionCreate modifié dans GroupController.php:

Ajouter des tweets à la tempête

Vous ajoutez ensuite des tweets d’état pour votre tempête et sélectionnez la séquence numérique avec laquelle ils doivent apparaître:

Compose a status tweet for a tweet storm

Nous utilisons une forme dérivée du formulaire de composition de statut de Birdcage:

Voici le fichier de vue _groupform.php:

Voici la méthode getSequence utilisée par le formulaire, à partir de Status.php:

Les tweets d'état au sein de groupes comportent quatre caractères plus courts que 140 caractères pour permettre l'insertion de la numérotation de séquence.

Lorsque vous ajoutez des tweets d’état à votre groupe, la page Gérer le groupe ressemblera à ceci:

Group view for the tweet storm statuses

Les améliorations futures pourraient inclure des commandes de séquence ascendante / descendante pour les éléments d’état ainsi que la numérotation automatique lorsque vous ajoutez de nouveaux tweets.

Publier la tempête

Bien que vous puissiez simplement publier les tweets en séquence, il est utile de gérer cela en arrière-plan pour plus de robustesse, au cas où il y aurait des problèmes en cours de route.

Étant donné que de nombreuses fonctions de l'API Twitter nécessitent des curseurs ou une pagination, j'ai déjà intégré un modèle de processus en arrière-plan dans mon framework avancé, Birdhouse. Je vais vous montrer les bases de l'ajout de la publication sur Twitter à votre application.

Lorsque vous cliquez sur Publier tempête, nous créons une action pour gérer ce processus en arrière-plan:

Ensuite, les tâches d'arrière-plan cron normales gèrent la table Action et appelleront Action::model()->publishStorm:

Cela appelle à son tour la méthode publishStormItems du modèle de groupe:

La requête ActiveRecord que nous utilisons pour trouver les tweets d'état dans un groupe non publié est la suivante:

Cette requête utilise des étendues définies comme suit dans le modèle Status:

Lorsque nous parcourons chaque statut devant être tweeté, nous ajoutons un préfixe pour le numéro de séquence, par exemple. "1. Mon premier tweet est ...":

Lorsqu'un statut est publié, l'étape est incrémentée. Les améliorations futures pourraient inclure la possibilité de republier les tempêtes de tweet plusieurs fois. Actuellement, nous n'autorisons qu'une seule publication (de rien, Buzzfeed).

Si tous les tweets ont été postés avec succès, nous publions un dernier tweet avec un lien vers le tweet storm:

Voici à quoi ressemble un Tweet Storm lorsqu'il est publié:

Another example of tweet storm in my stream

Voir la tempête sur le Web

Ainsi, bien que nous puissions afficher publiquement les tempêtes de tweet sur le Web sous forme de texte, comme Yvo Schaap, j’ai pensé qu’il serait préférable d’utiliser des images incorporées sur Twitter avec lesquelles l’utilisateur peut interagir, par exemple. suivez, répondez, retweet et al.

Tweet storm shown publicly on the web with OEmbed HTML

Au départ, je pensais pouvoir utiliser du code HTML statique et remplacer simplement le twitter_id dans la vue, mais Twitter préfère passer un appel OEmbed et mettre en cache le code HTML pour chaque tweet. J'ai créé la table incorporée ci-dessus pour le faire.

Alors, commençons par créer un itinéraire dans UrlManager de Yii afin que le chemin de notre application puisse être redirigé pour afficher les tweetstorms à l'aide du slug convivial pour les URL. Dans /app/protected/config/main.php, ajoutez la redirection Storm Slug ci-dessous. Cela redirigera les requêtes vers http://yourdomaine / storm/ my-thoughts-on-twitters-api vers l'action de recherche du contrôleur de groupe avec my-thoughts-on-twitters-api comme paramètre:

Grâce aux filtres d'accès au contrôleur de Yii, faisons en sorte que tout visiteur public puisse voir les tempêtes, mais que les actions CRUD ne soient visibles que par les utilisateurs authentifiés. Modifiez les accessRules dans GroupController.php comme suit:

Lorsqu'une demande concernant http://yourdomaine.com/storm/your-storm-name, elle est dirigée vers l'action de recherche du contrôleur de groupe:

La méthode fetchEmbeds cherche d'abord dans la base de données une copie mise en cache, puis extérieurement à l'API Twitter pour extraire le code HTML. La méthode fetchEmbeds construit un tableau de tweets HTML:

Il utilise la méthode d'extraction du modèle Embed:

La connexion OAuth à Twitter n'est initiée que si au moins un tweet_id doit être récupéré, et ce, une fois pour des raisons de performances.

En clôture

J'espère que vous avez trouvé ce tutoriel sur les tempêtes de tweet utile. C'était vraiment une fonctionnalité amusante à construire. N'hésitez pas à poster des corrections, des questions ou des commentaires ci-dessous. J'essaie de suivre le fil de discussion Tuts +. Vous pouvez également me joindre sur Twitter @reifman ou m'envoyer un courriel directement.

Vous pouvez trouver le tutoriel initial sur les API Twitter pour Birdcage ici, ainsi qu'un lien vers tous mes tutoriels sur les API Twitter sur la page Auteur Tuts + au fur et à mesure de leur publication. Birdcage propose un référentiel Github gratuit et à source ouverte pour se familiariser avec les fonctionnalités de base de l'API Twitter.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.