lyrics_finder 0.0.6 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +5 -56
- data/lib/lyrics_finder.rb +22 -38
- data/lib/lyrics_finder/cli.rb +1 -2
- data/lib/lyrics_finder/dependencies.rb +2 -5
- data/lib/lyrics_finder/providers.rb +60 -21
- data/lib/lyrics_finder/song.rb +9 -19
- data/lib/lyrics_finder/version.rb +2 -2
- data/lyrics_finder.gemspec +3 -1
- data/spec/lyrics_finder/lyrics_finder_spec.rb +9 -119
- data/spec/lyrics_finder/providers/azlyrics_spec.rb +6 -4
- data/spec/lyrics_finder/providers/lyrics_mania_spec.rb +6 -4
- data/spec/lyrics_finder/providers/lyrics_wikia_spec.rb +6 -20
- data/spec/lyrics_finder/providers/song_lyrics_spec.rb +6 -4
- data/spec/lyrics_finder/providers_spec.rb +8 -4
- data/spec/spec_helper.rb +2 -5
- metadata +44 -12
- data/lib/lyrics_finder/providers/azlyrics.rb +0 -16
- data/lib/lyrics_finder/providers/lyrics_mania.rb +0 -16
- data/lib/lyrics_finder/providers/lyrics_wikia.rb +0 -16
- data/lib/lyrics_finder/providers/song_lyrics.rb +0 -16
- data/spec/support/azlyrics_sample_songs.rb +0 -47
- data/spec/support/lyrics_mania_sample_songs.rb +0 -52
- data/spec/support/song_lyrics_sample_songs.rb +0 -47
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1fd7f1561cd6aab7ec434dce2d19a19793e9d6b5
|
|
4
|
+
data.tar.gz: b9c349442db37814b8e827089eb1a8e842852ec3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 01636770bfde8f4d80a00520dde2bd392f0936f4a12c86ff40c670031199b4904a5b5b74be3a7e8df581f0e9c35fb3a354a21965d88618ad8ea577d0b30bf895
|
|
7
|
+
data.tar.gz: e07ebd64b84a8c6fa0692b350960d3ebd8d1dff124c64af08c58c3028c6c9ef13750be5cbd95fcbb6a9dd895fe95a6f4f136703a31fc131d9722f25f661aaf16
|
data/README.md
CHANGED
|
@@ -18,48 +18,21 @@ Or install it yourself as:
|
|
|
18
18
|
|
|
19
19
|
## Hello World!
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
Search passing the author and the song title as parameters to `LyricsFinder.search`:
|
|
22
22
|
|
|
23
23
|
```ruby
|
|
24
|
-
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
And search passing the author and the song title as parameters to `Lyrics::Finder#search`:
|
|
28
|
-
|
|
29
|
-
```ruby
|
|
30
|
-
finder.search 'idina menzel', 'let it go'
|
|
24
|
+
LyricsFinder.search 'idina menzel', 'let it go'
|
|
31
25
|
```
|
|
32
26
|
Which will return and array with all the verses of the song as strings, or `nil` if the song cannot be found.
|
|
33
27
|
|
|
34
|
-
### Customizing the search
|
|
35
|
-
|
|
36
|
-
You can specify which websites do you want to get the lyrics from (all by default):
|
|
37
|
-
|
|
38
|
-
```ruby
|
|
39
|
-
finder = Lyrics::Finder.new(:song_lyrics, :azlyrics)
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
You can choose among the following:
|
|
43
|
-
|
|
44
|
-
- LyricsWikia (`:lyrics_wikia`)
|
|
45
|
-
- SongLyrics (`:song_lyrics`)
|
|
46
|
-
- AZLyrics (`:azlyrics`)
|
|
47
|
-
- LyricsMania (`:lyrics_mania`)
|
|
48
|
-
|
|
49
|
-
You can see the websites you are using as lyrics providers with:
|
|
50
|
-
|
|
51
|
-
```ruby
|
|
52
|
-
Finder.selected_providers
|
|
53
|
-
```
|
|
54
|
-
|
|
55
28
|
## Example
|
|
56
29
|
|
|
57
30
|
In your ruby apps:
|
|
58
31
|
```ruby
|
|
59
32
|
require 'lyrics_finder'
|
|
60
33
|
|
|
61
|
-
|
|
62
|
-
|
|
34
|
+
@song = LyricsFinder.search 'idina menzel', 'let it go'
|
|
35
|
+
|
|
63
36
|
puts @song
|
|
64
37
|
```
|
|
65
38
|
|
|
@@ -69,34 +42,10 @@ LyricsFinder is also available as a command-line tool.
|
|
|
69
42
|
|
|
70
43
|
$ lyricsfinder search -a 'idina menzel' -t 'let it go'
|
|
71
44
|
|
|
72
|
-
## Changelog
|
|
73
|
-
|
|
74
|
-
v 0.0.4
|
|
75
|
-
|
|
76
|
-
- Added lyrics mania as a valid website to get your lyrics from.
|
|
77
|
-
|
|
78
|
-
v 0.0.3
|
|
79
|
-
|
|
80
|
-
- Wrapped everything into a `Lyrics` module.
|
|
81
|
-
|
|
82
|
-
v 0.0.2
|
|
83
|
-
|
|
84
|
-
- Changed the app interface `LyricsFinder::Fetcher` is now `Finder`.
|
|
85
|
-
- Now using [Contracts](https://github.com/egonSchiele/contracts.ruby).
|
|
86
|
-
- Simplified providers code.
|
|
87
|
-
|
|
88
|
-
v 0.0.1
|
|
89
|
-
|
|
90
|
-
- Initial release.
|
|
91
|
-
|
|
92
45
|
## Contributing
|
|
93
46
|
|
|
94
47
|
1. Fork it ( https://github.com/[my-github-username]/lyrics_finder/fork )
|
|
95
48
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
|
96
49
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
|
97
50
|
4. Push to the branch (`git push origin my-new-feature`)
|
|
98
|
-
5. Create a new Pull Request
|
|
99
|
-
|
|
100
|
-
## Credits
|
|
101
|
-
|
|
102
|
-
Inspired by [Lyricfy](https://github.com/javichito/Lyricfy).
|
|
51
|
+
5. Create a new Pull Request
|
data/lib/lyrics_finder.rb
CHANGED
|
@@ -1,45 +1,29 @@
|
|
|
1
1
|
require_relative 'lyrics_finder/dependencies'
|
|
2
2
|
|
|
3
|
-
module
|
|
4
|
-
|
|
5
|
-
include Contracts
|
|
3
|
+
module LyricsFinder
|
|
4
|
+
include Contracts
|
|
6
5
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
song = set_song(author, title)
|
|
18
|
-
song_lyric = catch(:song_lyric) {
|
|
19
|
-
@providers.each do |provider|
|
|
20
|
-
klass = Providers.build_klass(provider)
|
|
21
|
-
url = klass.format_url(song)
|
|
22
|
-
data = perform_request(url)
|
|
23
|
-
result = klass.extract_lyric(data) if data
|
|
24
|
-
throw :song_lyric, result unless result.nil?
|
|
25
|
-
end
|
|
26
|
-
throw :song_lyric, nil # because song cannot be found.
|
|
27
|
-
}
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
private
|
|
31
|
-
|
|
32
|
-
Contract String, String => Lyrics::Song
|
|
33
|
-
def set_song(author, title)
|
|
34
|
-
Song.new(author, title)
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def perform_request(url)
|
|
38
|
-
begin
|
|
39
|
-
open(url)
|
|
40
|
-
rescue Exception => ex
|
|
41
|
-
# puts "ERROR: " + ex.message
|
|
6
|
+
Contract String, String => Or[Array, nil]
|
|
7
|
+
def self.search(author, title)
|
|
8
|
+
song = Song.new(author, title)
|
|
9
|
+
song_lyric = catch(:song_lyric) {
|
|
10
|
+
Providers.list.each do |provider|
|
|
11
|
+
klass = Providers.build_klass(provider)
|
|
12
|
+
url = klass.format_url(song)
|
|
13
|
+
data = perform_request(url)
|
|
14
|
+
result = klass.extract_lyric(data) if data
|
|
15
|
+
throw :song_lyric, result unless result.nil?
|
|
42
16
|
end
|
|
17
|
+
throw :song_lyric, nil # because song cannot be found.
|
|
18
|
+
}
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def self.perform_request(url)
|
|
22
|
+
begin
|
|
23
|
+
open(url)
|
|
24
|
+
rescue Exception => ex
|
|
25
|
+
# puts "ERROR: " + ex.message
|
|
43
26
|
end
|
|
44
27
|
end
|
|
28
|
+
|
|
45
29
|
end
|
data/lib/lyrics_finder/cli.rb
CHANGED
|
@@ -7,8 +7,7 @@ module Lyrics
|
|
|
7
7
|
method_option 'author', :aliases => '-a', :type => :string
|
|
8
8
|
method_option 'title', :aliases => '-t', :type => :string
|
|
9
9
|
def search
|
|
10
|
-
|
|
11
|
-
puts finder.search(options[:author], options[:title])
|
|
10
|
+
puts LyricsFinder.search(options[:author], options[:title])
|
|
12
11
|
end
|
|
13
12
|
end
|
|
14
13
|
end
|
|
@@ -6,8 +6,5 @@ I18n.enforce_available_locales = false
|
|
|
6
6
|
require 'contracts'
|
|
7
7
|
|
|
8
8
|
require_relative 'version'
|
|
9
|
-
require_relative '
|
|
10
|
-
require_relative 'providers
|
|
11
|
-
require_relative 'providers/azlyrics'
|
|
12
|
-
require_relative 'providers/song_lyrics'
|
|
13
|
-
require_relative 'providers/lyrics_mania'
|
|
9
|
+
require_relative 'song'
|
|
10
|
+
require_relative 'providers'
|
|
@@ -1,32 +1,71 @@
|
|
|
1
|
-
|
|
1
|
+
module LyricsFinder::Providers
|
|
2
|
+
include Contracts
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
def self.list
|
|
5
|
+
[:lyrics_wikia, :lyrics_mania, :song_lyrics, :azlyrics]
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
Contract Symbol => Module
|
|
9
|
+
def self.build_klass(provider)
|
|
10
|
+
klass = "LyricsFinder::Providers::" + provider.to_s.camelize
|
|
11
|
+
klass.constantize
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
Contract String, Tempfile => Or[Array, nil]
|
|
15
|
+
def self.extract_lyrics_at_css_from_data(css_element, data)
|
|
16
|
+
html = Nokogiri::HTML(data)
|
|
17
|
+
lyrics_container = html.css(css_element).first
|
|
18
|
+
unless lyrics_container.nil?
|
|
19
|
+
elements = lyrics_container.children.to_a
|
|
20
|
+
phrases = elements.select { |el| el.text? && el.text != "\n" && !el.blank? }
|
|
21
|
+
phrases.map! { |element| element.text.strip }
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Providers Modules
|
|
6
26
|
|
|
7
|
-
|
|
8
|
-
|
|
27
|
+
module LyricsWikia
|
|
28
|
+
def self.format_url(song)
|
|
29
|
+
song.format_attributes_with_separator!("_")
|
|
30
|
+
"http://lyrics.wikia.com/#{song.author}:#{song.title}"
|
|
9
31
|
end
|
|
10
32
|
|
|
11
|
-
def self.
|
|
12
|
-
|
|
13
|
-
valid_providers.any? ? valid_providers : providers_list
|
|
33
|
+
def self.extract_lyric(data)
|
|
34
|
+
LyricsFinder::Providers.extract_lyrics_at_css_from_data('.lyricbox', data)
|
|
14
35
|
end
|
|
36
|
+
end
|
|
15
37
|
|
|
16
|
-
|
|
17
|
-
def self.
|
|
18
|
-
|
|
19
|
-
|
|
38
|
+
module LyricsMania
|
|
39
|
+
def self.format_url(song)
|
|
40
|
+
song.format_attributes_with_separator!("_")
|
|
41
|
+
"http://www.lyricsmania.com/#{song.title}_lyrics_#{song.author}.html"
|
|
20
42
|
end
|
|
21
43
|
|
|
22
|
-
def self.
|
|
23
|
-
|
|
24
|
-
lyrics_container = html.css(css_element).first
|
|
25
|
-
unless lyrics_container.nil?
|
|
26
|
-
elements = lyrics_container.children.to_a
|
|
27
|
-
phrases = elements.select { |el| el.text? && el.text != "\n" && !el.blank? }
|
|
28
|
-
phrases.map! { |element| element.text.strip }
|
|
29
|
-
end
|
|
44
|
+
def self.extract_lyric(data)
|
|
45
|
+
LyricsFinder::Providers.extract_lyrics_at_css_from_data('.lyrics-body', data)
|
|
30
46
|
end
|
|
31
47
|
end
|
|
48
|
+
|
|
49
|
+
module SongLyrics
|
|
50
|
+
def self.format_url(song)
|
|
51
|
+
song.format_attributes_with_separator!("-")
|
|
52
|
+
"http://www.songlyrics.com/#{song.author}/#{song.title}-lyrics/"
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def self.extract_lyric(data)
|
|
56
|
+
LyricsFinder::Providers.extract_lyrics_at_css_from_data('#songLyricsDiv', data)
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
module Azlyrics
|
|
61
|
+
def self.format_url(song)
|
|
62
|
+
song.format_attributes_with_separator!("")
|
|
63
|
+
"http://www.azlyrics.com/lyrics/#{song.author}/#{song.title}.html"
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def self.extract_lyric(data)
|
|
67
|
+
LyricsFinder::Providers.extract_lyrics_at_css_from_data('div:nth-child(7)', data)
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
32
71
|
end
|
data/lib/lyrics_finder/song.rb
CHANGED
|
@@ -1,23 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
attr_accessor :author, :title
|
|
1
|
+
class Song
|
|
2
|
+
attr_accessor :author, :title
|
|
4
3
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
def self.valid?(val)
|
|
11
|
-
val.is_a?(Song) && !val.author.blank? && !val.title.blank?
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def self.to_s
|
|
15
|
-
"a valid author and song title please"
|
|
16
|
-
end
|
|
4
|
+
def initialize(author, title)
|
|
5
|
+
@author = author
|
|
6
|
+
@title = title
|
|
7
|
+
end
|
|
17
8
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
end
|
|
9
|
+
def format_attributes_with_separator!(separator)
|
|
10
|
+
self.author = I18n.transliterate(@author.strip.gsub(" ", separator))
|
|
11
|
+
self.title = I18n.transliterate(@title.strip.gsub(" ", separator))
|
|
22
12
|
end
|
|
23
13
|
end
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
module LyricsFinder
|
|
2
|
-
VERSION = "0.0
|
|
3
|
-
end
|
|
2
|
+
VERSION = "0.1.0"
|
|
3
|
+
end
|
data/lyrics_finder.gemspec
CHANGED
|
@@ -20,12 +20,14 @@ Gem::Specification.new do |spec|
|
|
|
20
20
|
|
|
21
21
|
spec.add_development_dependency 'bundler', '~> 1.6'
|
|
22
22
|
spec.add_development_dependency 'rake'
|
|
23
|
-
|
|
24
23
|
spec.add_development_dependency 'rspec', '~> 2.14.0'
|
|
25
24
|
spec.add_development_dependency 'rspec-nc', '~> 0.1.0'
|
|
26
25
|
spec.add_development_dependency 'vcr', '~> 2.9.2'
|
|
27
26
|
spec.add_development_dependency 'webmock', '~> 1.18.0'
|
|
28
27
|
spec.add_development_dependency 'coveralls', '~> 0.7.0'
|
|
28
|
+
spec.add_development_dependency 'pry', '~> 0.9'
|
|
29
|
+
spec.add_development_dependency 'pry-byebug', '1.3.2'
|
|
30
|
+
spec.add_development_dependency 'awesome_print', '~> 1.2.0'
|
|
29
31
|
|
|
30
32
|
spec.add_dependency 'nokogiri', '~> 1.6.1'
|
|
31
33
|
spec.add_dependency 'activesupport', '~> 4.1.0'
|
|
@@ -1,71 +1,11 @@
|
|
|
1
|
-
describe
|
|
2
|
-
describe 'sets @providers properly on initialization' do
|
|
3
|
-
context 'without specifying providers' do
|
|
4
|
-
let(:finder) { Lyrics::Finder.new }
|
|
5
|
-
|
|
6
|
-
it 'sets @providers to default PROVIDERS_LIST' do
|
|
7
|
-
expect(finder.selected_providers).to eq Lyrics::Providers.providers_list
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
context 'specifying providers' do
|
|
12
|
-
context 'some providers are invalid' do
|
|
13
|
-
let(:finder) { Lyrics::Finder.new(:lyrics_wikia, :bad_songs) }
|
|
14
|
-
|
|
15
|
-
it 'filters invalid providers' do
|
|
16
|
-
expect(finder.selected_providers).to match_array [:lyrics_wikia]
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
context 'all providers are invalid' do
|
|
21
|
-
let(:finder) { Lyrics::Finder.new(:bad_songs, :invalid_songs) }
|
|
22
|
-
|
|
23
|
-
it 'sets @providers to default PROVIDERS_LIST' do
|
|
24
|
-
expect(finder.selected_providers).to eq Lyrics::Providers.providers_list
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end # 'initialization'
|
|
1
|
+
describe LyricsFinder do
|
|
29
2
|
|
|
30
3
|
describe '#search' do
|
|
31
|
-
describe 'using LyricsWikia as the provider' do
|
|
32
|
-
context 'with a song that can be found' do
|
|
33
|
-
before :each do
|
|
34
|
-
@finder = Lyrics::Finder.new(:lyrics_wikia)
|
|
35
|
-
VCR.use_cassette 'LyricsWikia 200 search' do
|
|
36
|
-
@song = @finder.search("american authors", "best day of my life")
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
it 'returns an instance of Array' do
|
|
41
|
-
expect(@song.class).to eq Array
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
it 'returns the desired song' do
|
|
45
|
-
expect(@song).to eq LyricsWikiaSampleSongs::BEST_DAY_OF_MY_LIFE
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
# Searching for a song that exist but it's not yet on this website.
|
|
50
|
-
context 'with a song that cannot be found' do
|
|
51
|
-
before :each do
|
|
52
|
-
@finder = Lyrics::Finder.new(:lyrics_wikia)
|
|
53
|
-
VCR.use_cassette 'LyricsWikia Song does not exist search' do
|
|
54
|
-
@song = @finder.search("arctic monkeys", "do i wanna know")
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
it 'returns nil' do
|
|
59
|
-
expect(@song).to be nil
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
4
|
|
|
64
|
-
|
|
5
|
+
context 'with a song that can be found' do
|
|
65
6
|
before :each do
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
@song = @finder.search("american authors", "best day of my life")
|
|
7
|
+
VCR.use_cassette 'LyricsWikia 200 search' do
|
|
8
|
+
@song = LyricsFinder.search("american authors", "best day of my life")
|
|
69
9
|
end
|
|
70
10
|
end
|
|
71
11
|
|
|
@@ -74,66 +14,16 @@ describe Lyrics::Finder do
|
|
|
74
14
|
end
|
|
75
15
|
|
|
76
16
|
it 'returns the desired song' do
|
|
77
|
-
expect(@song).to eq
|
|
17
|
+
expect(@song).to eq LyricsWikiaSampleSongs::BEST_DAY_OF_MY_LIFE
|
|
78
18
|
end
|
|
79
19
|
end
|
|
80
20
|
|
|
81
|
-
|
|
82
|
-
before :each do
|
|
83
|
-
@finder = Lyrics::Finder.new(:song_lyrics)
|
|
84
|
-
VCR.use_cassette 'SongLyrics 200 search' do
|
|
85
|
-
@song = @finder.search("american authors", "best day of my life")
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
it 'returns an instance of Array' do
|
|
90
|
-
expect(@song.class).to eq Array
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
it 'returns the desired song' do
|
|
94
|
-
expect(@song).to eq SongLyricsSampleSongs::BEST_DAY_OF_MY_LIFE
|
|
95
|
-
end
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
describe 'using LyricsMania as the provider' do
|
|
99
|
-
before :each do
|
|
100
|
-
@finder = Lyrics::Finder.new(:lyrics_mania)
|
|
101
|
-
VCR.use_cassette 'LyricsMania 200 search' do
|
|
102
|
-
@song = @finder.search("american authors", "best day of my life")
|
|
103
|
-
end
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
it 'returns an instance of Array' do
|
|
107
|
-
expect(@song.class).to eq Array
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
it 'returns the desired song' do
|
|
111
|
-
expect(@song).to eq LyricsManiaSampleSongs::BEST_DAY_OF_MY_LIFE
|
|
112
|
-
end
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
describe 'with a song that cannot be found' do
|
|
116
|
-
before :each do
|
|
117
|
-
@finder = Lyrics::Finder.new
|
|
118
|
-
VCR.use_cassette 'Nonexistent Song 404 search' do
|
|
119
|
-
@song = @finder.search("the foobar band", "rubynation")
|
|
120
|
-
end
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
it 'returns nil' do
|
|
124
|
-
expect(@song).to be nil
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
describe 'with invalid parameters' do
|
|
129
|
-
let(:finder) { Lyrics::Finder.new }
|
|
130
|
-
|
|
21
|
+
context 'with invalid parameters' do
|
|
131
22
|
it 'fails with ContractError' do
|
|
132
|
-
expect
|
|
133
|
-
finder.search("","")
|
|
134
|
-
}.to raise_error ContractError
|
|
23
|
+
expect(LyricsFinder.search("","")).to eq nil
|
|
135
24
|
end
|
|
136
25
|
end
|
|
26
|
+
|
|
137
27
|
end # '#search'
|
|
138
28
|
|
|
139
|
-
end
|
|
29
|
+
end
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
# encoding: UTF-8
|
|
2
|
-
describe
|
|
2
|
+
describe LyricsFinder::Providers::Azlyrics do
|
|
3
|
+
|
|
3
4
|
describe '.format_url' do
|
|
4
5
|
context 'with valid author and title' do
|
|
5
|
-
let(:klass) {
|
|
6
|
-
let(:song) {
|
|
6
|
+
let(:klass) { LyricsFinder::Providers::Azlyrics }
|
|
7
|
+
let(:song) { Song.new("amêricàn authors", "best day of my life") }
|
|
7
8
|
let(:valid_url) { "http://www.azlyrics.com/lyrics/americanauthors/bestdayofmylife.html" }
|
|
8
9
|
|
|
9
10
|
it 'returns a properly formatted url' do
|
|
@@ -15,7 +16,7 @@ describe Lyrics::Providers::Azlyrics do
|
|
|
15
16
|
describe '.extract_lyric' do
|
|
16
17
|
# with valid data it's already tested in lyrics_finder_spec.rb
|
|
17
18
|
context 'with invalid data' do
|
|
18
|
-
let(:klass) {
|
|
19
|
+
let(:klass) { LyricsFinder::Providers::Azlyrics }
|
|
19
20
|
|
|
20
21
|
it 'raises a ContractError Exception' do
|
|
21
22
|
expect{
|
|
@@ -24,4 +25,5 @@ describe Lyrics::Providers::Azlyrics do
|
|
|
24
25
|
end
|
|
25
26
|
end
|
|
26
27
|
end
|
|
28
|
+
|
|
27
29
|
end
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
# encoding: UTF-8
|
|
2
|
-
describe
|
|
2
|
+
describe LyricsFinder::Providers::LyricsMania do
|
|
3
|
+
|
|
3
4
|
describe '.format_url' do
|
|
4
5
|
context 'with valid author and title' do
|
|
5
|
-
let(:klass) {
|
|
6
|
-
let(:song) {
|
|
6
|
+
let(:klass) { LyricsFinder::Providers::LyricsMania }
|
|
7
|
+
let(:song) { Song.new("amêricàn authors", "best day of my life") }
|
|
7
8
|
let(:valid_url) { "http://www.lyricsmania.com/best_day_of_my_life_lyrics_american_authors.html" }
|
|
8
9
|
|
|
9
10
|
it 'returns a properly formatted url' do
|
|
@@ -15,7 +16,7 @@ describe Lyrics::Providers::LyricsMania do
|
|
|
15
16
|
describe '.extract_lyric' do
|
|
16
17
|
# with valid data it's already tested in lyrics_finder_spec.rb
|
|
17
18
|
context 'with invalid data' do
|
|
18
|
-
let(:klass) {
|
|
19
|
+
let(:klass) { LyricsFinder::Providers::LyricsMania }
|
|
19
20
|
|
|
20
21
|
it 'raises a ContractError Exception' do
|
|
21
22
|
expect{
|
|
@@ -24,4 +25,5 @@ describe Lyrics::Providers::LyricsMania do
|
|
|
24
25
|
end
|
|
25
26
|
end
|
|
26
27
|
end
|
|
28
|
+
|
|
27
29
|
end
|
|
@@ -1,37 +1,22 @@
|
|
|
1
1
|
# encoding: UTF-8
|
|
2
|
-
describe
|
|
2
|
+
describe LyricsFinder::Providers::LyricsWikia do
|
|
3
|
+
|
|
3
4
|
describe '.format_url' do
|
|
4
5
|
context 'with valid author and title' do
|
|
5
|
-
let(:klass) {
|
|
6
|
-
let(:song) {
|
|
6
|
+
let(:klass) { LyricsFinder::Providers::LyricsWikia }
|
|
7
|
+
let(:song) { Song.new("amëricán authòrs", "best day of my life") }
|
|
7
8
|
let(:valid_url) { "http://lyrics.wikia.com/american_authors:best_day_of_my_life" }
|
|
8
9
|
|
|
9
10
|
it 'returns a properly formatted url' do
|
|
10
11
|
expect(klass.format_url(song)).to eq valid_url
|
|
11
12
|
end
|
|
12
13
|
end
|
|
13
|
-
|
|
14
|
-
context 'with invalid author or title' do
|
|
15
|
-
let(:klass) { Lyrics::Providers::LyricsWikia }
|
|
16
|
-
|
|
17
|
-
it 'with non-string arguments raises a ContractError Exception' do
|
|
18
|
-
expect{
|
|
19
|
-
klass.format_url(2)
|
|
20
|
-
}.to raise_error ContractError
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
it 'with empty strings arguments raises a ContractError Exception' do
|
|
24
|
-
expect{
|
|
25
|
-
klass.format_url("")
|
|
26
|
-
}.to raise_error ContractError
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
14
|
end
|
|
30
15
|
|
|
31
16
|
describe '.extract_lyric' do
|
|
32
17
|
# with valid data it's already tested in lyrics_finder_spec.rb
|
|
33
18
|
context 'with invalid data' do
|
|
34
|
-
let(:klass) {
|
|
19
|
+
let(:klass) { LyricsFinder::Providers::LyricsWikia }
|
|
35
20
|
|
|
36
21
|
it 'raises a ContractError Exception' do
|
|
37
22
|
expect{
|
|
@@ -40,4 +25,5 @@ describe Lyrics::Providers::LyricsWikia do
|
|
|
40
25
|
end
|
|
41
26
|
end
|
|
42
27
|
end
|
|
28
|
+
|
|
43
29
|
end
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
# encoding: UTF-8
|
|
2
|
-
describe
|
|
2
|
+
describe LyricsFinder::Providers::SongLyrics do
|
|
3
|
+
|
|
3
4
|
describe '.format_url' do
|
|
4
5
|
context 'with valid author and title' do
|
|
5
|
-
let(:klass) {
|
|
6
|
-
let(:song) {
|
|
6
|
+
let(:klass) { LyricsFinder::Providers::SongLyrics}
|
|
7
|
+
let(:song) { Song.new("amêricàn authors", "best day of my life") }
|
|
7
8
|
let(:valid_url) { "http://www.songlyrics.com/american-authors/best-day-of-my-life-lyrics/" }
|
|
8
9
|
|
|
9
10
|
it 'returns a properly formatted url' do
|
|
@@ -15,7 +16,7 @@ describe Lyrics::Providers::SongLyrics do
|
|
|
15
16
|
describe '.extract_lyric' do
|
|
16
17
|
# with valid data it's already tested in lyrics_finder_spec.rb
|
|
17
18
|
context 'with invalid data' do
|
|
18
|
-
let(:klass) {
|
|
19
|
+
let(:klass) { LyricsFinder::Providers::SongLyrics }
|
|
19
20
|
|
|
20
21
|
it 'raises a ContractError Exception' do
|
|
21
22
|
expect{
|
|
@@ -24,4 +25,5 @@ describe Lyrics::Providers::SongLyrics do
|
|
|
24
25
|
end
|
|
25
26
|
end
|
|
26
27
|
end
|
|
28
|
+
|
|
27
29
|
end
|
|
@@ -1,19 +1,23 @@
|
|
|
1
|
-
describe
|
|
1
|
+
describe LyricsFinder::Providers do
|
|
2
|
+
|
|
2
3
|
describe '.build_klass' do
|
|
4
|
+
|
|
3
5
|
context 'with valid arguments' do
|
|
4
|
-
let(:klass) {
|
|
6
|
+
let(:klass) { LyricsFinder::Providers::LyricsWikia }
|
|
5
7
|
|
|
6
8
|
it 'builds the correct class' do
|
|
7
|
-
expect(
|
|
9
|
+
expect(LyricsFinder::Providers.build_klass(:lyrics_wikia)).to eq klass
|
|
8
10
|
end
|
|
9
11
|
end
|
|
10
12
|
|
|
11
13
|
context 'with invalid arguments' do
|
|
12
14
|
it 'raises a ContractError Exception' do
|
|
13
15
|
expect{
|
|
14
|
-
|
|
16
|
+
LyricsFinder::Providers.build_klass("klass")
|
|
15
17
|
}.to raise_error ContractError
|
|
16
18
|
end
|
|
17
19
|
end
|
|
20
|
+
|
|
18
21
|
end
|
|
22
|
+
|
|
19
23
|
end
|
data/spec/spec_helper.rb
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
require 'coveralls'
|
|
2
2
|
Coveralls.wear!
|
|
3
3
|
|
|
4
|
-
require 'vcr'
|
|
5
4
|
require 'lyrics_finder'
|
|
5
|
+
require 'vcr'
|
|
6
6
|
|
|
7
7
|
require_relative 'support/vcr_setup'
|
|
8
|
-
require_relative 'support/lyrics_wikia_sample_songs'
|
|
9
|
-
require_relative 'support/azlyrics_sample_songs'
|
|
10
|
-
require_relative 'support/song_lyrics_sample_songs'
|
|
11
|
-
require_relative 'support/lyrics_mania_sample_songs'
|
|
8
|
+
require_relative 'support/lyrics_wikia_sample_songs'
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: lyrics_finder
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0
|
|
4
|
+
version: 0.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Daniel Romero
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2014-
|
|
11
|
+
date: 2014-09-28 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -108,6 +108,48 @@ dependencies:
|
|
|
108
108
|
- - ~>
|
|
109
109
|
- !ruby/object:Gem::Version
|
|
110
110
|
version: 0.7.0
|
|
111
|
+
- !ruby/object:Gem::Dependency
|
|
112
|
+
name: pry
|
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
|
114
|
+
requirements:
|
|
115
|
+
- - ~>
|
|
116
|
+
- !ruby/object:Gem::Version
|
|
117
|
+
version: '0.9'
|
|
118
|
+
type: :development
|
|
119
|
+
prerelease: false
|
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
+
requirements:
|
|
122
|
+
- - ~>
|
|
123
|
+
- !ruby/object:Gem::Version
|
|
124
|
+
version: '0.9'
|
|
125
|
+
- !ruby/object:Gem::Dependency
|
|
126
|
+
name: pry-byebug
|
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
|
128
|
+
requirements:
|
|
129
|
+
- - '='
|
|
130
|
+
- !ruby/object:Gem::Version
|
|
131
|
+
version: 1.3.2
|
|
132
|
+
type: :development
|
|
133
|
+
prerelease: false
|
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
135
|
+
requirements:
|
|
136
|
+
- - '='
|
|
137
|
+
- !ruby/object:Gem::Version
|
|
138
|
+
version: 1.3.2
|
|
139
|
+
- !ruby/object:Gem::Dependency
|
|
140
|
+
name: awesome_print
|
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
|
142
|
+
requirements:
|
|
143
|
+
- - ~>
|
|
144
|
+
- !ruby/object:Gem::Version
|
|
145
|
+
version: 1.2.0
|
|
146
|
+
type: :development
|
|
147
|
+
prerelease: false
|
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
149
|
+
requirements:
|
|
150
|
+
- - ~>
|
|
151
|
+
- !ruby/object:Gem::Version
|
|
152
|
+
version: 1.2.0
|
|
111
153
|
- !ruby/object:Gem::Dependency
|
|
112
154
|
name: nokogiri
|
|
113
155
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -200,10 +242,6 @@ files:
|
|
|
200
242
|
- lib/lyrics_finder/cli.rb
|
|
201
243
|
- lib/lyrics_finder/dependencies.rb
|
|
202
244
|
- lib/lyrics_finder/providers.rb
|
|
203
|
-
- lib/lyrics_finder/providers/azlyrics.rb
|
|
204
|
-
- lib/lyrics_finder/providers/lyrics_mania.rb
|
|
205
|
-
- lib/lyrics_finder/providers/lyrics_wikia.rb
|
|
206
|
-
- lib/lyrics_finder/providers/song_lyrics.rb
|
|
207
245
|
- lib/lyrics_finder/song.rb
|
|
208
246
|
- lib/lyrics_finder/version.rb
|
|
209
247
|
- lyrics_finder.gemspec
|
|
@@ -214,10 +252,7 @@ files:
|
|
|
214
252
|
- spec/lyrics_finder/providers/song_lyrics_spec.rb
|
|
215
253
|
- spec/lyrics_finder/providers_spec.rb
|
|
216
254
|
- spec/spec_helper.rb
|
|
217
|
-
- spec/support/azlyrics_sample_songs.rb
|
|
218
|
-
- spec/support/lyrics_mania_sample_songs.rb
|
|
219
255
|
- spec/support/lyrics_wikia_sample_songs.rb
|
|
220
|
-
- spec/support/song_lyrics_sample_songs.rb
|
|
221
256
|
- spec/support/vcr_setup.rb
|
|
222
257
|
homepage: https://github.com/dnlR/lyrics_finder
|
|
223
258
|
licenses:
|
|
@@ -251,8 +286,5 @@ test_files:
|
|
|
251
286
|
- spec/lyrics_finder/providers/song_lyrics_spec.rb
|
|
252
287
|
- spec/lyrics_finder/providers_spec.rb
|
|
253
288
|
- spec/spec_helper.rb
|
|
254
|
-
- spec/support/azlyrics_sample_songs.rb
|
|
255
|
-
- spec/support/lyrics_mania_sample_songs.rb
|
|
256
289
|
- spec/support/lyrics_wikia_sample_songs.rb
|
|
257
|
-
- spec/support/song_lyrics_sample_songs.rb
|
|
258
290
|
- spec/support/vcr_setup.rb
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
module Lyrics
|
|
2
|
-
module Providers::Azlyrics
|
|
3
|
-
include Contracts
|
|
4
|
-
|
|
5
|
-
Contract Lyrics::Song => String
|
|
6
|
-
def self.format_url(song)
|
|
7
|
-
song.format_attributes_with_separator!("")
|
|
8
|
-
"http://www.azlyrics.com/lyrics/#{song.author}/#{song.title}.html"
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
Contract Tempfile => Or[Array, nil]
|
|
12
|
-
def self.extract_lyric(data)
|
|
13
|
-
Lyrics::Providers.extract_lyrics_at_css_from_data('div:nth-child(7)', data)
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
module Lyrics
|
|
2
|
-
module Providers::LyricsMania
|
|
3
|
-
include Contracts
|
|
4
|
-
|
|
5
|
-
Contract Lyrics::Song => String
|
|
6
|
-
def self.format_url(song)
|
|
7
|
-
song.format_attributes_with_separator!("_")
|
|
8
|
-
"http://www.lyricsmania.com/#{song.title}_lyrics_#{song.author}.html"
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
Contract Tempfile => Or[Array, nil]
|
|
12
|
-
def self.extract_lyric(data)
|
|
13
|
-
Lyrics::Providers.extract_lyrics_at_css_from_data('.lyrics-body', data)
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
module Lyrics
|
|
2
|
-
module Providers::LyricsWikia
|
|
3
|
-
include Contracts
|
|
4
|
-
|
|
5
|
-
Contract Lyrics::Song => String
|
|
6
|
-
def self.format_url(song)
|
|
7
|
-
song.format_attributes_with_separator!("_")
|
|
8
|
-
"http://lyrics.wikia.com/#{song.author}:#{song.title}"
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
Contract Tempfile => Or[Array, nil]
|
|
12
|
-
def self.extract_lyric(data)
|
|
13
|
-
Lyrics::Providers.extract_lyrics_at_css_from_data('.lyricbox', data)
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
module Lyrics
|
|
2
|
-
module Providers::SongLyrics
|
|
3
|
-
include Contracts
|
|
4
|
-
|
|
5
|
-
Contract Lyrics::Song => String
|
|
6
|
-
def self.format_url(song)
|
|
7
|
-
song.format_attributes_with_separator!("-")
|
|
8
|
-
"http://www.songlyrics.com/#{song.author}/#{song.title}-lyrics/"
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
Contract Tempfile => Or[Array, nil]
|
|
12
|
-
def self.extract_lyric(data)
|
|
13
|
-
Lyrics::Providers.extract_lyrics_at_css_from_data('#songLyricsDiv', data)
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
module AzlyricsSampleSongs
|
|
2
|
-
BEST_DAY_OF_MY_LIFE = ["I had a dream so big and loud",
|
|
3
|
-
"I jumped so high I touched the clouds",
|
|
4
|
-
"Wo-o-o-o-o-oh",
|
|
5
|
-
"I stretched my hands out to the sky",
|
|
6
|
-
"We danced with monsters through the night",
|
|
7
|
-
"Wo-o-o-o-o-oh",
|
|
8
|
-
"I'm never gonna look back",
|
|
9
|
-
"Whoa, I'm never gonna give it up",
|
|
10
|
-
"No, please don't wake me now",
|
|
11
|
-
"Oo-o-o-o-oo",
|
|
12
|
-
"This is gonna be the best day of my life",
|
|
13
|
-
"My life",
|
|
14
|
-
"Oo-o-o-o-oo",
|
|
15
|
-
"This is gonna be the best day of my life",
|
|
16
|
-
"My life",
|
|
17
|
-
"I howled at the moon with friends",
|
|
18
|
-
"And then the sun came crashing in",
|
|
19
|
-
"Wo-o-o-o-o-oh",
|
|
20
|
-
"But all the possibilities",
|
|
21
|
-
"No limits just epiphanies",
|
|
22
|
-
"Wo-o-o-o-o-oh",
|
|
23
|
-
"I'm never gonna look back",
|
|
24
|
-
"Whoa, I'm never gonna give it up",
|
|
25
|
-
"No, just don't wake me now",
|
|
26
|
-
"Oo-o-o-o-oo",
|
|
27
|
-
"This is gonna be the best day of my life",
|
|
28
|
-
"My life",
|
|
29
|
-
"Oo-o-o-o-oo",
|
|
30
|
-
"This is gonna be the best day of my life",
|
|
31
|
-
"My life",
|
|
32
|
-
"I hear it calling outside my window",
|
|
33
|
-
"I feel it in my soul (soul)",
|
|
34
|
-
"The stars were burning so bright",
|
|
35
|
-
"The sun was out 'til midnight",
|
|
36
|
-
"I say we lose control (control)",
|
|
37
|
-
"This is gonna be the best day of my life",
|
|
38
|
-
"My life",
|
|
39
|
-
"Oo-o-o-o-o",
|
|
40
|
-
"This is gonna be the best day of my life",
|
|
41
|
-
"My life",
|
|
42
|
-
"This is gonna be, this is gonna be, this is gonna be",
|
|
43
|
-
"The best day of my life",
|
|
44
|
-
"Everything is looking up, everybody up now",
|
|
45
|
-
"This is gonna be the best day of my life",
|
|
46
|
-
"My life"]
|
|
47
|
-
end
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
module LyricsManiaSampleSongs
|
|
2
|
-
BEST_DAY_OF_MY_LIFE = ["Wo-o-o-o-o-oh Wooh",
|
|
3
|
-
"I had a dream so big and loud",
|
|
4
|
-
"I jumped so high I touched the clouds",
|
|
5
|
-
"Wo-o-o-o-o-oh",
|
|
6
|
-
"Wo-o-o-o-o-oh",
|
|
7
|
-
"I stretched my hands out to the sky",
|
|
8
|
-
"We danced with monsters through the night",
|
|
9
|
-
"Wo-o-o-o-o-oh",
|
|
10
|
-
"Wo-o-o-o-o-oh",
|
|
11
|
-
"I'm never gonna look back",
|
|
12
|
-
"Woah, I'm never gonna give it up",
|
|
13
|
-
"No, please don't wake me now",
|
|
14
|
-
"Oo-o-o-o-oo",
|
|
15
|
-
"This is gonna be the best day of my life",
|
|
16
|
-
"My li-i-i-i-i-ife",
|
|
17
|
-
"Oo-o-o-o-oo",
|
|
18
|
-
"This is gonna be the best day of my life",
|
|
19
|
-
"My li-i-i-i-i-ife",
|
|
20
|
-
"I howled at the moon with friends",
|
|
21
|
-
"And then the sun came crashing in",
|
|
22
|
-
"Wo-o-o-o-o-oh",
|
|
23
|
-
"Wo-o-o-o-o-oh",
|
|
24
|
-
"But all the possibilities",
|
|
25
|
-
"No limits just epiphanies",
|
|
26
|
-
"Wo-o-o-o-o-oh",
|
|
27
|
-
"Wo-o-o-o-o-oh",
|
|
28
|
-
"I'm never gonna look back",
|
|
29
|
-
"Woah, I'm never gonna give it up",
|
|
30
|
-
"No, just don't wake me now",
|
|
31
|
-
"Oo-o-o-o-oo",
|
|
32
|
-
"This is gonna be the best day of my life",
|
|
33
|
-
"My li-i-i-i-i-ife",
|
|
34
|
-
"Oo-o-o-o-oo",
|
|
35
|
-
"This is gonna be the best day of my life",
|
|
36
|
-
"My li-i-i-i-i-ife",
|
|
37
|
-
"I hear it calling outside my window",
|
|
38
|
-
"I feel it in my soul (soul)",
|
|
39
|
-
"The stars were burning so bright",
|
|
40
|
-
"The sun was out 'til midnight",
|
|
41
|
-
"I say we lose control (control)",
|
|
42
|
-
"This is gonna be the best day of my life",
|
|
43
|
-
"My li-i-i-i-i-ife",
|
|
44
|
-
"Oo-o-o-o-o",
|
|
45
|
-
"This is gonna be the best day of my life",
|
|
46
|
-
"My li-i-i-i-i-ife",
|
|
47
|
-
"This is gonna be, this is gonna be, this is gonna be",
|
|
48
|
-
"The best day of my life",
|
|
49
|
-
"Everything is looking up, everybody up now",
|
|
50
|
-
"This is gonna be the best day of my life",
|
|
51
|
-
"My li-i-i-i-i-ife"]
|
|
52
|
-
end
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
module SongLyricsSampleSongs
|
|
2
|
-
BEST_DAY_OF_MY_LIFE = ["I had a dream so big and loud",
|
|
3
|
-
"I jumped so high I touched the clouds",
|
|
4
|
-
"Wo-o-o-o-o-oh [x2]",
|
|
5
|
-
"I stretched my hands out to the sky",
|
|
6
|
-
"We danced with monsters through the night",
|
|
7
|
-
"Wo-o-o-o-o-oh [x2]",
|
|
8
|
-
"I'm never gonna look back",
|
|
9
|
-
"Woah, never gonna give it up",
|
|
10
|
-
"No, please don't wake me now",
|
|
11
|
-
"Oo-o-o-o-oo",
|
|
12
|
-
"This is gonna be the best day of my li-ife",
|
|
13
|
-
"My li-i-i-i-i-ife",
|
|
14
|
-
"Oo-o-o-o-oo",
|
|
15
|
-
"This is gonna be the best day of my li-ife",
|
|
16
|
-
"My li-i-i-i-i-ife",
|
|
17
|
-
"I howled at the moon with friends",
|
|
18
|
-
"And then the sun came crashing in",
|
|
19
|
-
"Wo-o-o-o-o-oh [x2]",
|
|
20
|
-
"But all the possibilities",
|
|
21
|
-
"No limits just epiphanies",
|
|
22
|
-
"Wo-o-o-o-o-oh [x2]",
|
|
23
|
-
"I'm never gonna look back",
|
|
24
|
-
"Woah, never gonna give it up",
|
|
25
|
-
"No, just don't wake me now",
|
|
26
|
-
"Oo-o-o-o-oo",
|
|
27
|
-
"This is gonna be the best day of my li-ife",
|
|
28
|
-
"My li-i-i-i-i-ife",
|
|
29
|
-
"Oo-o-o-o-oo",
|
|
30
|
-
"This is gonna be the best day of my li-ife",
|
|
31
|
-
"My li-i-i-i-i-ife",
|
|
32
|
-
"I hear it calling outside my window",
|
|
33
|
-
"I feel it in my soul (soul)",
|
|
34
|
-
"The stars were burning so bright",
|
|
35
|
-
"The sun was out 'til midnight",
|
|
36
|
-
"I say we lose control (control)",
|
|
37
|
-
"This is gonna be the best day of my li-ife",
|
|
38
|
-
"My li-i-i-i-i-ife",
|
|
39
|
-
"Oo-o-o-o-o",
|
|
40
|
-
"This is gonna be the best day of my li-ife",
|
|
41
|
-
"My li-i-i-i-i-ife",
|
|
42
|
-
"This is gonna be, this is gonna be, this is gonna be",
|
|
43
|
-
"The best day of my life",
|
|
44
|
-
"Everything is looking up, everybody up now",
|
|
45
|
-
"This is gonna be the best day of my li-ife",
|
|
46
|
-
"My li-i-i-i-i-ife"]
|
|
47
|
-
end
|