2009年4月18日 星期六

[PHP 筆記] 發個私噗給自己

沒事發私噗給自己?

雖然 PLURK 有假期模式
但想保卡馬又沒時間噗浪
也不想造成他人的困擾
就想寫個程式
搭配 Windows xp '排定的工作'
成為定時發私噗的噗浪機器人
而這個私噗的內容只有自己可看到。

 

plurk_limit.php

 

<?
header('Content-type:text/html; charset=utf-8');
define('NICKNAME', ''); //輸入 PLURK 的 NICKNAME
define('PASSWORD', ''); //輸入 PLURK 的密碼
$user_id = getid(NICKNAME);
define('USER_ID', "$user_id");
set_time_limit(240);

// login
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, '\plurk_cookie_n.txt');
curl_setopt($ch, CURLOPT_URL, 'http://www.plurk.com/Users/login');
curl_setopt($ch, CURLOPT_POSTFIELDS, 'nick_name='.NICKNAME.'&password='.PASSWORD);
curl_exec($ch);
curl_close($ch);

//

date_default_timezone_set("Asia/Taipei");
$out = date("Y-m-d H:i:s");
echo $out;
post($out);


function post($message){
// post
$ch3 = curl_init();
curl_setopt($ch3, CURLOPT_COOKIEFILE, '\plurk_cookie_n.txt');
curl_setopt($ch3, CURLOPT_URL, 'http://www.plurk.com/TimeLine/addPlurk');
curl_setopt($ch3, CURLOPT_POSTFIELDS, 'qualifier=gives&limited_to=%5B'.USER_ID.'%5D&lang=tr_ch&uid='.USER_ID.'&no_comments=0&content='.$message);
curl_exec($ch3);
curl_close($ch3);
}


function getid($name){
$ourl= 'http://plurk.com/'.NICKNAME;
$fid = file_get_contents($ourl);
preg_match('/user_id\": (.*?)\,/s',$fid,$matches);
$u_id = $matches[1];
return($u_id);
}

?>



 



 



上面

define ('NICKNAME', '1234'); 1234 改為你 PLURK 的 NICKNAME
define ('PASSWORD','5678'); 5678 改為你 PLURK 的密碼
如果噗同樣的內容
可能會被 Plurk 的防洪機制所阻擋
所以我把它設定為報時噗
排程的方式

以 AppServ 為例


首先要讓 php 支援 cURL 模組


 


我的排程是執行
D:\AppServ\php5\php.exe D:\AppServ\www\plurk\test\plurk_limit.php

limit



切記!
每日超過 30 噗主題是會扣卡馬的
所以重複執行時間可不能設定太短喔。

 


順便打個小廣告
歡迎加入我的 機器人噗浪

.



9 則留言:

  1. 阿目~~我上版面了

    回覆刪除
  2. 謝謝你提供這麼好的程式,不過,我放在freebsd上執行好像有點問題。可以幫我看一下嗎?
    以下是錯誤訊息:
    2009-06-05 19:47:35{"plurk": {"responses_seen": 0, "qualifier": "gives", "plurk_id": 58165863, "response_count": 0, "limited_to": "|3563072|", "no_comments": 0, "is_unread": 0, "lang": "tr_ch", "content_raw": "2009-06-05 19:47:35", "user_id": 3563072, "plurk_type": 1, "id": 58165863, "content": "2009-06-05 19:47:35", "posted": new Date("Fri, 05 Jun 2009 11:48:31 GMT"), "owner_id": 3563072}, "error": null}

    回覆刪除
  3. 剛又測了一下,發現會出現這些訊息,不過,有po成功。這些訊息算正確嗎?

    回覆刪除
  4. @景泰藍
    那些訊息是 plurk server 回應的訊息
    是正常的。

    回覆刪除
  5. 問問大大 要如何 發出中文的撲呢?

    我向大大那樣做 撲出來的東西是 很奇怪的亂碼

    回覆刪除
  6. @Keniver
    噗浪只支援 utf-8
    所以php檔案要以 utf-8 存檔

    回覆刪除
  7. 您好,可否請教一下,
    怎麼自動發噗跟您的機器人一樣,
    讓所有的新聞都在同一個噗裡。

    回覆刪除
  8. to 樓上的捧油
    晚一點我會分享一個以 http://iservice.libertytimes.com.tw/liveNews/list2.php 為基礎建立的 plurk bot 範例。

    回覆刪除