lyrics_finder 0.0.3.1 → 0.0.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 18fb39d6218af131f95a5f89a8fa9e3e13c60016
4
- data.tar.gz: 7b5240100f25a8c0001c19a4427f45853346f785
3
+ metadata.gz: 24d30590b3b2ea3bca2df02b6f094d6765b567c8
4
+ data.tar.gz: 9958bc037c98e13ae04be1c389f94b537cbde463
5
5
  SHA512:
6
- metadata.gz: d7f9660235e0f0d67af718ddb9646f5ebaacee41f1af025be16dffa38af7ff09fb1e6cf743789b471bac74535386424aa818cd140842cface9f904e1cb6f05f0
7
- data.tar.gz: e4a45e2bdc8d6c0cb17aa6c25016bf4f1093bacfe4129468774aa5cee818ea0214de95d238bc2bb92c4a1875def4df931eab68d8bc44e4ab3bbd172bff8d7236
6
+ metadata.gz: 56c43572f530c4beffc7420eb077e008abfd6eb46e30cb185e845da7d763089a30e44e7d3f455efa3783105f5f64cd11101101dd683fe03bff947ba934a46b54
7
+ data.tar.gz: 9931a17d85fba8980ef222de6d1ed8cc53a2339e389015875b681153d4ecbfc42a31aaf89cc48c259cc813e3cd858fd4272f8e89a6e20dd847ff1bf95dbe14db
data/.gitignore CHANGED
@@ -21,4 +21,6 @@ tmp
21
21
  *.a
22
22
  mkmf.log
23
23
 
24
- .idea
24
+ .idea
25
+
26
+ spec/vcr_cassettes
data/README.md CHANGED
@@ -44,6 +44,7 @@ You can choose among the following:
44
44
  - LyricsWikia (`:lyrics_wikia`)
45
45
  - SongLyrics (`:song_lyrics`)
46
46
  - AZLyrics (`:azlyrics`)
47
+ - LyricsMania (`:lyrics_mania`)
47
48
 
48
49
  ## Example
49
50
 
@@ -64,6 +65,10 @@ LyricsFinder is also available as a command-line tool.
64
65
 
65
66
  ## Changelog
66
67
 
68
+ v 0.0.4
69
+
70
+ - Added lyrics mania as a valid website to get your lyrics from.
71
+
67
72
  v 0.0.3
68
73
 
69
74
  - Wrapped everything into a `Lyrics` module.
data/lib/lyrics_finder.rb CHANGED
@@ -3,7 +3,7 @@ require_relative 'lyrics_finder/dependencies'
3
3
  module Lyrics
4
4
  class Finder
5
5
  include Contracts
6
- PROVIDERS_LIST = [:lyrics_wikia, :song_lyrics, :azlyrics]
6
+ PROVIDERS_LIST = [:lyrics_wikia, :lyrics_mania, :song_lyrics, :azlyrics]
7
7
 
8
8
  def initialize(*args)
9
9
  @providers = filter_providers(args)
@@ -24,14 +24,12 @@ module Lyrics
24
24
  @providers.each do |provider|
25
25
  klass = Providers.build_klass(provider)
26
26
  url = klass.format_url(song)
27
-
28
27
  data = perform_request(url)
29
28
  result = klass.extract_lyric(data) if data
30
29
  throw :song_lyric, result unless result.nil?
31
30
  end
31
+ throw :song_lyric, nil # because song cannot be found.
32
32
  }
33
- # because if it doesn't find anything returns @providers by default
34
- song_lyric != @providers ? song_lyric : nil
35
33
  end
36
34
 
37
35
  private
@@ -9,4 +9,5 @@ require_relative 'version'
9
9
  require_relative 'providers'
10
10
  require_relative 'providers/lyrics_wikia'
11
11
  require_relative 'providers/azlyrics'
12
- require_relative 'providers/song_lyrics'
12
+ require_relative 'providers/song_lyrics'
13
+ require_relative 'providers/lyrics_mania'
@@ -0,0 +1,16 @@
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,3 +1,3 @@
1
1
  module LyricsFinder
2
- VERSION = "0.0.3.1"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -95,24 +95,22 @@ describe Lyrics::Finder do
95
95
  end
96
96
  end
97
97
 
98
- # unfortunately lyrics mania doesn't return 404 if it does not find the song
99
- # it just redirect to the root url www.lyricsmania.com
100
- # describe 'using LyricsMania as the provider' do
101
- # before :each do
102
- # @finder = Lyrics::Finder.new(:lyrics_mania)
103
- # VCR.use_cassette 'LyricsMania 200 search' do
104
- # @song = @finder.search("american authors", "best day of my life")
105
- # end
106
- # end
107
- #
108
- # it 'returns an instance of Array' do
109
- # expect(@song.class).to eq Array
110
- # end
111
- #
112
- # it 'returns the desired song' do
113
- # expect(@song).to eq LyricsManiaSampleSongs::BEST_DAY_OF_MY_LIFE
114
- # end
115
- # end
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
116
114
 
117
115
  describe 'with a song that cannot be found' do
118
116
  before :each do
@@ -11,5 +11,17 @@ describe Lyrics::Providers::Azlyrics do
11
11
  end
12
12
  end
13
13
  end
