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

Erstellen mit der Twitter-API: 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

German (Deutsch) translation by Władysław Łucyszyn (you can also view the original English article)

Final product image
What You'll Be Creating

Im April erweiterte der Investor und Netscape-Gründer Marc Andreessen die natürlichen Grenzen von Twitter, indem er seine Gedanken in Sequenzen von Tweets veröffentlichte, die von einigen Tweets genannt wurden (der Unternehmer Yvo Schaap stellte diese auf seiner Website zusammen).

Es dauerte nicht lange, bis BuzzFeed (der Listicle-Upstart, der gestoppt werden muss) gegen diese Praxis antrat: Warum Twitters neuester Tweetstorm™ -Trend gestoppt werden muss. Ich persönlich bin wahrscheinlich für alles, was BuzzFeed dagegen ist.

Es gab einige Dienste, um Sterblichen wie uns die Veröffentlichung von Tweet-Stürmen zu erleichtern, aber sie wirkten etwas unzuverlässig und inkonsistent. Ich habe mich entschieden, das Feature selbst zu erstellen, und ich denke, es ist Wert, wenn Sie dies mit Ihrer eigenen App tun.

In diesem Tutorial werde ich Sie durch das Erstellen einer eigenen Tweet-Sturmfunktion mit der Twitter-API führen. Dies ist eine Fortsetzung meiner Serie von Twitter API-Tutorials zu Tuts +; Sie finden einen Link zu allen auf meiner Autorenseite.

Anforderungen an die Funktion "Tweet Storm"

Lassen Sie uns zunächst entscheiden, was wir für die Funktion TweetStorm benötigen.

  • Erstellen Sie eine Gruppe von Tweets.
  • Nummerieren Sie sie nacheinander.
  • Veröffentlichen Sie sie nacheinander bei Twitter.
  • Stellen Sie eine öffentliche Webseite bereit, auf der die Benutzer sie gemeinsam lesen können.
  • Veröffentlichen Sie den Link zu dieser Seite in einem endgültigen Tweet.

Die Ergebnisse sollten ungefähr so aussehen:

A five step tweet storm with a final public link

Ich gehe davon aus, dass Sie mit meinem früheren Birdcage-Tutorial vertraut sind und bereits über Code verfügen, der Ihr Konto über OAuth mit der Twitter-API authentifiziert.

Das Datenbankmodell

Birdcage verwendet eine Statustabelle für Tweets. Zuerst erweitern wir diese Tabelle um eine Yii ActiveRecord-Migration, um Felder für die veröffentlichte tweet_id und die numerische Folge von Tweet Storm aufzunehmen.

Das Erweitern unseres vorhandenen Datenbankmodells ist mit den ActiveRecord-Migrationen von Yii recht einfach:

Hier ist der Migrationscode:

Wir verwenden tweet_ids, um den gesamten Tweet-Sturm nach der Veröffentlichung auf einer Webseite öffentlich anzuzeigen. Die numerische Reihenfolge bestimmt die Reihenfolge der Status-Tweets in unserem Sturm.

Als Nächstes müssen wir eine Tabelle für einen Container mit Status-Tweets erstellen, im Wesentlichen einen Container für den Tweet-Sturm.  Ich werde den Begriff Group verwenden, da wir ihn für ein anderes Gruppierungsfeature in einem Folgetutorial wiederverwenden werden, und zwar Tweets aus einer Gruppe. Besuchen Sie meine Autorenseite, um herauszufinden, wann sie veröffentlicht wird, oder folgen Sie mir auf Twitter @reifman.

Erstellen Sie eine neue Migration, um die Gruppentabelle zu erstellen:

Der folgende Code erstellt das Schema. Beachten Sie die Fremdschlüsselbeziehung, um den Tweet-Sturm mit einem bestimmten Twitter-Account zu verknüpfen:

Wir erstellen auch eine relationale Tabelle mit dem Namen GroupStatus, die die Status-Tweets in jeder Gruppe verfolgt:

