/** * @desc Process Lyrics wiki Songs * * @param $artistData - Artist data * @param $albumData - Fill Album data * @param $leanSongsData - songs data collected from Artist's page * @return array - Full songs data */ function processSongs($artistData, $albumData, $leanSongsData) { $songsData = []; foreach ($leanSongsData as $songData) { if ($songData['title']) { // Song has wiki title $songArticle = $this->articleFromTitle($songData['title']); if (!is_null($songArticle)) { if ($this->songScraper->isSongTraslation($songArticle)) { self::log("\t\t\tSONG IS A TRANSLATION: " . $songData['song'] . " ...SKIPPING" . PHP_EOL); continue; } // Song article exists self::log("\t\t\tSONG: " . $songData['title'] . PHP_EOL); $songData = array_merge($songData, $this->songScraper->processArticle($songArticle)); $songData = $this->songScraper->sanitizeData($songData, $this->songScraper->getDataMap()); // Add song to songs list $songsData[] = $songData; if (isset($songData['id']) && !empty($songData['lyrics'])) { $this->articlesProcessed++; // Save only songs we have as Wiki pages and have lyrics $this->solr->saveSong($artistData, $albumData, $songData); } continue; } } self::log("\t\t\tSONG NOT FOUND: " . $songData['song'] . PHP_EOL); // Add song to songs list $songsData[] = $this->songScraper->sanitizeData($songData, $this->songScraper->getDataMap()); } return $songsData; }