/** * 実行 */ public function run($woeid, $weight = 1) { $this->logger->info('--- START Crawler Trend ---'); // Trend取得 $this->logger->info('- START get Trend by twitter'); try { $trends = $this->container->get('app_service.component_twitter_rest_api_accessor')->getTrendsPlace($woeid); } catch (\Exception $e) { $this->logger->warn('- Failed get Trend by twitter'); throw $e; } $this->logger->info('- END get Trend by twitter'); // 登録 $this->logger->info('- START Regist Trend Data'); // Repository取得 $em = parent::getManager(); $rTrend = parent::getRepository('trend'); try { $em->beginTransaction(); $now = new \DateTime(); foreach ($trends as $_trend) { $trendEntity = $rTrend->getUnityTrend($_trend['name']); // 未登録 if (is_null($trendEntity)) { // 新しいレコード生成 $this->logger->info('新規レコード登録'); $trendEntity = new Trend(); $trendEntity->setContent($_trend['name']); $trendEntity->setWoeid($woeid); if (preg_match('/^#/', $trendEntity->getContent())) { $trendEntity->setType(Trend::TYPE_HASHTAG); } else { $trendEntity->setType(Trend::TYPE_KEYWORD); } } $trendEntity->incrementWeight($weight); $trendEntity->setVolume($_trend['tweet_volume']); $trendEntity->setFound($now); // 登録 $this->logger->info('登録(' . $trendEntity->getContent() . ')'); $em->save($trendEntity); $em->manyFlush(); } $em->commit(); } catch (\Exception $e) { $this->logger->warn('- FAILED Regist Trend Data'); $em->rollback(); throw $e; } $this->logger->info('- END Regist Trend Data'); $this->logger->info('--- END Crawler Trend ---'); }
/** * WoeidをTwitterから取得して登録します */ public function loadWoeid() { // Woeid取得 try { $woeids = $this->container->get('app_service.component_twitter_rest_api_accessor')->getTrendsAvailable(); } catch (\Exception $e) { $this->logger->warn('- Failed get Woeid by twitter'); throw $e; } // 登録 $em = parent::getManager(); $rWoeid = parent::getRepository('woeid'); try { $em->beginTransaction(); foreach ($woeids as $_woeid) { $woeidEntity = $rWoeid->findOneByWoeid($_woeid['woeid']); if (is_null($woeidEntity)) { $woeidEntity = new Woeid(); $woeidEntity->setWoeid($_woeid['woeid']); $woeidEntity->setName($_woeid['name']); } else { // 名前が変わってないかチェック if ($woeidEntity->getName() !== $_woeid['name']) { $woeidEntity->setName($_woeid['name']); } } // 登録 $this->logger->info(sprintf('登録(%s)', $woeidEntity->getWoeid())); $em->save($woeidEntity); $em->manyFlush(); } $em->commit(); } catch (\Exception $e) { $this->logger->warn('- FAILED Regist Woeid Data'); $em->rollback(); throw $e; } }