/** * Execute the job. * * @return void */ public function handle() { $instagram = new Instagram(array('apiKey' => config('instagram.id'), 'apiSecret' => config('instagram.secret'), 'apiCallback' => 'http://instagram.app')); $account = InstagramAccount::find($this->id); $accountMedia = []; $user = $instagram->getUser($account['instagram_object_id']); if ($user->meta->code == 200) { $mediaCount = $user->data->counts->media; if ($mediaCount != 0) { $media = $instagram->getUserMedia($account['instagram_object_id'], 32); while (!is_null($media)) { foreach ($media->data as $data) { if ($data->type == 'video') { continue; } $accountMedia[] = new InstagramMedia(['instagram_object_id' => $data->id, 'photo_url' => $data->link, 'photo_caption' => is_object($data->caption) ? $data->caption->text : null, 'likes_count' => $data->likes->count, 'comments_count' => $data->comments->count]); } $media = $instagram->pagination($media, 32); } } else { $account->status = InstagramAccount::GRABBER_COMPLETED; $account->save(); } } DB::transaction(function () use($account, $accountMedia) { $account->InstagramMedia()->saveMany($accountMedia); $account->status = InstagramAccount::GRABBER_COMPLETED; $account->save(); }); }
/** * Execute the job. * * @return void */ public function handle() { $instagram = new Instagram(array('apiKey' => config('instagram.id'), 'apiSecret' => config('instagram.secret'), 'apiCallback' => 'http://instagram.app')); $account = InstagramAccount::find($this->id); $account->status = InstagramAccount::GRABBER_NOT_COMPLETED; $account->save(); $accountMedia = array_combine($account->instagramMedia->lists('instagram_object_id')->toArray(), $account->instagramMedia->all()); $user = $instagram->getUser($account['instagram_object_id']); if ($user->meta->code == 200) { $mediaCount = $user->data->counts->media; if ($mediaCount != 0) { $media = $instagram->getUserMedia($account['instagram_object_id'], 32); while (!is_null($media)) { foreach ($media->data as $data) { if ($data->type == 'video') { continue; } if ($this->mode == 'WITH_ADVANCED' && isset($accountMedia[$data->id])) { $accountMedia[$data->id]->instagramMediaLike()->save(new InstagramMediaLike(['count' => $data->likes->count - $accountMedia[$data->id]->likes_count])); $comments = $instagram->getMediaComments($data->id); if (!empty($comments->data)) { foreach ($comments->data as $comment) { $accountMedia[$data->id]->instagramMediaComment()->updateOrCreate(['instagram_object_id' => $comment->id], ['instagram_object_id' => $comment->id, 'created_at' => Carbon::createFromTimestamp($comment->created_time)]); } } } if (isset($accountMedia[$data->id])) { // update $accountMedia[$data->id]->photo_caption = is_object($data->caption) ? $data->caption->text : null; $accountMedia[$data->id]->likes_count = $data->likes->count; $accountMedia[$data->id]->comments_count = $data->comments->count; } else { // insert $accountMedia[] = new InstagramMedia(['instagram_object_id' => $data->id, 'photo_url' => $data->link, 'photo_caption' => is_object($data->caption) ? $data->caption->text : null, 'likes_count' => $data->likes->count, 'comments_count' => $data->comments->count]); } } $media = $instagram->pagination($media, 32); } } else { $account->status = InstagramAccount::GRABBER_COMPLETED; $account->save(); } } DB::transaction(function () use($account, $accountMedia) { $account->InstagramMedia()->saveMany($accountMedia); $account->status = InstagramAccount::GRABBER_COMPLETED; $account->save(); }); }