]>
git.r.bdr.sh - rbdr/lyricli.rb/blob - lib/lyricli/lyricli.rb
3 # This class has the basic logic for extracting the lyrics and controlling the
7 # Constructor, initializes `@source_manager`
9 @source_manager = SourceManager
.new
12 # Raises an InvalidLyricsError which means we did not get any valid
13 # artist/song from any of the sources
15 # @raise [Lyricli::Exceptions::InvalidLyricsError] because we found nothing
17 raise Exceptions
::InvalidLyricsError
20 # Extracts the current track, validates it and requests the lyrics from our
23 # @return [String] the found lyrics, or a string indicating none were found
24 def get_lyrics(show_title
=false)
29 rescue Exceptions
::InvalidLyricsError
30 return "No Artist/Song could be found :("
33 engine
= LyricsEngine
.new(@current_track[:artist], @current_track[:song])
36 lyrics_output
= engine
.get_lyrics
39 lyrics_title
= "#{@current_track[:artist]} - #{@current_track[:song]}"
40 lyrics_output
= "#{lyrics_title}\n\n#{lyrics_output}"
44 rescue Exceptions
::LyricsNotFoundError
45 return "Lyrics not found :("
49 # Set the `@current_track` instance variable by asking the SourceManager for
52 @current_track = @source_manager.current_track
55 # Exits with error when there is an empty field from the current track.
57 self.exit_with_error
unless @current_track
58 self.exit_with_error
if @current_track[:artist].nil? or @current_track[:artist].empty
?
59 self.exit_with_error
if @current_track[:song].nil? or @current_track[:song].empty
?