ブログにソースコード貼り付けるためにこれインストールしました。
SyntaxHighlighter2
http://mohanjith.com/2009/03/syntaxhighlighter2.html
ブログにソースコード貼り付けるためにこれインストールしました。
SyntaxHighlighter2
http://mohanjith.com/2009/03/syntaxhighlighter2.html
twitterの自分の発言を定期的に削除していくbotの作り方です。略してデリったー。
twitter apiが9月から完全にベーシック認証を廃止し、oauthに完全移行したため作り直しを余儀なくされたので備忘録も含めての投稿。
oauthの概要、oauthを使うための環境作り、appの登録からconsumer keyやconsumer secretの取得などは調べればいくらでも参考サイトがでてくるので割愛。
まずは得たconsumer key, secretのペアからaccess key, tokenを取得する方法。今回はブラウザアプリではなく、クライアントアプリなのでコマンドラインから実行できるphpスクリプトを作成。
以下のスクリプトをコマンドラインから実行。URLが表示されるのでブラウザでURLにアクセス、PINコードを入手、再度スクリプトの入力受付に入力、access key, tokenの取得となります。
require_once 'HTTP/OAuth/Consumer.php';
define('CONSUMER_KEY', 'XXXXXXXXXXXXXXXXXX');
define('CONSUMER_SECRET', 'XXXXXXXXXXXXXXXXXX');
try
{
$http_request = new HTTP_Request2();
$http_request->setConfig('ssl_verify_peer', false);
$consumer_request = new HTTP_OAuth_Consumer_Request();
$consumer_request->accept($http_request);
$consumer = new HTTP_OAuth_Consumer(CONSUMER_KEY, CONSUMER_SECRET);
$consumer->accept($consumer_request);
$consumer->getRequestToken('http://twitter.com/oauth/request_token');
$url = $consumer->getAuthorizeUrl('http://twitter.com/oauth/authorize');
if (!$stdin = fopen('php://stdin', 'r'))
{
throw new Exception('stdin open failed');
}
echo 'Visit the following URL in your browser to authenticate twitter: ';
echo $url."\n";
echo 'Enter Twitter OAuth PIN: ';
$pin = trim(fgets($stdin, 64));
$consumer->getAccessToken('http://twitter.com/oauth/access_token', $pin);
echo 'access_token: '.$consumer->getToken()."\n";
echo 'access_token_secret: '.$consumer->getTokenSecret()."\n";
}
catch (Exception $e)
{
echo $e->getMessage().' in '.$e->getFile().' line '.$e->getLine()."\n";
exit(1);
}
後はbot本体のコード。かなり単純明快。
自分のTLの1ページから5ページを巡回して、存在するtweetを削除。ただし1ページ目に関しては15以上のtweetのみ削除。定期実行の間隔で発言する量にもよるけど、5ページも巡回する必要は実はなかったり。あとapiの制限を受けないように1ページ毎に60秒のsleep付き。
require_once('twitteroauth.php');
$consumer_key = "XXXXXXXXXXXXXXXXXX";
$consumer_secret = "XXXXXXXXXXXXXXXXXX";
$access_token = "XXXXXXXXXXXXXXXXXX";
$access_token_secret = "XXXXXXXXXXXXXXXXXX";
$to = new TwitterOAuth($consumer_key, $consumer_secret, $access_token, $access_token_secret);
$pagenum = 1;
while ($pagenum <= 5)
{
$results = getpage($pagenum);
$xml = new SimpleXMLElement($results);
for ($i = 0; $i < count($xml->status); $i++)
{
if ($pagenum == 1 && $i < 15)
continue;
delete_tweet($xml->status[$i]->id);
}
sleep(60);
$pagenum++;
}
function delete_tweet($id)
{
global $to;
return $to->OAuthRequest("http://twitter.com/statuses/destroy/$id.xml",
'POST', array());
}
function getpage($pagenum)
{
global $to;
return $to->OAuthRequest("http://twitter.com/statuses/user_timeline.xml?page=$pagenum",
'GET', array());
}
後はこのプログラムがサーバ上で定期的に実行されるようにcronなりatなりに登録するだけです。僕は20分毎に起動するように登録してあります。
6年ぶりぐらいに葉山いきました。
このサンダル、この後コンビニに寄った時に少し乾かそうと思って路上に置いてたらまんまと忘れたまま車だしちゃって、放置プレイしちゃいました。気づいた頃には時遅し。横浜のドンキに裸足で入ってサンダル購入しました。
意外と裸足な事に誰も気づかないという新事実発覚。しかも裸足で街歩くの気持ちいいよ。
会社が会場本部真ん前のビルという好条件。いや、実際めちゃくちゃウルサイし、上から(3Fから)たいして見れないし、で全然いい事ないんだけど。しかも交通が完全に麻痺するので開催時間帯は全然出歩く気にもならないという罠。
AKYMさんに誘われて、深川の水掛け祭りに行ってきました。今年は3年に一度の子供神輿連合。小さい神輿を子供たちがワッショイワッショイ担いでました。近隣地域から50近い神輿が集まってかなりの迫力でした。住民の水掛けっぷりも容赦なく最高でした!
Bike Porter
Copenhagen PartsのBike Porterというカゴを豆(flat1)用にTOKYO FRESHNESS MARKETで購入。
予想以上にでかかった!このアンバランスさもアリかなと。笑
デカイんで、なんかデカイ買い物しに行きたいです。でもちょっと心配なのはステムの固定具だけで取り付けられているという点です。あまり重い荷物を乗せると、テコの原理で傾きそう・・・でもあまり重い荷物を乗せるとハンドルをうまく切れなくなるのでこれで良しとします。