root/lang/php/misc/scratch/kamikitter.php

Revision 534, 2.3 KB (checked in by rytich, 21 months ago)

お友達紹介対応

Line 
1<?php
2mb_language('Japanese');
3mb_internal_encoding('UTF-8');
4//set_time_limit(0);
5
6require_once "Services/Twitter.php";
7require_once "HTTP/Request.php";
8define("TWITTER_USER", "kamikitter");
9define("TWITTER_PASS", "********************");
10echo "kamikitter is running...\n\n";
11
12$st =& new Services_Twitter(TWITTER_USER, TWITTER_PASS);
13$st->setAppName('kamikitter');
14$st->setAppVersion('0.2');
15$st->enableJsonConvert();
16
17$friends = array();
18
19//teitter検索のfeedから24時間以内の発言にreply
20$url = "http://twitter.1x1.jp/rss/search/keyword=%E4%B9%85%E3%81%97%E3%81%B6%E3%82%8A+OR+%E3%82%BF%E3%83%A2%E3%83%AA+OR+%E3%81%84%E3%81%84%E3%81%A8%E3%82%82&lang=&text=1";
21$doc = sendRequest($url);
22$doc = preg_replace("/&/", "&amp;", $doc);
23$xml = new SimpleXMLElement($doc);
24
25foreach($xml->channel->item as $key => $val) {
26    if (strtotime($val->pubDate) > strtotime("-1 day") && preg_match("/^@(.+)\s&lt;.+&gt;$/", $val->title, $matches)) {
27        $friends[$matches[1]] = "あれ、髪切った?";
28    }
29}
30
31//APIの@kamikitterにユーザ名があればそのユーザにreplyなければ紹介してもらう
32for ($page = 1; $page < 4; $page++) {
33    $replies = $st->getReplies($page);
34    if (!is_array($replies) || count($replies) < 1) { break; }
35    foreach ($replies as $reply) {
36        if (strtotime($reply["created_at"]) < strtotime("-1 day")) { //24時間以内
37            break 2;
38        } elseif (preg_match("/^@kamikitter\s.*(@[a-z0-9_]+).*/i", $reply["text"], $matches)) { //紹介された
39            $friends[$matches[1]] = "@" . $matches[1] . " @" . $reply['user']['screen_name'] . "さんとは仲いいの? あれ、髪切った?";
40        } else { //返信された
41            $friends[$reply['user']['screen_name']] = "それじゃそろそろお友達を… @で教えてくれるかな?";
42        }
43    }
44}
45
46//発言する
47foreach ($friends as $friend => $val) {
48    $res = $st->setUpdate("@" . $friend . " " . $val);
49    echo $friend . "::" . $val . PHP_EOL;
50}
51
52
53/********************************
54** httpリクエスト関数
55*********************************/
56
57function sendRequest($url) {
58    $request = new HTTP_Request($url);
59    $response = $request->sendRequest();
60    if (PEAR::isError($response)) {
61        echo $request->getResponseCode();
62        echo "http requesr error...";
63        exit;
64    }
65    return $request->getResponseBody();
66}
67
68?>
Note: See TracBrowser for help on using the browser.