/** * This command pulls new messages from twitter */ public function actionPulltweets() { $this->stdout("Starting Pulltweets!\n", Console::FG_CYAN); $CurrentDate = new \DateTime('NOW'); $TwitterSettings = array('oauth_access_token' => Yii::$app->params["oauth_access_token"], 'oauth_access_token_secret' => Yii::$app->params["oauth_access_token_secret"], 'consumer_key' => Yii::$app->params["consumer_key"], 'consumer_secret' => Yii::$app->params["consumer_secret"]); $TwitterApi = new TwitterAPIExchange($TwitterSettings); $Contests = Contest::findAll(['active' => 1]); foreach ($Contests as $Contest) { if ($CurrentDate->format('Y-m-d') >= $Contest->parse_from && $CurrentDate->format('Y-m-d') <= $Contest->parse_to) { $this->stdout("Get Next Data for " . $Contest->name . "!\n", Console::FG_YELLOW); $GetData = ''; if ($Contest->next_result_query != null) { $GetData = urldecode($Contest->next_result_query) . '&count=100'; $this->stdout("Exec Query: " . $GetData . "!\n", Console::FG_YELLOW); } else { $GetData = '?q=' . $Contest->trigger . '&result_type=mixed&count=100'; $this->stdout("First Query: " . $GetData . "!\n", Console::FG_YELLOW); } // pull next results $TwitterData = $TwitterApi->setGetfield($GetData)->buildOauth($this->TwitterUrl, 'GET')->performRequest(); $jsonData = Json::decode($TwitterData, true); // only save data if we have new results from API if (sizeof($jsonData["statuses"]) > 0) { $CrawlerData = new CrawlerData(); $CrawlerData->contest_id = $Contest->id; $CrawlerData->data = $TwitterData; if ($CrawlerData->save()) { $this->stdout("Saved new Crawler Data for Contest " . $Contest->name . "!\n", Console::FG_GREEN); } else { $this->stdout("Error Saving Crawler Data!\n", Console::BOLD); $this->stdout(print_r($CrawlerData->errors) . "\n", Console::BOLD); } } $last_parse_date = new DateTime('NOW'); $Contest->last_parse = $last_parse_date->format('Y-m-d H:i:s'); if ($Contest->save()) { $this->stdout("Last parse date for Contest " . $Contest->name . " saved!\n", Console::FG_GREEN); } else { $this->stdout("Error last parse date for Contest " . $Contest->name . "!\n", Console::BOLD); $this->stdout(print_r($Contest->errors) . "\n", Console::BOLD); } } else { $this->stdout("Skipping " . $Contest->name . "!\n", Console::FG_YELLOW); } } }