Update Status Twitter Otomatis


Beberapa hari ini gw sibuk. Lebih tepatnya mencari kesibukan, karena gw orangnya tipikal SUMO alias Susah Move ON, so..
Gw harus mencari kesibukan agar bisa melupakan segala kepenatan yang akhir2 ini gw rasain.

Beberapa hari gw berpikir, apa yg harus gw lakuin supaya gw bisa menghasilkan sesuatu yang mungkin berguna bagi orang lain. Gw seorang engineer, kalo gw harus membuat lukisan kayaknya agak susah deh. Lalu gw putusin buat terjun ke dunia telco yang sesuai dengan bidang gw.

Dulu waktu kuliah, gw pernah di ajarin OSI layer. Karena gw anak teknik elektro, bidang gw nggak jauh2 sama layer network interface. Sampai akhirnya gw masuk ke dunia kerja dan memaksa gw untuk naik ke layer yang lebih tinggi. Layer aplikasi.

osi_layer_tcp

Twitter saat ini menjadi trend di kalangan anak muda. Menurut gw, sebuah potensi untuk bisa mendevelop aplikasi untuk situs jejaring sosial yang satu ini. Yah, walaupun gw nggak begitu suka sama twitter, nggak ada salahnya gw mencoba untuk mendalami media ini.

Kurs mata uang asing dan harga logam mulia adalah salah satu informasi yang pergerakannya fluktuatif dan dinamis setiap harinya. Sepertinya memunculkan informasi itu di situs jejaring sosial belum pernah ada yang melakukan secara terus menerus setiap harinya. Cmiiw kalo sudah pernah ada yang melakukannya ya..

Dari background itu, akhirnya gw menemukan ide untuk mendevelop aplikasi untuk update status twitter secara otomatis. Gw pengen membuat aplikasi yang secara otomatis update status harga kurs mata uang asing dan logam mulia.

Aplikasi ini secara logic ada 3 step.
1. Grab info dari situs penyedia informasi. Dalam hal ini gw ngambil dari situs http://www.klikbca.com untuk informasi kurs mata uang asing dan http://www.pegadaian.co.id untuk informasi harga emas.
2. Insert data ke database dan query data ke database untuk melihat statusnya apakah naik, turun, atau tetap.
3. Update status ke twitter.

Pertama gw create database dulu. Scriptnya sebagai berikut.

CREATE DATABASE twitter;
USE twitter;
CREATE TABLE table_price (timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP, date DATE, permass VARCHAR(5), basic_price_rp VARCHAR(100), buy_back_price_rp VARCHAR(100));

create_database

Daftarkan account twitter lw ke dev.twitter.com untuk mendapatkan parameter OAuth untuk autentikasi ke account twitter lw.Jangan lupa akses levelnya read and write biar bisa update status.
Scriptnya untuk automatic update adalah sbb.

auth

<?php
include 'Twitter.php';

// ------ autentikasi user Twitter siungengineer
$twitter = new Twitter('consumer_key', 'consumer_secret');
$twitter->setOAuthToken('access_token');
$twitter->setOAuthTokenSecret('access_token_secret');