Um den Tweet-Sturm auf einer Webseite öffentlich anzuzeigen, benötigen wir tatsächlich eine weitere Tabelle, um den HTML-Code von twitter_id aus der Oembed-API-Methode von Twitter zwischenzuspeichern:

Code erstellen

Der Gruppencontroller und die Modelle

Als Nächstes verwenden wir den Gerüstcodegenerator von Yii, Gii, um das Modell, die Controller und die CRUD zu erstellen. In meiner lokalen Umgebung besuche ich http://localhost:8888/twitter/app/gii, um auf Gii zuzugreifen. Zuerst erstelle ich das Modell:

Yii Model Generator

Dann benutze ich den Bootstrap CRUD Generator:

Bootstrap Generator

Wir verwenden Gii auch, um Standardmodelle für die GroupStatus- und Embed-Tabellen zu erstellen. Sie brauchen keine Controller und Ansichten.

In der Navigationsleistenansicht (/app/protected/views/layouts/main.php) füge ich den Gruppen-Tweets eine Option im Menü "Erstellen" hinzu:

Die Seite Group Tweets Management sieht folgendermaßen aus:

Manage Groups of Tweet Storms

Durch Klicken auf das Symbol ganz links in jeder Zeile wird eine Gruppe zum Hinzufügen von Tweets und zum Sequenzieren dieser Gruppen geöffnet.

Wenn Sie auf den Link zum Hinzufügen eines Gruppenmenüs klicken, wird ein Formular angezeigt, in dem Sie den Tweet-Sturm benennen und einen Twitter-Account dafür auswählen können:

Create a Group for a Tweet Storm

Wir müssen das Standarderstellungsverhalten erweitern, um das Modell abzuschließen. Ich verwende meine Slugify-Methode von Geogram erneut, um aus dem Namen einen URL-ähnlichen Slug zu erstellen. Fügen Sie dies zu group.php hinzu:

Hier ist die modifizierte actionCreate in GroupController.php:

Tweets zum Sturm hinzufügen

Dann fügen Sie Status-Tweets für Ihren Sturm hinzu und wählen die numerische Reihenfolge aus, in der sie erscheinen sollen:

Compose a status tweet for a tweet storm

Wir verwenden eine abgeleitete Form der Statuserstellungsform von Birdcage:

Hier ist die Ansichtsdatei _groupform.php:

Hier ist die getSequence-Methode, die das Formular in Status.php verwendet:

Status-Tweets innerhalb von Gruppen sind vier Zeichen kürzer als 140, um das Einfügen von Sequenznummern zu ermöglichen.

Wenn Sie Ihrer Gruppe Status-Tweets hinzufügen, sieht die Seite "Gruppe verwalten" in etwa wie folgt aus:

Group view for the tweet storm statuses

Zukünftige Verbesserungen können die Steuerung der Statuselemente nach oben und unten sowie die automatische Nummerierung beim Hinzufügen neuer Tweets umfassen.

Den Sturm veröffentlichen

Sie können die Tweets zwar nur nacheinander veröffentlichen, es ist jedoch hilfreich, dies aus Gründen der Robustheit in einem Hintergrundprozess zu verwalten, falls während der Laufzeit Fehler auftreten.

Da viele Twitter-API-Funktionen Cursoring oder Paging erfordern, habe ich bereits ein Hintergrundprozessmodell in mein erweitertes Framework Birdhouse integriert. Ich zeige Ihnen die Grundlagen zum Hinzufügen von Tweet Storm Publishing zu Ihrer Anwendung.

Wenn Sie auf Sturm veröffentlichen klicken, erstellen wir eine Aktion, um diesen Prozess im Hintergrund zu verwalten:

Dann verwalten die normalen Cron-Hintergrundaufgaben die Aktionstabelle und rufen Action::model()->publishStorm auf:

Dies wiederum ruft die publishStormItems des Gruppenmodells auf:

