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

Membangun Dengan 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

Indonesian (Bahasa Indonesia) translation by Muhammad Gufron (you can also view the original English article)

Final product image
What You'll Be Creating

Pada bulan April, investor dan pendiri Netscape, Marc Andreessen mulai memperluas batas-batas 140 karakter alami Twitter dengan menerbitkan pemikirannya dalam urutan tweet, yang beberapa orang telah menjuluki bunyi tweet storms (pengusaha Yvo Schaap mengkompilasi ini di situs webnya).

Tidak butuh waktu lama sebelum BuzzFeed (pemula listel yang harus dihentikan) bangkit melawan praktik ini: Mengapa Twitter Tweetstorm ™ Trend Terbaru Harus Dihentikan. Secara pribadi, saya mungkin untuk apa pun BuzzFeed melawan.

Beberapa layanan muncul untuk memudahkan manusia seperti diri kita sendiri untuk mempublikasikan tweet storms, tetapi mereka tampaknya agak tidak dapat diandalkan dan tidak konsisten. Saya memutuskan untuk membuat fitur sendiri dan menurut saya ada manfaat dalam melakukan ini dengan aplikasi Anda sendiri.

Dalam tutorial ini, saya akan memandu Anda melalui membangun fitur tweet storm Anda sendiri menggunakan Twitter API. Ini adalah kelanjutan dari seri tutorial Twitter API di Tuts +; Anda dapat menemukan link ke semua dari mereka pada halaman author saya.

Persyaratan Fitur Tweet Storm

Pertama, mari putuskan apa yang kita perlukan dari fitur TweetStorm kami.

  • Buat grup tweets.
  • Beri nomor secara berurutan.
  • Mempublikasikan mereka secara berurutan di Twitter.
  • Berikan halaman web publik yang memungkinkan orang untuk membacanya bersama.
  • Publikasikan tautan ke halaman ini dalam tweet terakhir.

Hasil akan terlihat seperti ini:

A five step tweet storm with a final public link

Saya berasumsi bahwa Anda sudah familiar dengan tutorial Birdcage sebelumnya dan sudah memiliki kode yang mengautentikasi akun Anda melalui OAuth dengan API Twitter.

Database Model

Birdcage menggunakan tabel Status untuk tweet. Pertama, kita akan memperluas tabel ini dengan migrasi Yii ActiveRecord untuk memasukkan bidang untuk tweet_id yang diterbitkan dan urutan numerik tweet storm.

Memperluas model database kami yang sudah ada cukup mudah dengan migrasi ActiveRecord Yii:

Ini kode migrasi:

Kami akan menggunakan tweet_ids untuk menampilkan secara umum seluruh badai tweet pada halaman web setelah publikasi. Urutan numerik akan menentukan urutan status tweet dalam badai kita.

Selanjutnya, kita perlu membuat tabel untuk penampung status tweet, pada dasarnya sebuah wadah untuk tweet storm. Saya akan menggunakan istilah Group, karena kami akan menggunakannya kembali untuk fitur pengelompokan lain dalam tutorial tindak lanjut, tweet berulang dari dalam grup. Kunjungi halaman author saya untuk melihat kapan keluar atau ikuti saya di Twitter @reifman.

Mari kita membuat migrasi baru untuk membuat tabel Group:

Kode di bawah ini membangun skema. Perhatikan hubungan foreign key untuk menghubungkan tweet storm ke akun Twitter tertentu:

Kami juga akan membangun tabel relasional yang disebut GroupStatus yang melacak tweet Status dalam setiap Grup:

Untuk menampilkan secara publik tweet storm di halaman web, kita sebenarnya membutuhkan tabel lain untuk menyimpan kode HTML dengan twitter_id dari metode Oembed API Twitter:

Membangun Kode

Kontroler dan Model Grup

Selanjutnya, kita akan menggunakan Yii's scaffolding kode generator, Gii untuk membangun model, controller dan CRUD. Lingkungan lokal saya, saya mengunjungi http://localhost:8888/twitter/app/gii untuk mengakses Gii. Pertama, saya membuat model:

Yii Model Generator

Kemudian, Saya pengguna generator Bootstrap CRUD:

Bootstrap Generator

Kami juga akan menggunakan Gii untuk membuat default model untuk tabel GroupStatus dan Embed. Mereka tidak perlu controller dan view.

Di navigation bar view  (/ app/protected/views/layouts/main.php), saya akan menambahkan pilihan dalam menu Compose saya ke Group Tweets:

Halaman Pengelolaan Tweets Grup terlihat seperti ini:

Manage Groups of Tweet Storms

Mengklik ikon paling kiri dalam setiap baris membuka grup untuk menambahkan tweets untuk dan pengurutan mereka.

Mengeklik tautan menambahkan tautan grup akan memunculkan formulir yang memungkinkan Anda menamai badai Tweet dan memilih akun Twitter untuknya:

Create a Group for a Tweet Storm

Kita perlu memperluas default pembuatan behaviour untuk menyelesaikan model. Saya menggunakan kembali metode Slugify saya dari Geogram untuk membuat slug mirip URL dari namanya. Tambahkan ini ke Group.php:

Berikut adalah actionCreate diubah dalam GroupController.php:

Menambahkan Tweets ke Storm

