Sha256: c74985e2de225eb53b4320e5dec1ba3fcabb3db05af6b15f43434885d8b60ef6

Contents?: true

Size: 1.09 KB

Versions: 5

Compression:

Stored size: 1.09 KB

Contents

# frozen_string_literal: true

require 'aranha/parsers/source_address'
require 'eac_ruby_utils/core_ext'
require 'ultimate_lyrics/lyrics'
require 'ultimate_lyrics/parser'

module UltimateLyrics
  class ProviderSearch
    common_constructor :provider, :song_metadata

    # @return [String]
    def url
      url_fields.inject(provider.url) { |a, e| e.apply(a) }
    end

    # @return []
    def url_fields
      provider.url_fields.map { |provider_url_field| song_metadata.field(provider_url_field) }
    end

    # @return [UltimateLyrics::Lyrics]
    def lyrics
      ::UltimateLyrics::Lyrics.new(song_metadata, provider.name, parser.result)
    end

    # @return [UltimateLyrics::Parser]
    def lyrics_original_text
      ::Aranha::Parsers::SourceAddress.detect_sub(url).content.force_encoding(provider.encoding)
    rescue ::Aranha::Parsers::SourceAddress::FetchContentError
      nil
    end

    # @return [UltimateLyrics::Parser]
    def parser
      ::UltimateLyrics::Parser.new(provider, lyrics_original_text)
    end

    def to_s
      "ProviderSearch[#{provider} | #{song_metadata}]"
    end
  end
end

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
ehbrs-tools-0.28.3 vendor/ultimate_lyrics/lib/ultimate_lyrics/provider_search.rb
ehbrs-tools-0.28.2 vendor/ultimate_lyrics/lib/ultimate_lyrics/provider_search.rb
ehbrs-tools-0.28.1 vendor/ultimate_lyrics/lib/ultimate_lyrics/provider_search.rb
ultimate_lyrics-0.1.2 lib/ultimate_lyrics/provider_search.rb
ehbrs-tools-0.28.0 vendor/ultimate_lyrics/lib/ultimate_lyrics/provider_search.rb