Fibinger Ádám
2020-07-31 7e1ea4d5fb16450ce81f9b7f39784e7a84b73f9b
src/BattlefyTeamParser.php
@@ -11,6 +11,18 @@
    */
   protected $teamData;
   /**
    * @var array
    */
   protected $parsedTeamData = [];
   /**
    * @var string[]
    */
   protected $messages = [];
   private $downloaded = 0;
   public function __construct(string $jsonContent = '')
   {
      $this->teamData = json_decode($jsonContent, true);
@@ -21,7 +33,11 @@
      }
   }
   public function getTeamData()
   /**
    * @param bool $forceDownload Ha 'true', akkor mindenképp frissíti a lokális fájlt.
    * @return array
    */
   public function getTeamData($forceDownload = false)
   {
      $csapatok = [];
      $warning = [];
@@ -51,35 +67,46 @@
      }
      $table = [];
      foreach ($csapatok as &$csapat)
      {
         $teamFolderName = 'workdir/' . FileHelper::normalizeString($csapat['name']);
         $teamFolderName = self::getWorkDir() . '/' . FileHelper::normalizeString($csapat['name']);
         if (!file_exists($teamFolderName))
         {
            mkdir($teamFolderName, 0777, true);
         }
         // https://r6.tracker.network/profile/pc/Fiber.I
         foreach ($csapat['players'] as $playerName)
         {
            $playerFileName = $teamFolderName . '/' . FileHelper::normalizeString($playerName) . '.html';
            if (!file_exists($playerFileName))
            if ($forceDownload || !file_exists($playerFileName))
            {
               $trackerUrl = 'https://r6.tracker.network/profile/pc/' . $playerName;
               echo "Downloading: $trackerUrl => $playerFileName" . PHP_EOL;
               $this->messages[] = "Downloading: $trackerUrl => $playerFileName";
               if (!FileHelper::downloadFiles($trackerUrl, $playerFileName))
               {
                  echo "Cannot get: $trackerUrl" . PHP_EOL;
                  $this->messages[] = "Cannot get: $trackerUrl";
               }
               $this->downloaded++;
               if (rand($this->downloaded, 10) > 5)
               {
                  sleep(2);
                  $this->downloaded = 0;
               }
            }
            $player = new TrackerHtmlParser($playerFileName);
            $playerData = $player->getPlayerData($playerName);
            if ($playerData['valid'] == false) {
               unlink($playerFileName);
            }
            $csapat['playerData'][$playerName] = $playerData;
@@ -92,7 +119,36 @@
         }
      }
      $this->parsedTeamData = $csapat;
      return $table;
   }
   /**
    * @return array
    */
   public function getParsedTeamData(): array
   {
      return $this->parsedTeamData;
   }
   /**
    * @return string[]
    */
   public function getMessages(): array
   {
      return $this->messages;
   }
   public static function getWorkDir(\DateTime $date = null)
   {
      if ($date === null)
      {
         $date = new \DateTime();
      }
      $yearWeek = $date->format("Y-W");
      return 'workdir/' . $yearWeek;
   }
}