Menej Instagram (1/5)

miyaz ghayda
miyazghayda
Published in
3 min readMay 8, 2018

Menej (manage) dalam hal ini adalah:

  1. Auto Post
  2. Auto Follow
  3. Auto Like
  4. Auto Comment

pada maksimal 5 akun Instagram (IG). Jadi kita akan membuat sebuah sistem/aplikasi/program sederhana yang akan mengotomasi penggunaan IG. Kenapa maksimal 5 akun, karena itulah batasan yang diberlakukan IG untuk 1 device (handphone).

Kita akan menggunakan bahasa pemrograman sejuta ummat, PHP, yang selalu jadi bahan perundungan. By nature PHP memiliki beberapa keuntungan:

  1. Banyak programmer PHP
  2. Sewa shared hosting murah, hanya sekitar 300ribu/tahun
  3. Library yang melimpah

Khususnya mgp25/instagram-php sepanjang pengetahuan saya adalah library otomasi IG yang paling lengkap dan mudah digunakan. Sesuai dengan FAQ, library ini digunakan dengan pemanggilan melalui console, bukan melalui website. Bagusnya framework yang akan digunakan, CakePHP menyediakan fitur Console ini. Proses auto menej akan dilakukan melalui cron job.

Membuat sebuah software/program/aplikasi sesederhana apapun penuh dengan pilihan-pilihan, pilihan tech stack, pilihan alur kerja, pilihan fitur. Oleh karenanya tulisan ini memiliki wajahnya sendiri yang mungkin tidak sesuai dengan kebutuhan pembaca. Silahkan hanya menjadikan tulisan ini sebagai referensi saja, jangan jadikan sebagai satu-satunya pilihan yang ada.

Pilihan tech stack:

  1. CakePHP 3.6.2
  2. mgp25/instagram-php
  3. RDBMS menggunakan MySQL/MariaDB

Tulisan ini akan menggunakan metode quick and dirty a.k.a yang penting jalan dulu, kapan-kapan baru direfactor. Desain database (DB) akan dibuat sebelum fitur dibuat, jika dalam pembuatan fitur lainnya membutuhkan perubahan desain database maka akan dilakukan perubahan seperlunya baik pada desain database maupun kode pada fitur sebelumnya.

Perintah/command di dalam tulisan ini dituliskan langsung pada console/terminal, karena itu diasumsikan pembaca telah terbiasa menuliskan perintah pada console. Namun alternatif lain seperti melakukan klik pada mouse atau menggunakan antarmuka seperti phpMyAdmin akan digunakan jika lebih memudahkan.

Penamaan:

  1. Project: photo_socmed
  2. Database: photo_socmed
  3. Akun IG: miyazghayda
  4. Password IG: m1y4zgh41d4
  5. Akun RDBMS: miyazghayda
  6. Password RDBMS: m1y4zgh41d4

Bagian penamaan ini dapat disesuaikan dengan akun IG dan RDBMS yang digunakan.

Bagian Pertama tulisan ini akan membahas bagaimana mengotomasi pengiriman foto (Auto Post).

Login RDBMS.

$ mysql -u miyazghayda -p

Buat database bernama photo_socmed pada RDBMS.

mysql> CREATE DATABASE photo_socmed;

Instalasi CakePHP menggunakan composer. Diasumsikan telah berada pada /var/www/html/.

$ composer create-project --prefer-dist cakephp/app photo_socmed

Pindah ke folder hasil instalasi CakePHP dan pasang mgp25/instagram-php.

$ cd photo_socmed
$ composer require mgp25/instagram-php dev-master

Setelah ini, diasumsikan relative path adalah /var/www/html/photo_socmed/.

Buat file konfigurasi untuk project CakePHP.

$ cd config
$ cp app.default.php app.php

Ubah config/app di bagian salt (ini ga penting amat, tapi CakePHP bakal rewel ngingetin) dan konfigurasi DB.

'salt' => env('m1y4zgh41d4', '__m1y4zgh41d4__'),

Unduh file sql.

$ curl https://gist.githubusercontent.com/miyazghayda/73ce0b0127fb99eb4e698becd74c1d7c/raw/07427a305c094b7eb0f90ef762876d13fd00da06/photo_socmed_db.sql --output db.sql && mysql -u miyazghayda -p photo_socmed < db.sql

Tabel accounts berisi fields.

  1. id (Primary Key yang digunakan dalam sistem)
  2. pk (IG menggunakan field ini sebagai Primary Key)
  3. username (username akun IG)
  4. fullname (nama akun IG)
  5. password (password untuk masuk akun IG)
  6. principal (true untuk akun yang diotomasi sistem). Tabel account akan berisi semua akun IG, baik akun yang diotomasi sistem, akun yang difollow(s) maupun akun follower(s).
  7. active (true jika akun masih aktif)

View members akan menyalin semua informasi dari tabel accounts, contoh kasusnya, akun principal memiliki follower(s) yang informasinya tersimpan pada members.

Tabel photos berisi fields.

  1. id
  2. account_id (field ini adalah foreign key dari tabel accounts)
  3. created (akan diisi otomatis oleh CakePHP dengan waktu pembuatan row)
  4. modified (akan diisi otomatis oleh CakePHP jika terjadi perubahan pada row)
  5. uploaded (true jika telah diunggah ke IG)
  6. caption (teks/caption gambar)
  7. filetype (jenis/ekstensi file, misal jpg/png)
  8. active (true jika foto aktif/digunakan)

Relasi antar tabel akan seperti ini.

Relasi Tabel

Generate model dengan perintah.

$ bin/cake bake model all

Tambahkan akun IG yang akan dimenej.

mysql> USE photo_socmed;
mysql> INSERT INTO accounts (pk, username, fullname, password, principal) VALUES (0, 'miyazghayda', 'Miyaz Ghayda', 'm1y4zgh41d4', 1);

Tambahkan dua foto yang akan diunggah.

mysql> USE photo_socmed;
mysql> INSERT INTO photos (account_id, caption) VALUES (1, 'uji coba unggah foto pertama #otomasi');
mysql> INSERT INTO photos (account_id, caption) VALUES (1, 'uji coba upload foto lagi kedua kali #otomasi');

Salin 2 foto berformat jpg ke folder webroot/photos/ (buat folder photos jika belum ada). Rename file tersebut menjadi 1.jpg dan 2.jpg. 1(.jpg) dan 2(.jpg) merujuk pada field id pada tabel photos.

Sekarang waktunya mengetik kode sedikit panjang. Buat file src/Command/UploadCommand.php (buat folder Command jika belum ada).

Jalankan kode dengan perintah

$ bin/cake upload

Dan alakazam, foto berhasil nampang di akun IG.

Sampai jumpa di story berikutnya.

--

--