Die ActiveRecord-Abfrage, die wir verwenden, um die Status-Tweets in einer Gruppe zu finden, die nicht veröffentlicht sind, lautet wie folgt:

Diese Abfrage verwendet Bereiche, die im Statusmodell wie folgt definiert sind:

Während wir jeden Status durchlaufen, der getwittert werden muss, fügen wir ein Präfix für die Sequenznummer hinzu, z. "1. Mein erster Tweet ist ...":

Wenn ein Status gebucht wird, wird die Stufe inkrementiert. Zukünftige Verbesserungen könnten die mehrfache erneute Veröffentlichung von Tweet-Stürmen umfassen. Derzeit erlauben wir nur ein Posting (Buzzfeed).

Wenn alle Tweets erfolgreich gepostet wurden, veröffentlichen wir einen abschließenden Tweet mit einem Link zum Tweet-Sturm:

So sieht ein Tweet Storm aus, wenn er veröffentlicht wird:

Another example of tweet storm in my stream

Anzeigen des Sturms im Web

Während wir Tweet-Stürme öffentlich im Web in Textform wie Yvo Schaap anzeigen könnten, dachte ich, es wäre besser, Twitter-Einbettungen zu verwenden, mit denen der Benutzer interagieren kann, z. folgen, antworten, retweetet et al.

Tweet storm shown publicly on the web with OEmbed HTML

Anfangs dachte ich, ich könnte statischen HTML-Code verwenden und einfach twitter_id in der Ansicht ersetzen, aber Twitter zieht es vor, dass Sie einen OEmbed-Aufruf tätigen und den HTML-Code für jeden Tweet zwischenspeichern. Ich habe die Embed-Tabelle oben erstellt, um dies zu tun.

Zuerst erstellen wir eine Route in Yiis UrlManager, damit der Pfad der App umgeleitet werden kann, um Tweetstorms anhand des URL-freundlichen Slugs anzuzeigen. Fügen Sie in /app/protected/config/main.php die Storm Slug-Umleitung unten hinzu.  Dadurch werden Abfragen an http://yourdomain/storm/my-thoughts-on-twitters-api an die Nachschlagaktion des Gruppen-Controllers mit my-thoughts-on-twitters-api als Parameter weitergeleitet:

Lassen Sie uns mit den Controller-Zugriffsfiltern von Yii jeden öffentlichen Besucher Stürme anzeigen lassen, CRUD-Aktionen sind jedoch nur für authentifizierte Benutzer sichtbar. Ändern Sie die accessRules in GroupController.php wie folgt:

Wenn eine Anforderung für http://yourdomain.com/storm/ihr-storm-name eingeht, wird sie an die Suchaktion des Gruppencontrollers weitergeleitet:

Die fetchEmbeds-Methode sucht zuerst in unserer Datenbank nach einer zwischengespeicherten Kopie und dann nach außen zur Twitter-API, um den HTML-Code abzurufen. Die fetchEmbeds-Methode erstellt ein Array von HTML-Tweets:

Es verwendet die Abrufmethode des Embed-Modells:

Sie initiiert die OAuth-Verbindung zu Twitter nur, wenn mindestens eine tweet_id abgerufen werden muss, und dies aus Performancegründen nur einmal.

Abschließend

Ich hoffe, Sie fanden dieses Tutorial zum Thema "Tweet Storm" hilfreich. Es war auf jeden Fall ein Spaß zu bauen. Bitte zögern Sie nicht, Korrekturen, Fragen oder Kommentare zu posten. Ich versuche mit den Tuts + Kommentarthreads mitzuhalten. Sie können mich auch auf Twitter @reifman erreichen oder mich direkt per E-Mail kontaktieren.

Das erste Twitter API-Tutorial für Birdcage finden Sie hier und einen Link zu allen meinen Twitter API-Tutorials auf meiner Tuts + Autorenseite, sobald diese veröffentlicht sind. Birdcage bietet ein kostenloses und offenes Github-Repository für den Einstieg in die grundlegenden Funktionen der Twitter-API.

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.