//------------------ function grab data from other site -----------------
function bacaHTML($url){
	$data = curl_init();
	curl_setopt($data, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($data, CURLOPT_URL, $url);
	$hasil = curl_exec($data);
	curl_close($data);
	return $hasil;
}

//--------------------- function price gold -----------

function price_gold($pg1, $pg2, $mass)
{

	//------- informasi database
	$host  = "yourhost";
	$user  = "username"; // sesuai dengan username database anda
	$pass = "password"; //sesuaikan dengan password database anda
	$db    = "db_name"; //sesuaikan dengan nama database anda
	$table = "table_name"; //sesuaikan dengan nama table anda
	
	//---------------- database connection ---------------
	$connect = mysql_connect($host, $user, $pass);
	if($connect)
	{
		$select = mysql_select_db($db, $connect);
		if(!$check)
		{
		} else
		{
			echo "Database " .$db. "tidak ditemukan";
		}
	} else
		{
			echo "Koneksi database GAGAL";
		}

	//get date today and yesterday
	date_default_timezone_set('UTC+7');
	$today = date('l Y-m-d H:i:s');
	$past = date('Y-m-d',time()-86400);

	//replace unexpected character
	$pg_bsc = str_replace(array(" ","</div></td>","\r\n","\r","\n","\t","</tr>","."),"",$pg1);
	$pg_bbk = str_replace(array(" ","</div></td>","\r\n","\r","\n","\t","</tr>","."),"",$pg2);
	$sql = "insert into '$table' values (current_timestamp,now(),'$mass','$pg_bsc','$pg_bbk')";

	if (!mysql_query($sql,$connect))
		{
			die('Error: ' . mysql_error());
		}

	$sql_get = "select * from '$table' where date = '$past' and per_mass like '$mass'";
	$query = mysql_query($sql_get);
	$row = mysql_num_rows($query);

	while($pg_get=mysql_fetch_array($query))
		{
			if (intval($pg_get[3])>intval($pg_bsc))
				{
					$st = 'naik';
				} elseif ($pg_get[3]==$pg_bsc)
					{
						$st = 'tetap';
					} else
						{
							$st = 'turun';
						}

		}

	echo $today.' #infoHargaEmas '.$mass.'gr #pegadaian #'.$st.' : HargaBasic = '.number_format($pg_bsc).'; HargaBuyBack = '.number_format($pg_bbk).'<br/>';
	$st_post = $today.' #infoHargaEmas '.$mass.'gr #pegadaian #'.$st.' : HargaBasic = '.number_format($pg_bsc).'; HargaBuyBack = '.number_format($pg_bbk);
	return($st_post);
}


$kodeHTML =  bacaHTML('http://mulia.pegadaian.co.id/mulia/WidgetMulia.php');
$exp_1 = explode('<table width="185px"  border="0" id="M8_gridtable">', $kodeHTML);
$exp_2 = explode('<tr>', $exp_1[1]);

//-------------- harga emas ------------
$pg_5 = explode('<td><div align="right">', $exp_2[3]);
$pg_10 = explode('<td><div align="right">', $exp_2[4]);
$pg_25 = explode('<td><div align="right">', $exp_2[5]);
$pg_50 = explode('<td><div align="right">', $exp_2[6]);
$pg_100 = explode('<td><div align="right">', $exp_2[7]);
$pg_250 = explode('<td><div align="right">', $exp_2[8]);
$pg_1000 = explode('<td><div align="right">', $exp_2[9]);

$mass5 = '5';
$mass10 = '10';
$mass25 = '25';
$mass50 = '50';
$mass100 = '100';
$mass250 = '250';
$mass1000 = '1000';

$twitter->statusesUpdate(price_gold($pg_5[1],$pg_5[2],$mass5));
$twitter->statusesUpdate(price_gold($pg_10[1],$pg_10[2],$mass10));
$twitter->statusesUpdate(price_gold($pg_25[1],$pg_25[2],$mass25));
$twitter->statusesUpdate(price_gold($pg_50[1],$pg_50[2],$mass50));
$twitter->statusesUpdate(price_gold($pg_100[1],$pg_100[2],$mass100));
$twitter->statusesUpdate(price_gold($pg_250[1],$pg_250[2],$mass250));
$twitter->statusesUpdate(price_gold($pg_1000[1],$pg_1000[2],$mass1000));

?>

Jangan lupa download library untuk update status di sini. Jangan lupa rename file ini menjadi Twitter.php

Kita deploy script ini ke server kita. Misalkan gw taruh script index.php di atas dan library Twitter.php ke directory /var/www/twitter/

dir_twit

Lalu jalankan dengan scheduler setiap waktu yang kita inginkan. Untuk script ini, gw desain untuk dijalan sehari sekali. Misalkan gw setting setiap jam 9 pagi.

cron_daily

Done. Sekarang tinggal nunggu, setiap hari twitter akan terupdate secara otomatis.
Untuk yang kurs BCA, silakan improvisasi ya.

Gw ucapin terima kasih buat twitter, pegadaian yang telah memberikan informasi. Semoga informasi ini bermanfaat buat kita semua. Selamat berinvestasi.

with love🙂
rangga

This entry was posted in Ilmiah, Tutorial. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s