/** * Define the application's command schedule. * * @param \Illuminate\Console\Scheduling\Schedule $schedule * @return void */ protected function schedule(Schedule $schedule) { /*$schedule->command('inspire') ->hourly();*/ $schedule->call(function () { $feeds = ['http://www.kijiji.ca/rss-srp-bikes/kitchener-waterloo/c644l1700212', 'http://www.kijiji.ca/rss-srp-kitchener-waterloo/l1700212?ad=offering&price-type=free']; foreach ($feeds as $feed) { \Log::info('Refreshing feeds: ' . $feed); /*$feed_key = md5($feed); \Log::info('Parsing feed' . $feed_key); if (Cache::has($feed_key)){ $feed = Cache::get($feed_key); echo "Cached<br>"; }else{ $feed = Feeds::make($feed); Cache::put($feed_key, $feed, 9); echo "NOT cached<br>"; }*/ $feed = Feeds::make($feed); $data = array('title' => $feed->get_title(), 'permalink' => $feed->get_permalink(), 'items' => $feed->get_items()); $parser = new HtmlDomParser(); foreach ($data['items'] as $item) { $tokens = explode('/', $item->get_link()); $id = end($tokens); if (!Ad::find($id)) { $price = ''; $title = $item->get_title(); $description = $item->get_description() . "<br/>=================<br/>"; $link = $item->get_link(); $html = $parser->file_get_html($link); foreach ($html->find('span[itemprop=price]') as $span) { $price = $span->plaintext; } foreach ($html->find('div[id=ImageThumbnails] img') as $img) { $src = str_replace('$_14', '$_27', $img->src); $description .= "<img src='{$src}'> <br/>"; } $ad = new Ad(); $ad->id = $id; $ad->title = $title; $ad->description = $description; $ad->price = $price; $ad->link = $link; $ad->save(); \Log::info("Added " . $id . " {$price}"); } else { #\Log::info("Item already on database " . $id); } } } })->everyFiveMinutes(); /*$schedule->call(function () { $params = ['feed' => \Crypt::encrypt('http://www.kijiji.ca/rss-srp-bikes/kitchener-waterloo/c644l1700212')]; $request = Request::create('parsefeed', 'GET', $params); \Log::info('Refreshing feeds: ' . $params['feed']); return \Route::dispatch($request)->getContent(); })->everyMinute();*/ $schedule->call(function () { \Log::info('Checking for new ads'); $ads = Ad::whereEmailed(false)->get(); foreach ($ads as $ad) { $data['ad'] = $ad; $blocked_keywords = "[scrap|removal|membership]"; if (preg_match($blocked_keywords, strtolower($ad->title)) == 0) { \Log::info('Emailing new ad: ' . $ad->title); $ret = \Mail::send(['html' => 'emails.ad'], $data, function ($message) use($data) { $message->to('*****@*****.**', 'Herbert Balagtas')->subject('Jijiki Alert: ' . $data['ad']->price . ' - ' . html_entity_decode(html_entity_decode($data['ad']->title))); $message->from('*****@*****.**', 'Jijiki Alert'); }); } else { \Log::info('Skipping spam ad: ' . $ad->title); } $ad->emailed = true; $ad->save(); } })->everyTenMinutes(); }