14
- # '.extract_lyric' happy path already tested in lyrics_finder_spec.rb
14
+
15
+ describe '.extract_lyric' do
16
+ # with valid data it's already tested in lyrics_finder_spec.rb
17
+ context 'with invalid data' do
18
+ let(:klass) { Lyrics::Providers::Azlyrics }
19
+
20
+ it 'raises a ContractError Exception' do
21
+ expect{
22
+ klass.extract_lyric(3.14)
23
+ }.to raise_error ContractError
24
+ end
25
+ end
26
+ end
15
27
  end
@@ -0,0 +1,27 @@
1
+ # encoding: UTF-8
2
+ describe Lyrics::Providers::LyricsMania do
3
+ describe '.format_url' do
4
+ context 'with valid author and title' do
5
+ let(:klass) { Lyrics::Providers::LyricsMania }
6
+ let(:song) { Lyrics::Song.new("amêricàn authors", "best day of my life") }
7
+ let(:valid_url) { "http://www.lyricsmania.com/best_day_of_my_life_lyrics_american_authors.html" }
8
+
9
+ it 'returns a properly formatted url' do
10
+ expect(klass.format_url(song)).to eq valid_url
11
+ end
12
+ end
13
+ end
14
+
15
+ describe '.extract_lyric' do
16
+ # with valid data it's already tested in lyrics_finder_spec.rb
17
+ context 'with invalid data' do
18
+ let(:klass) { Lyrics::Providers::LyricsMania }
19
+
20
+ it 'raises a ContractError Exception' do
21
+ expect{
22
+ klass.extract_lyric({})
23
+ }.to raise_error ContractError
24
+ end
25
+ end
26
+ end
27
+ end
@@ -11,5 +11,17 @@ describe Lyrics::Providers::SongLyrics do
11
11
  end
12
12
  end
13
13
  end
14
- # '.extract_lyric' happy path already tested in lyrics_finder_spec.rb
14
+
15
+ describe '.extract_lyric' do
16
+ # with valid data it's already tested in lyrics_finder_spec.rb
17
+ context 'with invalid data' do
18
+ let(:klass) { Lyrics::Providers::SongLyrics }
19
+
20
+ it 'raises a ContractError Exception' do
21
+ expect{
22
+ klass.extract_lyric([])
23
+ }.to raise_error ContractError
24
+ end
25
+ end
26
+ end
15
27
  end
data/spec/spec_helper.rb CHANGED
@@ -7,4 +7,5 @@ require 'lyrics_finder'
7
7
  require_relative 'support/vcr_setup'
8
8
  require_relative 'support/lyrics_wikia_sample_songs'
9
9
  require_relative 'support/azlyrics_sample_songs'
10
- require_relative 'support/song_lyrics_sample_songs'
10
+ require_relative 'support/song_lyrics_sample_songs'
11
+ require_relative 'support/lyrics_mania_sample_songs'
@@ -0,0 +1,52 @@
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
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.3.1
4
+ version: 0.0.4
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-06-29 00:00:00.000000000 Z
11
+ date: 2014-06-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -201,6 +201,7 @@ files:
201
201
  - lib/lyrics_finder/dependencies.rb
202
202
  - lib/lyrics_finder/providers.rb
203
203
  - lib/lyrics_finder/providers/azlyrics.rb
204
+ - lib/lyrics_finder/providers/lyrics_mania.rb
204
205
  - lib/lyrics_finder/providers/lyrics_wikia.rb
205
206
  - lib/lyrics_finder/providers/song_lyrics.rb
206
207
  - lib/lyrics_finder/song.rb
@@ -208,11 +209,13 @@ files:
208
209
  - lyrics_finder.gemspec
209
210
  - spec/lyrics_finder/lyrics_finder_spec.rb
210
211
  - spec/lyrics_finder/providers/azlyrics_spec.rb
212
+ - spec/lyrics_finder/providers/lyrics_mania_spec.rb
211
213
  - spec/lyrics_finder/providers/lyrics_wikia_spec.rb
212
214
  - spec/lyrics_finder/providers/song_lyrics_spec.rb
213
215
  - spec/lyrics_finder/providers_spec.rb
214
216
  - spec/spec_helper.rb
215
217
  - spec/support/azlyrics_sample_songs.rb
218
+ - spec/support/lyrics_mania_sample_songs.rb
216
219
  - spec/support/lyrics_wikia_sample_songs.rb
217
220
  - spec/support/song_lyrics_sample_songs.rb
218
221
  - spec/support/vcr_setup.rb
@@ -243,11 +246,13 @@ summary: Solution for finding song lyrics
243
246
  test_files:
244
247
  - spec/lyrics_finder/lyrics_finder_spec.rb
245
248
  - spec/lyrics_finder/providers/azlyrics_spec.rb
249
+ - spec/lyrics_finder/providers/lyrics_mania_spec.rb
246
250
  - spec/lyrics_finder/providers/lyrics_wikia_spec.rb
247
251
  - spec/lyrics_finder/providers/song_lyrics_spec.rb
248
252
  - spec/lyrics_finder/providers_spec.rb
249
253
  - spec/spec_helper.rb
250
254
  - spec/support/azlyrics_sample_songs.rb
255
+ - spec/support/lyrics_mania_sample_songs.rb
251
256
  - spec/support/lyrics_wikia_sample_songs.rb
252
257
  - spec/support/song_lyrics_sample_songs.rb
253
258
  - spec/support/vcr_setup.rb