Anda kemudian menambahkan tweet status untuk storm Anda dan pilih urutan numerik yang akan muncul:

Compose a status tweet for a tweet storm

Kami menggunakan bentuk turunan dari formulir komposisi status dari Birdcage:

Berikut adalah file view _groupform.php:

Berikut adalah metode getSequence menggunakan form, dari Status.php:

Tweet status dalam grup adalah empat karakter yang lebih pendek dari 140 untuk memungkinkan penyisipan penomoran urutan.

Saat Anda menambahkan tweet status ke grup Anda, halaman Kelola Grup akan terlihat seperti ini:

Group view for the tweet storm statuses

Penyempurnaan di masa mendatang mungkin termasuk kontrol urutan naik/turun untuk item status serta beberapa penomoran otomatis saat Anda menambahkan tweet baru.

Mempublikasikan Storm

Meskipun Anda hanya dapat mempublikasikan tweets secara berurutan, sangat membantu untuk mengelola ini dalam proses latar belakang untuk ketahanan, jika ada kegagalan di tengah jalan.

Karena banyak fungsi Twitter API membutuhkan cursoring atau paging, saya sudah membangun model proses latar belakang ke dalam framework  lanjutan saya, Birdhouse. Saya akan menunjukkan dasar-dasar menambahkan penerbitan badai tweet ke aplikasi Anda.

Ketika Anda klik Publish storm, kita membuat action untuk mengelola proses ini di latar belakang:

Kemudian, tugas-tugas latar belakang cron normal mengelola tabel Action dan akan memanggil Action::model()->publishStorm:

Ini pada gilirannya menyebut model grup ini publishStormItems:

Queri ActiveRecord yang kami gunakan untuk menemukan status tweet dalam grup yang tidak dipublikasikan adalah sebagai berikut:

Query ini menggunakan scopes yang didefinisikan sebagai berikut dalam model Status:

Saat kami mengulang setiap status yang perlu di-tweet, kami menambahkan awalan untuk nomor urut misal. '1. Tweet pertama saya adalah ...':

Ketika status diposting, panggung bertambah. Penyempurnaan masa depan dapat mencakup memungkinkan tweet storm untuk diposkan ulang beberapa kali. Saat ini, kami hanya mengizinkan satu posting (Anda dipersilakan, Buzzfeed).

Jika semua tweet berhasil diposting, kami memposting tweet terakhir dengan tautan ke tweet storm:

Inilah tampilan Tweet Storm ketika dipublikasikan:

Another example of tweet storm in my stream

Melihat Storm di Web

Jadi, sementara kami dapat menampilkan Tweet Sorm secara publik di web dalam bentuk teks seperti Yvo Schaap, saya pikir akan lebih baik menggunakan embeddings Twitter yang dapat digunakan pengguna untuk berinteraksi dengan mis. follow, reply, retweet dll.

Tweet storm shown publicly on the web with OEmbed HTML

Awalnya, saya pikir saya mungkin bisa menggunakan kode HTML statis dan hanya mengganti twitter_id dalam view, tetapi Twitter lebih suka Anda membuat panggilan OEmbed dan menyimpan HTML untuk setiap tweet. Saya membuat tabel Sematan di atas untuk melakukan ini.

Jadi, pertama, mari buat rute di UrlManager milik Yii sehingga jalur aplikasi kami dapat mengalihkan ke view tweetstorms dendan slug yang URL-friendly. Di /app/protected/config/main.php, tambahkan pengalihan slug storm di bawah ini. Itu akan mengarahkan queri ke http://yourdomain/storm/my-thoughts-on-twitters-api untuk tindakan pengontrol Group Controller dengan my-thoughts-on-twitters-api sebagai parameter:

Menggunakan filter akses pengontrol Yii, mari kita membuatnya sehingga setiap pengunjung publik dapat melihat badai tetapi tindakan CRUD hanya terlihat oleh pengguna yang diautentikasi. Ubah accessRules di GroupController.php sebagai berikut:

Saat request tiba untuk http://yourdomain.com/storm/your-storm-name Anda, ia akan mengarahkan ke action pengontrol Group controller:

Metode fetchEmbeds terlihat pertama dalam database kami untuk salinan cache dan kemudian secara lahiriah Twitter API untuk mengambil HTML. Metode fetchEmbeds membangun sebuah array dari HTML tweets:

Ia menggunakan metode pengambilan model Embed:

Ini hanya menginisiasi koneksi OAuth ke Twitter jika setidaknya ada satu tweet_id yang perlu diambil, dan itu hanya satu kali untuk alasan kinerja.

Penutup

Saya harap Anda menemukan tutorial tweet storm ini berguna. Itu pasti fitur yang menyenangkan untuk dibangun. Silakan poskan koreksi, pertanyaan, atau komentar di bawah ini. Saya mencoba untuk mengikuti comment threads Tuts +. Anda juga dapat menghubungi saya di Twitter @reifman atau mengirim email kepada saya secara langsung.

Anda dapat menemukan tutorial Twitter API awal untuk Birdcage di sini, dan tautan ke semua tutorial Twitter API saya di halaman penulis Tuts + saya saat diterbitkan. Birdcage menawarkan repositori Github gratis dan open source untuk memulai dengan fitur dasar 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.