コード例 #1
0
 /**
  * Get song lyrics from article
  *
  * @param $article
  * @return string
  */
 protected function getLyrics($article)
 {
     if (preg_match('#<lyrics>(.*?)<\\/lyrics>#s', $article->getContent(), $matches)) {
         return LyricsUtils::removeWikitextFromLyrics($matches[1]);
     }
     return '';
 }
コード例 #2
0
 /**
  * @desc Process Album article page
  *
  * @param Article $article
  * @return array
  */
 public function processArticle(Article $article)
 {
     $albumData = ['article_id' => $article->getId()];
     $albumData = array_merge($albumData, $this->getHeader($article));
     $albumData['album_lowercase'] = LyricsUtils::lowercase($albumData['Album']);
     $albumData['genres'] = $this->getGenres($article);
     if (isset($albumData['Genre']) && !in_array($albumData['Genre'], $albumData['genres'])) {
         $albumData['genres'][] = $albumData['Genre'];
     }
     return array_merge($albumData, $this->getFooter($article));
 }
コード例 #3
0
 /**
  * @desc Returns lower cased value of field
  * @param $fieldName
  * @return string
  */
 public function getLowerCaseField($fieldName)
 {
     return LyricsUtils::lowercase($this->getField($fieldName));
 }
コード例 #4
0
ファイル: LyricsUtilsTest.php プロジェクト: Tjorriemorrie/app
 /**
  * @param String $message
  * @param String $input
  * @param String $expected
  *
  * @dataProvider removeBracketsDataProvider
  */
 public function testRemoveBrackets($message, $input, $expected)
 {
     $this->assertEquals($expected, LyricsUtils::removeBrackets($input), $message);
 }
コード例 #5
0
 /**
  * @desc Extract album data from section heading
  *
  * @param string $heading - section heading
  * @return array
  */
 public function getAlbumData($heading)
 {
     //==[[Entombed:Serpent Saints The Ten Amendments (2007)|Serpent Saints - The Ten Amendments (2007)]]==
     $result = [];
     $headingArr = explode('|', trim($heading, '][= '));
     $result['title'] = false;
     if (count($headingArr) > 1) {
         $result['title'] = trim($headingArr[0]);
         $result['year'] = '';
         $heading = $headingArr[1];
     }
     if (preg_match('#(.+)\\(([\\d]+)\\)#', $heading, $matches)) {
         $result['Album'] = trim($matches[1]);
         $result['year'] = trim($matches[2]);
     } else {
         $result['Album'] = trim($heading);
     }
     $result['album_name_lc'] = LyricsUtils::lowercase($result['Album']);
     return $result;
 }
コード例 #6
0
 /**
  * @desc Gets a song from Solr index if exists
  *
  * @param LyricsApiSearchParams $searchParams
  *
  * @return null|stdClass
  */
 public function getSong(LyricsApiSearchParams $searchParams)
 {
     $query = $this->client->createSelect();
     $lowerCaseSongName = $searchParams->getLowerCaseField(LyricsApiController::PARAM_SONG);
     $queryText = 'type:%1% AND artist_name_lc:%P2% AND ( song_name_lc:%P3% OR song_name_lc:%P4% )';
     $params = [LyricsUtils::TYPE_SONG, $searchParams->getLowerCaseField(LyricsApiController::PARAM_ARTIST), $lowerCaseSongName, LyricsUtils::removeBrackets($lowerCaseSongName)];
     $query->setQuery($queryText, $params);
     $query->setFields(['artist_name', 'album_id', 'album_name', 'song_name', 'image', 'itunes', self::INDEX_FIELD_NAME_LYRICS]);
     $query->setStart(0)->setRows(1);
     $solrSong = $this->getFirstResult($this->client->select($query));
     if (is_null($solrSong)) {
         return null;
     }
     return $this->getOutputSong($solrSong);
 }