Skip to content

Commit

Permalink
Part Two Twitter API Check In
Browse files Browse the repository at this point in the history
  • Loading branch information
newscloud committed Mar 9, 2015
1 parent cbb0b30 commit 612925d
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 15 deletions.
5 changes: 5 additions & 0 deletions config/web.php
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,11 @@
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
[
'class' => 'yii\log\FileTarget',
'levels' => ['trace'],
'logFile' => "@runtime/logs/trace.log"
],
],
],
'db' => require(__DIR__ . '/db.php'),
Expand Down
44 changes: 30 additions & 14 deletions models/Moment.php
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,7 @@ public function searchInstagram() {
}

public function searchTwitter() {
Yii::trace('start searchTwitter '.date('y-m-d h:m '));
// Load your Twitter application keys
$settings = array(
'oauth_access_token' => \Yii::$app->params['twitter']['oauth_token'],
Expand All @@ -155,7 +156,8 @@ public function searchTwitter() {
$valid_start = $this->start_at;
// $until_date and $valid_end = // start time + duration
$valid_end = $this->start_at + ($this->duration*60);
$until_date = date('Y-m-d',$valid_end);
Yii::trace( 'Valid Range: '.$valid_start.' -> '.$valid_end);
$until_date = date('Y-m-d',$valid_end+(24*3600)); // add one day
$distance_km = $this->distance/1000; // distance in km
// Unused: &since=$since_date
// $since_date = '2015-03-05';
Expand All @@ -164,17 +166,21 @@ public function searchTwitter() {
$tweets = json_decode($twitter->setGetfield($getfield)
->buildOauth($url, $requestMethod)
->performRequest());
var_dump($tweets);
die();
if (isset($tweets->errors)) {
Yii::$app->session->setFlash('error', 'Twitter Rate Limit Reached.');
Yii::error($tweets->errors[0]->message);
return;
}
$max_id = 0;
echo 'Count Statuses: '.count($tweets->statuses).'<br>';
echo 'Max Tweet Id: '.$max_id.'<br>';
Yii::trace( 'Count Statuses: '.count($tweets->statuses));
Yii::trace( 'Max Tweet Id: '.$max_id);
foreach ($tweets->statuses as $t) {
// check if tweet in valid time range
if ($t->created_at >= $valid_start && $t->created_at <= $valid_end)
$unix_created_at = strtotime($t->created_at);
if ($unix_created_at >= $valid_start && $unix_created_at <= $valid_end)
{
// print_r($t);echo "<br><br>";
$i = new Twitter(); $i->add($this->id,$t->id_str,$t->user->id_str,$t->user->screen_name,$t->created_at,(isset($t->text)?$t->text:''));
// print_r($t);
$i = new Twitter(); $i->add($this->id,$t->id_str,$t->user->id_str,$t->user->screen_name,$unix_created_at,(isset($t->text)?$t->text:''));
}
if ($max_id ==0) {
$max_id = intval($t->id_str);
Expand All @@ -185,25 +191,35 @@ public function searchTwitter() {
// Perform all subsequent queries with addition of updated maximum_tweet_id
while ($query_count<=$limit) {
$query_count+=1;
echo 'Request #: '.$query_count.'<br>';
Yii::trace( 'Request #: '.$query_count);
// Perform subsequent query with max_id
$getfield ="?result_type=$result_type&geocode=".$this->latitude.",".$this->longitude.",".$distance_km."mi&include_entities=false&max_id=$max_id&count=$count";
$tweets = json_decode($twitter->setGetfield($getfield)
->buildOauth($url, $requestMethod)
->performRequest());
echo 'Count Statuses: '.count($tweets->statuses).'<br>';
echo 'Max Tweet Id: '.$max_id.'<br>';
if (isset($tweets->errors)) {
Yii::$app->session->setFlash('error', 'Twitter Rate Limit Reached.');
Yii::error($tweets->errors[0]->message);
return;
}
Yii::trace( 'Count Statuses: '.count($tweets->statuses));
Yii::trace( 'Max Tweet Id: '.$max_id);
foreach ($tweets->statuses as $t) {
// check if tweet in valid time range
if ($t->created_at >= $valid_start && $t->created_at <= $valid_end)
$unix_created_at = strtotime($t->created_at);
if ($unix_created_at >= $valid_start && $unix_created_at <= $valid_end)
{
$i = new Twitter(); $i->add($this->id,$t->id_str,$t->user->id_str,$t->user->screen_name,$t->created_at,(isset($t->text)?$t->text:''));
$i = new Twitter(); $i->add($this->id,$t->id_str,$t->user->id_str,$t->user->screen_name,$unix_created_at,(isset($t->text)?$t->text:''));
} else if ($t->created_at < $valid_start) {
// stop querying when earlier than valid_start
break;
return;
}
$max_id = min($max_id,intval($t->id_str))-1;
}
if (count($tweets->statuses)<($count-1)) {
// when the api has found everything, exit
break;
}
} // end while
}

Expand Down
2 changes: 1 addition & 1 deletion models/Twitter.php
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ public function add($moment_id,$tweet_id,$twitter_id,$screen_name, $tweeted_at,$
$i->tweet_id = $tweet_id;
$i->twitter_id = $twitter_id;
$i->screen_name = $screen_name;
$i->tweeted_at = strtotime($tweeted_at);
$i->tweeted_at = $tweeted_at;
$i->text = $text;
$i->save();
}
Expand Down
6 changes: 6 additions & 0 deletions views/moment/browse_twitter.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,12 @@
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="twitter-index">
<?php
if(Yii::$app->session->hasFlash('error')): ?>
<div class="alert alert-danger">
<?php echo Yii::$app->session->getFlash('error'); ?>
</div>
<?php endif; ?>

<h1><?= Html::encode($this->title) ?></h1>
<?php // echo $this->render('_search', ['model' => $searchModel]); ?>
Expand Down

0 comments on commit 612925d

Please sign in to comment.