110-genius.pl 627 B

12345678910111213141516171819202122232425262728293031323334
  1. #
  2. ## genius.com support
  3. #
  4. use strict;
  5. use warnings;
  6. scalar {
  7. site => 'genius.com',
  8. code => sub {
  9. my ($content) = @_;
  10. if ($content =~ m{\bJSON\.parse\('(.*?)'\);}si) {
  11. my $lyrics = $1;
  12. $lyrics =~ s/\\(.)/$1/gs;
  13. $lyrics = eval {
  14. require JSON::PP;
  15. my $json = JSON::PP->new;
  16. my $hash = $json->decode($lyrics);
  17. $hash->{songPage}{lyricsData}{body}{html};
  18. };
  19. $lyrics || return;
  20. $lyrics =~ s/<.*?>//gs;
  21. return $lyrics;
  22. }
  23. return;
  24. }
  25. }