public function stream($userId) { $user = User::findOrFail($userId); $banners = BannerMapper::activeTwitcher($user); if (count($banners) == 0) { echo 'no banners'; die; } $faker = FakerFactory::create(); $streamDate = \Carbon\Carbon::createFromTimestamp($faker->dateTimeBetween($user->created_at)->getTimestamp()); $stream = Stream::create(['user_id' => $user->id, 'time_start' => $streamDate]); BannerMapper::bannersToStream($stream, $banners); LogMapper::log('stream_start', $stream->id); foreach ($banners as $b) { NotificationMapper::bannerStream($b, $stream); } $maxMinutes = rand(3, 30); for ($m = 0; $m < $maxMinutes; $m++) { $startTime = $streamDate->getTimestamp(); $endTime = $streamDate->addMinutes(10)->getTimestamp(); $startTime = \Carbon\Carbon::createFromTimestamp($startTime); $endTime = \Carbon\Carbon::createFromTimestamp($endTime); $streamDate = $endTime; $status = rand(0, 1); if ($status == 1) { $screenshot = $faker->imageUrl(640, 360); $viewers = rand(0, 100); $response = (object) ['stream' => (object) ['viewers' => $viewers, 'preview' => (object) ['medium' => $faker->imageUrl(640, 360)]]]; $streamTimelog = StreamTimelog::create(['stream_id' => $stream->id, 'timeslot_start' => $startTime, 'timeslot_end' => $endTime, 'viewers' => $viewers, 'status' => 'live', 'screenshot' => $screenshot, 'response' => $response]); foreach ($banners as $b) { BannerMapper::trackBanner($b, $stream, $streamTimelog); } } else { $streamTimelog = StreamTimelog::create(['stream_id' => $stream->id, 'timeslot_start' => $startTime, 'timeslot_end' => $endTime, 'viewers' => 0, 'status' => 'died', 'screenshot' => '', 'response' => (object) []]); } } $stream->time_end = $streamDate; $stream->save(); }
public function addStreams() { $twitchers = User::whereType('twitcher')->get(); $faker = $this->faker; $i = 0; foreach ($twitchers as $t) { try { $bannerTypes = $t->bannerTypes; if (count($bannerTypes) == 0) { continue; } $bannerType = $bannerTypes->random(); $banners = BannerMapper::activeTwitcher($t, $bannerType->id); if (count($banners) == 0) { continue; } $streamDate = \Carbon\Carbon::createFromTimestamp($faker->dateTimeBetween($t->created_at)->getTimestamp()); $stream = Stream::create(['user_id' => $t->id, 'time_start' => $streamDate]); BannerMapper::bannersToStream($stream, $banners); LogMapper::log('stream_start', $stream->id); foreach ($banners as $b) { NotificationMapper::bannerStream($b, $stream); } $maxMinutes = rand(3, 30); for ($m = 0; $m < $maxMinutes; $m++) { $startTime = $streamDate->getTimestamp(); $endTime = $streamDate->addMinutes(10)->getTimestamp(); $startTime = \Carbon\Carbon::createFromTimestamp($startTime); $endTime = \Carbon\Carbon::createFromTimestamp($endTime); $streamDate = $endTime; $status = rand(0, 1); if ($status == 1) { //$uploadDir = '/assets/app/upload/t/'; $screenshot = $faker->imageUrl(640, 360); //$screenshot = $uploadDir.basename($screenshot); $viewers = rand(0, 100); $response = (object) ['stream' => (object) ['viewers' => $viewers, 'preview' => (object) ['medium' => $faker->imageUrl(640, 360)]]]; $streamTimelog = StreamTimelog::create(['stream_id' => $stream->id, 'timeslot_start' => $startTime, 'timeslot_end' => $endTime, 'viewers' => $viewers, 'status' => 'live', 'screenshot' => $screenshot, 'response' => $response]); $streamTimelog->calcAmount(); foreach ($banners as $b) { BannerMapper::trackBanner($b, $stream, $streamTimelog); } } else { $streamTimelog = StreamTimelog::create(['stream_id' => $stream->id, 'timeslot_start' => $startTime, 'timeslot_end' => $endTime, 'viewers' => 0, 'status' => 'died', 'screenshot' => '', 'response' => (object) []]); } } $stream->time_end = $streamDate; $stream->save(); $i++; } catch (\Exception $e) { dd($e->getTraceAsString()); } } }
/** * @param Stream $stream * @param $response * @return StreamTimelog */ public static function trackStream(Stream $stream, $response) { $prevTrackTime = Session::get('stream_lastPing', time()); if ($response->stream != null) { $viewers = $response->stream->viewers; $screenshot = $response->stream->preview->large; if ($screenshot) { $filename = '/assets/app/upload/t/' . uniqid($stream->id . '_' . date('YmdHis')) . '.jpg'; $screenshotFile = public_path($filename); if (copy($screenshot, $screenshotFile)) { $screenshot = $filename; } else { $screenshot = ''; } } else { $screenshot = ''; } $status = 'live'; } else { $viewers = 0; $screenshot = ''; $status = 'died'; } $streamTimelog = StreamTimelog::create(['stream_id' => $stream->id, 'timeslot_start' => \Carbon\Carbon::createFromTimestamp($prevTrackTime), 'timeslot_end' => \Carbon\Carbon::now(), 'viewers' => $viewers, 'status' => $status, 'price' => $status, 'screenshot' => $screenshot, 'response' => $response]); $streamTimelog->calcAmount(); Session::set('stream_lastPing', time()); return $streamTimelog; }