Exemplo n.º 1
0
             //Work out worst case throttle time
             if ($this_limit != 0) {
                 $throt_time = (int) (900 / $this_limit) + 1;
             } else {
                 $throt_time = 1;
             }
             $cron->set_throttle_time($throt_time, $this_op);
         }
         //End of foreach op type
     }
     //Set table flags
     $cron->clear_table_flags();
     $c1 = $cron->store_fw_fr_list('fw');
     $c2 = $cron->store_fw_fr_list('fr');
     if ($cron->get_fr_fw_issue() == 1) {
         $cron->store_cron_log(1, $cron_txts[1], '');
         $cron->set_first_pass_done(666);
     }
 } else {
     //Can't connect to this account so set flag to skip stages below
     $cron->set_first_pass_done(666);
 }
 //Log number of followers on first pass
 if ($cron->get_first_pass_done() == 0) {
     //Correct text - don't just add s to help multi language support later
     if ($c1 == 1) {
         $f_txt1 = $cron_txts[2];
     } else {
         $f_txt1 = $cron_txts[3];
     }
     if ($c2 == 1) {
Exemplo n.º 2
0
}
if (!is_connected()) {
    //internet connection seems broken
    exit;
}
$db->output_error = 1;
//Set cron status
$cron->set_cron_state('bot_tweets', 1);
$cron->set_log(1);
$ap_creds = $db->get_ap_creds();
$configs = $db->query("\n    SELECT *\n      FROM " . DB_PREFIX . "users_config\n     WHERE tweet_bot_status=1;\n");
while ($userConfig = mysql_fetch_array($configs, MYSQL_ASSOC)) {
    $cron->set_user_id($userConfig['user_id']);
    $tweetRate = $userConfig['tweeting_rate'];
    $authUserData = $db->get_user_data($userConfig['user_id']);
    $connection = new TwitterOAuth($ap_creds['consumer_key'], $ap_creds['consumer_secret'], $authUserData['oauth_token'], $authUserData['oauth_token_secret']);
    $tweetsToSend = $db->query("\n        SELECT id, tweet_content\n          FROM " . DB_PREFIX . "tweets_queue\n         WHERE datetime_tweeted IS NULL\n               AND user_id='{$userConfig['user_id']}'\n         LIMIT {$tweetRate};\n    ");
    while ($tweet = mysql_fetch_array($tweetsToSend, MYSQL_ASSOC)) {
        $connection->post('statuses/update', array('status' => $tweet['tweet_content']));
        //Log result - reasons for a non 200 include duplicate tweets, too many tweets
        //posted in a period of time, etc etc.
        if ($connection->http_code == 200) {
            $cron->store_cron_log(7, $cron_txts[18] . $tweet['tweet_content'] . $cron_txts[19], '');
        } else {
            $cron->store_cron_log(7, $cron_txts[18] . $tweet['tweet_content'] . $cron_txts[20], '');
        }
        $postedDateTime = date('Y-m-d H:i:s');
        $db->query("\n            UPDATE " . DB_PREFIX . "tweets_queue\n               SET datetime_tweeted='{$postedDateTime}'\n             WHERE id={$tweet['id']};\n        ");
    }
}
$cron->set_cron_state('bot_tweets', 0);
Exemplo n.º 3
0
    if (!is_connected()) {
        //internet connection seems broken
        $cron->set_cron_state('upd_info', 0);
        exit;
    }
    $users_info = $connection->post('users/lookup', array('user_id' => implode(',', $user_ids)));
    $usersRequestsRemaining--;
    foreach ($users_info as $user_info) {
        updateUserInfo($user_info);
        unset($user_ids[array_search($user_info->id_str, $user_ids)]);
    }
    //delete users that was not found
    foreach ($user_ids as $id) {
        $db->query("DELETE FROM " . DB_PREFIX . "extracted_user_data WHERE user_id='" . $db->prep($id) . "'");
    }
    $cron->store_cron_log(5, 'Successfuly updated ' . count((array) $users_info) . ' records', '');
}
$cron->set_cron_state('upd_info', 0);
function getIds()
{
    global $db;
    return $db->query("\n        SELECT user_id\n          FROM " . DB_PREFIX . "extracted_user_data\n         WHERE datetime_updated IS NULL\n      ORDER BY datetime_created ASC LIMIT " . 100 . "\n    ");
}
function updateUserInfo($userInfo)
{
    global $db;
    $updateDateTime = date('Y-m-d H:i:s');
    $followers_count = intval($userInfo->followers_count);
    $following_count = intval($userInfo->friends_count);
    $follow_ratio = !empty($following_count) ? round(floatval($followers_count / $following_count), 4) : 0;
    $account_age_days = intval((time() - strtotime($userInfo->created_at)) / (3600 * 24));
Exemplo n.º 4
0
$configs = $db->query("\n    SELECT *\n      FROM " . DB_PREFIX . "users_config\n     WHERE tweet_bot_status=1;\n");
while ($userConfig = mysql_fetch_array($configs, MYSQL_ASSOC)) {
    $cron->set_user_id($userConfig['user_id']);
    $queryLimit = $userConfig['tweet_generation_rate'] ? $userConfig['tweet_generation_rate'] : 0;
    $queryOffset = $userConfig['tweet_generation_offset'] ? $userConfig['tweet_generation_offset'] : 0;
    $tweetsCount = 0;
    if (!empty($userConfig['tweet_template']) && !empty($userConfig['tweet_query'])) {
        $tweetsData = $db->query($userConfig['tweet_query'] . " LIMIT {$queryLimit} OFFSET {$queryOffset};");
        while ($data = mysql_fetch_array($tweetsData, MYSQL_ASSOC)) {
            $tweet_content = bind_to_template($data, $userConfig['tweet_template']);
            addTweetToQueue($tweet_content, $userConfig['user_id']);
            $tweetsCount++;
        }
    }
    $newOffset = $queryOffset + $queryLimit;
    $db->query("UPDATE " . DB_PREFIX . "users_config\n                       SET tweet_generation_offset={$newOffset}\n                     WHERE user_id='{$userConfig['user_id']}';");
    $cron->store_cron_log(6, "Generated {$tweetsCount} new tweets for user {$userConfig['user_id']}", '');
}
$cron->set_cron_state('gen_tweets', 0);
function bind_to_template($replacements, $template)
{
    $GLOBALS['replacements'] = $replacements;
    $callback = create_function('$matches', 'return $GLOBALS["replacements"][$matches[1]];');
    return preg_replace_callback('/{{(.+?)}}/', $callback, $template);
}
function addTweetToQueue($tweet_content, $user_id)
{
    global $db;
    $createDateTime = date('Y-m-d H:i:s');
    $db->query("\n        INSERT INTO " . DB_PREFIX . "tweets_queue\n        (user_id, datetime_created, tweet_content)\n        VALUES ('{$db->prep($user_id)}', '{$db->prep($createDateTime)}', '{$db->prep($tweet_content)}');\n    ");
}
Exemplo n.º 5
0
     //search by user
     $followersRequestsRemaining--;
     $followersList = $connection->get('followers/ids', array('screen_name' => $search_queue_record['search_key'], 'cursor' => $this_cursor, 'stringify_ids' => 'true', 'count' => TWITTER_API_LIST_FW));
     if (!is_object($followersList) or $connection->http_code != 200) {
         if (!is_connected()) {
             //internet connection seems broken
             $cron->set_cron_state('search', 0);
             exit;
         }
         if (in_array($connection->http_code, array(500, 502, 503, 504))) {
             $cron->set_cron_state('search', 0);
             exit;
         }
         //if Internet connection is up and Twitter servers are ok - then it probably
         // something wrong with our data. Let's skip it.
         $cron->store_cron_log(4, 'Error occured while processing ' . $search_queue_record['search_key'] . ' (http return code: ' . $connection->http_code . ') skipping..', '');
         searchRecordUpdateCursor($search_queue_record['id'], '0');
         continue;
     }
     foreach ($followersList->ids as $id) {
         createUserDataRecord($id, $search_queue_record['related_user_id'], $search_queue_record['search_key']);
     }
     $cron->store_cron_log(4, 'Successfuly extracted ' . count((array) $followersList->ids) . ' records for search_key ' . $search_queue_record['search_key'], '');
     searchRecordUpdateCursor($search_queue_record['id'], $followersList->next_cursor_str);
 } elseif ($search_type == 'search_by_keyword') {
     //search by keyword
     $tweetsRequestsRemaining--;
     if ($this_cursor > 0) {
         $content = $connection->get('search/tweets', array('q' => $search_queue_record['search_key'], 'count' => TWITTER_TWEET_SEARCH_PP, 'include_entities' => false, 'max_id' => $this_cursor));
     } else {
         $content = $connection->get('search/tweets', array('q' => $search_queue_record['search_key'], 'count' => TWITTER_TWEET_SEARCH_PP, 'include_entities' => false));
Exemplo n.º 6
0
        //Defines
        $connection = new TwitterOAuth($ap_creds['consumer_key'], $ap_creds['consumer_secret'], $q1a['oauth_token'], $q1a['oauth_token_secret']);
        $cron->set_user_id($q1a['id']);
        $cron->set_log($q1a['log_data']);
        //Time can vary between PHP and server if server timezone doesn't match PHP timezone.
        //All scripts use PHP time rather than NOW() to avoid issues.
        $current_time = date("Y-m-d H:i:s");
        //Get scheduled tweets for this user older than or equal to current time
        $q2 = $db->query("SELECT * FROM " . DB_PREFIX . "scheduled_tweets WHERE owner_id = '" . $db->prep($q1a['id']) . "' AND time_to_post != '0000-00-00 00:00:00' AND time_to_post <= '" . $db->prep($current_time) . "' ORDER BY time_to_post ASC");
        while ($q2a = $db->fetch_array($q2)) {
            //Post the tweet
            $connection->post('statuses/update', array('status' => $q2a['tweet_content']));
            //Log result - reasons for a non 200 include duplicate tweets, too many tweets
            //posted in a period of time, etc etc.
            if ($connection->http_code == 200) {
                $cron->store_cron_log(2, $cron_txts[18] . $q2a['tweet_content'] . $cron_txts[19], '');
            } else {
                $cron->store_cron_log(2, $cron_txts[18] . $q2a['tweet_content'] . $cron_txts[20], '');
            }
            //Delete the tweet
            $db->query("DELETE FROM " . DB_PREFIX . "scheduled_tweets WHERE owner_id = '" . $db->prep($q1a['id']) . "' AND id = '" . $q2a['id'] . "'");
        }
        //End of db loop
    }
    //Optimize tweet table
    $db->query("OPTIMIZE TABLE " . DB_PREFIX . "scheduled_tweets");
    //Set cron status
    $cron->set_cron_state('tweet', 0);
    echo mainFuncs::push_response(32);
    //End of run cron
}
Exemplo n.º 7
0
$db->output_error = 1;
//Set cron status
$cron->set_cron_state('robot_fw', 1);
$cron->set_log(1);
//Get credentials
$ap_creds = $db->get_ap_creds();
$configs = $db->query("\n    SELECT *\n      FROM " . DB_PREFIX . "users_config\n     WHERE follow_bot_status=1;\n");
while ($userConfig = mysql_fetch_array($configs, MYSQL_ASSOC)) {
    $counter = $userConfig['follow_rate'];
    $cron->set_user_id($userConfig['user_id']);
    $result = $db->query("\n        SELECT user_id, related_user_id, screen_name\n          FROM " . DB_PREFIX . "extracted_user_data\n         WHERE datetime_robot_follow_{$userConfig['user_id']} IS NULL\n               AND datetime_updated IS NOT NULL\n               {$userConfig['follow_rule']}\n               LIMIT {$counter}\n    ");
    $friendshipCounter = array();
    $protected_accs = 0;
    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
        if ($db->is_on_fr_list($userConfig['user_id'], $row['user_id'])) {
            $cron->store_cron_log(3, 'Already in friend list ' . $row['screen_name'] . '.', '');
            $followDateTime = date('Y-m-d H:i:s');
            $db->query("UPDATE " . DB_PREFIX . "extracted_user_data\n                           SET datetime_robot_follow_{$userConfig['user_id']} = '{$followDateTime}'\n                         WHERE user_id='" . $row['user_id'] . "'");
            continue;
        }
        $authUserData = $db->get_user_data($userConfig['user_id']);
        $connection = new TwitterOAuth($ap_creds['consumer_key'], $ap_creds['consumer_secret'], $authUserData['oauth_token'], $authUserData['oauth_token_secret']);
        $response = $connection->post('friendships/create', array('user_id' => $row['user_id']));
        if (!$connection->http_code == 200) {
            $db->query("DELETE FROM " . DB_PREFIX . "extracted_user_data WHERE user_id='" . $row['user_id'] . "'");
        } else {
            $followDateTime = date('Y-m-d H:i:s');
            $db->query("UPDATE " . DB_PREFIX . "extracted_user_data\n                           SET datetime_robot_follow_{$userConfig['user_id']} = '{$followDateTime}'\n                         WHERE user_id='" . $row['user_id'] . "'");
            if ($response->protected) {
                $protected_accs++;
            } else {