blue_conductor 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format progress
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in blue_conductor.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 Alex Williams
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,52 @@
1
+ # BlueConductor
2
+
3
+ BlueConductor returns an object containing the name, band name and lyrics of a song.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'blue_conductor'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install blue_conductor
18
+
19
+ ## Usage
20
+
21
+ Usage is easy. Call .song_for on the BlueConductor object and pass in a band name and song title.
22
+
23
+ ```ruby
24
+ BlueConductor.song_for('The Dear Hunter', 'The Church and the Dime')
25
+ ```
26
+
27
+
28
+ Which will return a BlueConductor::Song object containing the following fields
29
+
30
+ * `title`
31
+ * `band`
32
+ * `lyrics`
33
+ * `error`
34
+
35
+ Calling title or band will return the information that you originally passed in to the BlueConductor. Calling .lyrics will return the lyrics of that song as provided by azlyrics.com. If the lyrics to a song you entered in either do not exist, are not on the azlyrics website or if there was a spelling error, then calling .lyrics will return a nil object and an error message will be placed in the .error field.
36
+
37
+ ##CLI
38
+
39
+ There is a lyrics file providing containing example information on how to use the gem from the terminal.
40
+
41
+ ## Future Installments
42
+
43
+ A future version of blue_conductor will come with a 'record_for' method that when passed a band name and the name of an album will return an array of song objects containing
44
+ the title, band name and lyrics of all the songs on that album.
45
+
46
+ ## Contributing
47
+
48
+ 1. Fork it
49
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
50
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
51
+ 4. Push to the branch (`git push origin my-new-feature`)
52
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,26 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "blue_conductor/version"
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "blue_conductor"
8
+ gem.version = BlueConductor::VERSION
9
+ gem.authors = ["Alex Williams", "Craig Williams"]
10
+ gem.email = ["alexwilliams4@me.com"]
11
+ gem.description = %q{Scrapes azLyrics.com for song lyrics}
12
+ gem.summary = %q{azlyrics.com scraper}
13
+ gem.homepage = ""
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib"]
19
+
20
+ gem.add_development_dependency 'rspec'
21
+ gem.add_development_dependency 'pry'
22
+ gem.add_development_dependency 'nokogiri'
23
+ gem.add_development_dependency 'vcr'
24
+ gem.add_development_dependency 'fakeweb'
25
+ gem.add_development_dependency 'rake'
26
+ end
@@ -0,0 +1,25 @@
1
+ require 'open-uri'
2
+ require 'nokogiri'
3
+
4
+ require_relative 'blue_conductor/version'
5
+ require_relative 'blue_conductor/band_manager'
6
+ require_relative 'blue_conductor/sanitizer'
7
+ require_relative 'blue_conductor/http/request'
8
+ require_relative 'blue_conductor/http/response'
9
+ require_relative 'blue_conductor/http/url_generator'
10
+ require_relative 'blue_conductor/song'
11
+
12
+ module BlueConductor
13
+ def self.song_for(band, song)
14
+ manager = BlueConductor::BandManager.new(band, song)
15
+ manager.url_generator = BlueConductor::HTTP::UrlGenerator
16
+ manager.request = BlueConductor::HTTP::Request
17
+ manager.parser = BlueConductor::HTTP::Response
18
+
19
+ manager.song!
20
+ end
21
+
22
+ def self.record_for(band, record_title)
23
+ # BlueConductor::BandManager.new(band, song).record!
24
+ end
25
+ end
@@ -0,0 +1,26 @@
1
+ module BlueConductor
2
+ class BandManager
3
+ attr_reader :band, :song, :data, :error
4
+ attr_accessor :url_generator, :request, :parser
5
+
6
+ def initialize(band, song)
7
+ @band = band
8
+ @song = song
9
+ @error = ''
10
+ @data = ''
11
+ end
12
+
13
+ def song!
14
+ url = url_generator.generate(self)
15
+ html = request.fetch(url)
16
+
17
+ if html
18
+ @data = parser.parse(html)
19
+ else
20
+ @error = 'The band/song does not exist || there was a spelling error'
21
+ end
22
+
23
+ BlueConductor::Song.new(self)
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,14 @@
1
+ module BlueConductor
2
+ module HTTP
3
+ class Request
4
+
5
+ def self.fetch(url)
6
+ begin
7
+ open(url)
8
+ rescue OpenURI::HTTPError
9
+ nil
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,11 @@
1
+ module BlueConductor
2
+ module HTTP
3
+ class Response
4
+
5
+ def self.parse(html)
6
+ doc = Nokogiri::HTML(html)
7
+ doc.css('div#main div')[3].text
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,14 @@
1
+ module BlueConductor
2
+ module HTTP
3
+ class UrlGenerator
4
+ BASE_URI = "http://www.azlyrics.com/lyrics/"
5
+
6
+ def self.generate(manager)
7
+ sanitizer = BlueConductor::Sanitizer.new(manager)
8
+ sanitizer.clean
9
+
10
+ "#{BASE_URI}#{sanitizer.band}/#{sanitizer.song}.html"
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,21 @@
1
+ module BlueConductor
2
+ class Sanitizer
3
+ UNWANTED_CHARS = %r([^a-zA-Z0-9])
4
+
5
+ attr_reader :band, :song
6
+
7
+ def initialize(manager)
8
+ @band = manager.band
9
+ @song = manager.song
10
+ end
11
+
12
+ def clean
13
+ @band = strip(@band).gsub("the", "")
14
+ @song = strip(@song)
15
+ end
16
+
17
+ def strip(str)
18
+ str.downcase.gsub(UNWANTED_CHARS, "")
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,12 @@
1
+ module BlueConductor
2
+ class Song
3
+ attr_accessor :title, :band, :lyrics, :error
4
+
5
+ def initialize(manager)
6
+ @title = manager.song
7
+ @band = manager.band
8
+ @lyrics = manager.data
9
+ @error = manager.error
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,3 @@
1
+ module BlueConductor
2
+ VERSION = "0.0.1"
3
+ end
data/lyric ADDED
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env ruby -w
2
+
3
+ require 'blue_conductor'
4
+
5
+ if ARGV.count == 0
6
+ puts "You must provide a band and song name"
7
+ exit
8
+ end
9
+
10
+ band = ARGV.first
11
+ song = ARGV.last
12
+
13
+ track = BlueConductor.song_for(band, song)
14
+
15
+ puts '*'*100
16
+ puts "Band: #{track.band}"
17
+ puts "Title: #{track.title}"
18
+ puts "Lyrics:"
19
+ puts '-'*100
20
+ puts track.lyrics
21
+ puts '*'*100
22
+
@@ -0,0 +1,53 @@
1
+ require 'spec_helper'
2
+
3
+ describe BlueConductor::BandManager do
4
+ subject { BlueConductor::BandManager.new(band, song) }
5
+
6
+ let(:band) { 'The Dear Hunter' }
7
+ let(:song) { 'Red Hands' }
8
+ let(:data) { "Even if you never strayed from me\nI'd question your fidelity" }
9
+ let(:manager_mock) { mock(band: band, song: song, data: data) }
10
+ let(:song_object) { BlueConductor::Song.new(manager_mock) }
11
+
12
+ before do
13
+ subject.url_generator = BlueConductor::HTTP::UrlGenerator
14
+ subject.request = BlueConductor::HTTP::Request
15
+ subject.parser = BlueConductor::HTTP::Response
16
+ end
17
+
18
+ describe '.new' do
19
+ it 'creates an instance of itself' do
20
+ subject.band.should == band
21
+ subject.song.should == song
22
+ end
23
+ end
24
+
25
+ describe '#song' do
26
+ context "when the name and band are valid" do
27
+ it 'returns a song object' do
28
+ VCR.use_cassette 'song' do
29
+ @track = subject.song!
30
+ end
31
+
32
+ @track.title.should == song
33
+ @track.band.should == band
34
+ @track.lyrics.should =~ /#{data}/
35
+ end
36
+ end
37
+
38
+ context "when the name and or band are invalid" do
39
+ let(:band) { 'asdf' }
40
+ let(:song) { 'asdf' }
41
+
42
+ it 'the error field has content' do
43
+ VCR.use_cassette 'invalid_song' do
44
+ @track = subject.song!
45
+ end
46
+
47
+ @track.error.should =~ /does not exist/
48
+ @track.title.should == song
49
+ @track.band.should == band
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ describe BlueConductor do
4
+ subject { BlueConductor }
5
+
6
+ let(:band) { 'AC/DC' }
7
+ let(:song) { 'Back in Black' }
8
+
9
+ describe '.song_for' do
10
+ it 'returns a song object' do
11
+ VCR.use_cassette 'blue_conductor_song' do
12
+ @track = subject.song_for(band, song)
13
+ end
14
+
15
+ @track.band.should == band
16
+ @track.title.should == song
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,136 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://www.azlyrics.com/lyrics/acdc/backinblack.html
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ accept:
11
+ - ! '*/*'
12
+ user-agent:
13
+ - Ruby
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ server:
20
+ - nginx/1.2.6
21
+ date:
22
+ - Sun, 23 Dec 2012 03:07:04 GMT
23
+ content-type:
24
+ - text/html
25
+ transfer-encoding:
26
+ - chunked
27
+ connection:
28
+ - keep-alive
29
+ body:
30
+ encoding: US-ASCII
31
+ string: ! "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"
32
+ \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\"
33
+ xml:lang=\"en\" lang=\"en\">\r\n<head>\r\n<title>AC/DC LYRICS - Back In Black</title>\r\n<meta
34
+ http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\r\n<meta
35
+ name=\"description\" content=\"Lyrics to &quot;Back In Black&quot; song by
36
+ AC/DC: Back in black I hit the sack I been too long I'm glad to be back Yes
37
+ I am Let loose from the noose T...\" /> \r\n<meta name=\"keywords\" content=\"Back
38
+ In Black lyrics, AC/DC Back In Black lyrics, AC/DC lyrics\" />\r\n<meta name=\"robots\"
39
+ content=\"noarchive\" />\r\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../azl.css\"
40
+ />\r\n<script type=\"text/javascript\" src=\"http://www.azlyrics.com/external.js\"></script>\r\n<script
41
+ type=\"text/javascript\" src=\"http://images.azlyrics.com/head.js\"></script>\r\n<script
42
+ type=\"text/javascript\" language=\"JavaScript\">\r\nArtistName = \"AC/DC\";\r\nSongName
43
+ = \"Back In Black\";\r\n</script>\r\n</head>\r\n<body>\r\n<div id=\"h1head\"><h1>\"Back
44
+ In Black\" lyrics</h1></div>\r\n\r\n<div id=\"main\">\r\n<script type=\"text/javascript\"
45
+ src=\"http://images.azlyrics.com/top_rock.js\"></script>\r\n\r\n<!-- flex
46
+ -->\r\n<script>\r\ncf_page_artist = ArtistName;\r\ncf_page_song = SongName;\r\ncf_page_genre
47
+ = \"\";\r\ncf_adunit_id = \"39381789\";\r\ncf_flex = true;\r\n</script>\r\n<script
48
+ src=\"http://srv.clickfuse.com/showads/showad.php\"></script>\r\n<!-- flex
49
+ end -->\r\n\r\n<!-- AddThis Button BEGIN -->\r\n<iframe src=\"http://www.facebook.com/plugins/like.php?href=http://www.azlyrics.com/lyrics/acdc/backinblack.html&amp;layout=button_count&amp;show_faces=false&amp;width=140&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21\"
50
+ scrolling=\"no\" frameborder=\"0\" style=\"float:left; border:none; overflow:hidden;
51
+ width:140px; height:21px;\" allowTransparency=\"true\"></iframe>\r\n<script
52
+ type=\"text/javascript\">\r\n<!--\r\nvar addthis_config = {\r\n services_custom:
53
+ {\r\n name: \"Amazon\",\r\n url: \"http://www.amazon.com/gp/search?ie=UTF8&keywords=AC/DC%20Back+In+Black&tag=azlyricsunive-20&index=digital-music&linkCode=ur2&camp=1789&creative=9325\",\r\n
54
+ \ icon: \"http://images.azlyrics.com/play.gif\"}\r\n}\r\n// -->\r\n</script>\r\n<div
55
+ class=\"addthis_toolbox addthis_default_style\" style=\"float:right;\">\r\n\t<a
56
+ class=\"addthis_button_www.amazon.com\" title=\"Get MP3!\" style=\"text-decoration:none;
57
+ color: black;\">MP3&nbsp;</a> \r\n\t<a class=\"addthis_button_email\">Email&nbsp;</a>\r\n\t<a
58
+ class=\"addthis_button_print\">Print</a>\r\n</div>\r\n<script type=\"text/javascript\"
59
+ src=\"http://s7.addthis.com/js/300/addthis_widget.js#username=azlyrics\"></script>\r\n\r\n<!--
60
+ AddThis Button END -->\r\n\r\n<!-- JANGO PLAYER -->\r\n<div style=\"clear:both;\">\r\n<iframe
61
+ width=\"325\" scrolling=\"no\" height=\"38\" frameborder=\"0\" vspace=\"0\"
62
+ hspace=\"0\" allowTransparency=\"true\" marginwidth=\"0\" marginheight=\"0\"
63
+ style=\"border: 0px none; padding:5px 0 30px;\" src=\"http://jmn.jangonetwork.com/az?cust_params=j_artist=AC/DC&amp;j_title=Back
64
+ In Black\"></iframe><br />\r\n</div>\r\n<!-- END OF JANGO PLAYER -->\r\n\r\n<h2>AC/DC
65
+ LYRICS</h2>\r\n\r\n<div class=\"ringtone\">\r\n<img src=\"http://images.azlyrics.com/phone.gif\"
66
+ width=\"16\" height=\"17\" alt=\"Back In Black Ringtone\" />&nbsp;<a href=\"http://www.ringtonematcher.com/co/ringtonematcher/02/noc.asp?sid=DVAZros&amp;artist=AC/DC&amp;song=Back+In+Black\"
67
+ class=\"Ringtones\">Send \"Back In Black\" Ringtone to your Cell</a>&nbsp;<img
68
+ src=\"http://images.azlyrics.com/phone_flip.gif\" width=\"16\" height=\"17\"
69
+ alt=\"Back In Black Ringtone\" />\r\n</div>\r\n\r\n<b>\"Back In Black\"</b><br
70
+ />\r\n\r\n<br />\r\n\r\n<div style=\"margin-left:10px;margin-right:10px;\">\r\n<!--
71
+ start of lyrics -->\r\nBack in black I hit the sack<br />\nI been too long
72
+ I'm glad to be back<br />\nYes I am<br />\nLet loose from the noose<br />\nThat's
73
+ kept me hanging about<br />\nI keep looking at the sky cause it's gettin'
74
+ me high<br />\nForget the hearse cause I'll never die<br />\nI got nine lives
75
+ cat's eyes<br />\nUsing every one of them and runnin' wild<br />\nCause I'm
76
+ back<br />\nYes I'm back well I'm back<br />\nYes I'm back<br />\nWell I'm
77
+ back back<br />\nWell I'm back in black<br />\nYes I'm back in black<br />\nBack
78
+ in the back of a Cadillac<br />\nNumber one with a bullet I'm a power pack<br
79
+ />\nYes I am<br />\nIn a bang with the gang<br />\nThey gotta catch me if
80
+ they want me to hang<br />\nCause I'm back on the track and I'm beatin' the
81
+ flack<br />\nNobody's gonna get me on another rap<br />\nSo look at me now
82
+ I'm just makin' my play<br />\nDon't try to push your luck just get out of
83
+ my way<br />\nCause I'm back<br />\nYes I'm back<br />\nWell I'm back<br />\nYes
84
+ I'm back<br />\nWell I'm back back<br />\nWell I'm back in black<br />\nYes
85
+ I'm back in black<br />\n<br />\nWell I'm back yes I'm back<br />\nWell I'm
86
+ back yes I'm back<br />\nWell I'm back back<br />\nWell I'm back in black<br
87
+ />\nYes I'm back in black<br />\n<br />\nOh yes, let's go<br />\nGigolo<br
88
+ />\nOh yeah, yeah, give it up<br />\nYeah-eah-eah, give it up<br />\n<br />\nWell
89
+ I'm back back<br />\nWell I'm back back<br />\nBack back<br />\nBack in black<br
90
+ />\nYes I'm back in black<br />\n<br />\nOutta sight\r\n<!-- end of lyrics
91
+ -->\r\n</div>\r\n\r\n<br /><br /><br /><br />\r\n\r\n\r\n<span class=\"smallfont\">Thanks
92
+ to Artem Zinin for correcting these lyrics.<br /></span>\n\r\n\r\n<form action=\"../../add.php\"
93
+ method=\"post\" id=\"corlyr\">\r\n<input type=\"hidden\" name=\"what\" value=\"correct_lyrics\"
94
+ />\r\n<input type=\"hidden\" name=\"song_id\" value=\"244563\" />\r\n</form>\r\n\r\n<br
95
+ />\r\n<div class=\"bmenu\"><ul>\r\n\r\n<li><a href=\"#\" onclick=\"document.getElementById('corlyr').submit();return
96
+ false;\">Submit Corrections</a></li>\r\n<li><a href=\"http://www.azlyrics.com/a/acdc.html\">AC/DC
97
+ Lyrics</a></li>\r\n<li class=\"mlast\"><a class=\"main\" href=\"http://www.azlyrics.com\">A-Z
98
+ Lyrics</a></li>\r\n</ul></div>\r\n\r\n<div class=\"ringtone\">\r\n<img src=\"http://images.azlyrics.com/phone.gif\"
99
+ width=\"16\" height=\"17\" alt=\"Back In Black Ringtone\" />&nbsp;<a href=\"http://www.ringtonematcher.com/co/ringtonematcher/02/noc.asp?sid=DVAZros&amp;artist=AC/DC&amp;song=Back+In+Black\"
100
+ class=\"Ringtones\">Send \"Back In Black\" Ringtone to your Cell</a>&nbsp;<img
101
+ src=\"http://images.azlyrics.com/phone_flip.gif\" width=\"16\" height=\"17\"
102
+ alt=\"Back In Black Ringtone\" />\r\n</div>\r\n\r\n<!-- AddThis Button BEGIN
103
+ -->\r\n<iframe src=\"http://www.facebook.com/plugins/like.php?href=http://www.azlyrics.com/lyrics/acdc/backinblack.html&amp;layout=button_count&amp;show_faces=false&amp;width=140&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21\"
104
+ scrolling=\"no\" frameborder=\"0\" style=\"float:left; border:none; overflow:hidden;
105
+ width:140px; height:21px;\" allowTransparency=\"true\"></iframe>\r\n<script
106
+ type=\"text/javascript\">\r\n<!--\r\nvar addthis_config = {\r\n services_custom:
107
+ {\r\n name: \"Amazon\",\r\n url: \"http://www.amazon.com/gp/search?ie=UTF8&keywords=AC/DC%20Back+In+Black&tag=azlyricsunive-20&index=digital-music&linkCode=ur2&camp=1789&creative=9325\",\r\n
108
+ \ icon: \"http://images.azlyrics.com/play.gif\"}\r\n}\r\n// -->\r\n\r\n</script>\r\n<div
109
+ class=\"addthis_toolbox addthis_default_style\" style=\"float:right;\">\r\n\t<a
110
+ class=\"addthis_button_www.amazon.com\" title=\"Get MP3!\" style=\"text-decoration:none;
111
+ color: black;\">MP3&nbsp;</a> \r\n\t<a class=\"addthis_button_email\">Email&nbsp;</a>\r\n\t<a
112
+ class=\"addthis_button_print\">Print</a>\r\n</div>\r\n<script type=\"text/javascript\"
113
+ src=\"http://s7.addthis.com/js/300/addthis_widget.js#username=azlyrics\"></script>\r\n<!--
114
+ AddThis Button END -->\r\n<div class=\"cb\"></div>\r\n\r\n<form class=\"search\"
115
+ method=\"get\" action=\"http://search.azlyrics.com/search.php\">\r\n\r\nEnter
116
+ artist/album/song to search lyrics for:<div class=\"search_wr\"><input id=\"q\"
117
+ name=\"q\" class=\"search_text\" type=\"text\" value=\"\" /><button class=\"search_btn\"
118
+ type=\"submit\"></button><div id=\"qas\"></div></div>\r\n</form>\r\n\r\n<script
119
+ type=\"text/javascript\" src=\"http://images.azlyrics.com/bot_rock.js\"></script>\r\n\r\n<div
120
+ class=\"smenu\"><ul>\r\n<li><a href=\"http://www.azlyrics.com/adv.html\">Advertise
121
+ Here</a></li>\r\n<li><a href=\"http://www.azlyrics.com/privacy.html\">Privacy
122
+ Policy</a></li>\r\n<li><a href=\"http://www.azlyrics.com/copyright.html\">DMCA
123
+ Policy</a></li>\r\n<li class=\"mlast\"><a href=\"http://www.azlyrics.com/contact.html\">Contact
124
+ Us</a></li>\r\n</ul></div>\r\n<div class=\"copyright\">AC/DC lyrics are property
125
+ and copyright of their owners.<br />\"Back In Black\" lyrics provided for
126
+ educational purposes and personal use only.<br />\r\n\r\n<script type=\"text/javascript\"><!--\r\ncurdate=new
127
+ Date();\r\ndocument.write(\"<b>Copyright &copy; 2000-\"+curdate.getFullYear()+\"
128
+ AZLyrics.com<\\/b>\"); // -->\r\n</script>\r\n</div>\r\n\r\n</div>\r\n<script
129
+ type=\"text/javascript\">\r\n<!--\r\nvar gaJsHost = ((\"https:\" == document.location.protocol)
130
+ ? \"https://ssl.\" : \"http://www.\");\r\ndocument.write(unescape(\"%3Cscript
131
+ src='\" + gaJsHost + \"google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E\"));\r\n//
132
+ \ -->\r\n</script>\r\n<script type=\"text/javascript\">\r\n<!--\r\ntry {\r\nvar
133
+ pageTracker = _gat._getTracker(\"UA-4309237-1\");\r\npageTracker._setDomainName(\".azlyrics.com\");\r\npageTracker._trackPageview();\r\n}
134
+ catch(err) {}\r\n// -->\r\n</script>\r\n</body>\r\n</html>\r\n\n</script>\r\n</body>\r\n</html>\r\n"
135
+ http_version: '1.1'
136
+ recorded_at: Sun, 23 Dec 2012 03:07:05 GMT
@@ -0,0 +1,133 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://www.azlyrics.com/lyrics/asdf/asdf.html
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ accept:
11
+ - ! '*/*'
12
+ user-agent:
13
+ - Ruby
14
+ response:
15
+ status:
16
+ code: 404
17
+ message: Not Found
18
+ headers:
19
+ server:
20
+ - nginx/1.2.6
21
+ date:
22
+ - Sun, 23 Dec 2012 03:34:11 GMT
23
+ content-type:
24
+ - text/html
25
+ transfer-encoding:
26
+ - chunked
27
+ connection:
28
+ - keep-alive
29
+ body:
30
+ encoding: US-ASCII
31
+ string: ! "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"
32
+ \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\"
33
+ xml:lang=\"en\" lang=\"en\">\r\n<head>\r\n<meta http-equiv=\"Content-Type\"
34
+ content=\"text/html; charset=utf-8\" />\r\n<meta http-equiv=\"Content-Style-Type\"
35
+ content=\"text/css\" />\r\n<meta name=\"robots\" content=\"noarchive\" />\r\n<meta
36
+ name=\"name\" content=\"A-Z Lyrics Universe\" />\r\n<meta name=\"keywords\"
37
+ content=\"lyrics,music,song lyrics,songs,paroles\" /> \r\n\r\n<base href=\"http://www.azlyrics.com\"
38
+ /> \r\n\r\n<script type=\"text/javascript\" src=\"http://www.azlyrics.com/external.js\"></script>\r\n\r\n<title>A-Z
39
+ Lyrics Universe</title>\r\n\r\n<link rel=\"stylesheet\" type=\"text/css\"
40
+ href=\"a.css\" />\r\n\r\n<script type=\"text/javascript\">\r\n<!-- \r\nif
41
+ (top.location != self.location) {\r\ntop.location = self.location.href\r\n}\r\n//-->
42
+ \r\n</script>\r\n<script type=\"text/javascript\" src=\"http://images.azlyrics.com/head.js\"></script>\r\n\r\n</head>\r\n<body>\r\n<div
43
+ id=\"main\">\r\n<div id=\"col\">\r\n<a href=\"http://www.azlyrics.com/\"><img
44
+ src=\"http://images.azlyrics.com/logo.gif\" alt=\"AZLyrics.com\" /></a>\r\n<script
45
+ type=\"text/javascript\">\r\ncf_page_artist = \"\";\r\ncf_page_song = \"\";\r\ncf_adunit_id
46
+ = \"39381147\";\r\n</script>\r\n<script type=\"text/javascript\" src=\"http://srv.clickfuse.com/showads/showad.php\"></script>\r\n\r\n<div
47
+ class=\"sites\">\r\nRecommended sites!<br /><br />\r\n<script type=\"text/javascript\"
48
+ src=\"http://www.azlyrics.com/new/rec.js\"></script>\r\n</div>\r\n</div>\r\n\r\n<div
49
+ id=\"cnt\">\r\n\r\n<script type=\"text/javascript\">\r\ncf_page_artist = \"\";\r\ncf_page_song
50
+ = \"\";\r\ncf_adunit_id = \"39380956\";\r\n</script>\r\n<script type=\"text/javascript\"
51
+ src=\"http://srv.clickfuse.com/showads/showad.php\"></script>\r\n\r\n<ul class=\"menu\">\r\n<li><a
52
+ href=\"http://www.requestlyrics.com/\">Request Lyrics</a></li>\r\n<li><a href=\"/add.php\">Submit
53
+ / Correct Lyrics</a></li>\r\n<li><a href=\"http://www.stlyrics.com/\">Soundtracks</a></li>\r\n<li><a
54
+ href=\"http://www.azvideos.com/\">Music Videos</a></li>\r\n<li><a href=\"http://www.facebook.com/pages/AZLyricscom/154139197951223\">Facebook</a></li>\r\n<li
55
+ class=\"mlast\"><a href=\"/links.html\">Links</a></li>\r\n</ul>\r\n<div class=\"listrow\">\r\n<a
56
+ class=\"lrb\" href=\"/a.html\">A</a><a href=\"/b.html\">B</a><a href=\"/c.html\">C</a><a
57
+ href=\"/d.html\">D</a><a href=\"/e.html\">E</a><a href=\"/f.html\">F</a><a
58
+ href=\"/g.html\">G</a><a href=\"/h.html\">H</a><a href=\"/i.html\">I</a><a
59
+ href=\"/j.html\">J</a><a href=\"/k.html\">K</a><a href=\"/l.html\">L</a><a
60
+ href=\"/m.html\">M</a><a href=\"/n.html\">N</a><a href=\"/o.html\">O</a><a
61
+ href=\"/p.html\">P</a><a href=\"/q.html\">Q</a><a href=\"/r.html\">R</a><a
62
+ href=\"/s.html\">S</a><a href=\"/t.html\">T</a><a href=\"/u.html\">U</a><a
63
+ href=\"/v.html\">V</a><a href=\"/w.html\">W</a><a href=\"/x.html\">X</a><a
64
+ href=\"/y.html\">Y</a><a href=\"/z.html\">Z</a><a href=\"/19.html\">#</a>\r\n</div>\r\n<form
65
+ class=\"search\" method=\"get\" action=\"http://search.azlyrics.com/search.php\">\r\nBrowse
66
+ by artist name or enter artist/album/song to search lyrics for:<div class=\"search_wr\"><input
67
+ id=\"q\" name=\"q\" class=\"search_text\" type=\"text\" value=\"\" /><button
68
+ class=\"search_btn\" type=\"submit\"></button><div id=\"qas\"></div></div>\r\n</form>\r\n\r\n<div
69
+ id=\"inn\">\r\n\r\n<div class=\"rcol\">\r\n<iframe src=\"http://www.facebook.com/plugins/likebox.php?href=http%3A%2F%2Fwww.facebook.com%2Fpages%2FAZLyricscom%2F154139197951223&amp;width=230&amp;connections=0&amp;stream=false&amp;header=false&amp;height=70\"
70
+ scrolling=\"no\" frameborder=\"0\" style=\"border:none !important; overflow:hidden;
71
+ width:230px; height:70px;\" allowTransparency=\"true\"></iframe>\r\n\r\n<script
72
+ type=\"text/javascript\">\r\ncf_page_artist = \"\";\r\ncf_page_song = \"\";\r\ncf_adunit_id
73
+ = \"39381148\";\r\n</script>\r\n<script type=\"text/javascript\" src=\"http://srv.clickfuse.com/showads/showad.php\"></script>\r\n\r\n</div>\r\n\r\n<div
74
+ class=\"title\">Welcome to the A-Z LYRICS UNIVERSE !<br /></div>\r\nIt's a
75
+ place where all searches end!<br /><br />\r\nWe have a large, every day growing
76
+ universe of lyrics<br />where stars of all genres and ages shine.<br /><br
77
+ />\r\n<div class=\"tblock\"><img src=\"http://images.azlyrics.com/req.gif\"
78
+ alt=\"Request Lyrics\" class=\"icon\" />Use <a href=\"http://www.requestlyrics.com/\">Lyrics
79
+ Request Section</a> to request lyrics that you didn't find here. We have 90%
80
+ successful request answers.</div>\r\n<div class=\"tblock\"><img src=\"http://images.azlyrics.com/add.gif\"
81
+ alt=\"Add Lyrics\" class=\"icon\" />You can <a href=\"add.php\">Submit Lyrics</a>
82
+ to this site, it's as easy as requesting. If you found any mistakes in some
83
+ of our lyrics you can always <a href=\"add.php\">Correct</a> them.</div>\r\n<div
84
+ class=\"tblock\"><img src=\"http://images.azlyrics.com/gb.gif\" alt=\"Music
85
+ Videos\" class=\"icon\" />...and don't forget to visit our <a href=\"http://www.azvideos.com\">Music
86
+ Videos</a> section! Watch thousands of videos from all of your favorite artists
87
+ online.</div>\r\n\r\n<div class=\"cb\"></div>\r\n<br />\r\n<p class=\"title\">WHAT'S
88
+ HOT?</p>\r\n\r\n<div class=\"albuma\"><a href=\"/b/brunomars.html\"><img src=\"http://www.azlyrics.com/hot/51Jc2v9ndpL.jpg\"
89
+ alt=\"\" /></a><a href=\"/b/brunomars.html\">BRUNO MARS</a>\"Unorthodox Jukebox\"</div>\r\n<div
90
+ class=\"albuma\"><a href=\"/g/greenday.html\"><img src=\"http://www.azlyrics.com/hot/61e3FaHueCL.jpg\"
91
+ alt=\"\" /></a><a href=\"/g/greenday.html\">GREEN DAY</a>\"Tre!\"</div>\r\n<div
92
+ class=\"albuma\"><a href=\"/w/wizkhalifa.html\"><img src=\"http://www.azlyrics.com/hot/51txE4tjK2L.jpg\"
93
+ alt=\"\" /></a><a href=\"/w/wizkhalifa.html\">WIZ KHALIFA</a>\"O.N.I.F.C.\"</div>\r\n<div
94
+ class=\"albuma\"><a href=\"/k/keha.html\"><img src=\"http://www.azlyrics.com/hot/61VQEavlx6L.jpg\"
95
+ alt=\"\" /></a><a href=\"/k/keha.html\">KE$HA</a>\"Warrior\"</div>\r\n<div
96
+ class=\"cb\"></div>\r\n\r\n<div class=\"albuma\"><a href=\"/g/gleecast.html\"><img
97
+ src=\"http://www.azlyrics.com/hot/51jYK01CKtL.jpg\" alt=\"\" /></a><a href=\"/g/gleecast.html\">GLEE
98
+ CAST</a>\"Glee: The Music, Season 4, Volume 1\"</div>\r\n<div class=\"albuma\"><a
99
+ href=\"/a/aliciakeys.html\"><img src=\"http://www.azlyrics.com/hot/41yP8XbH0L.jpg\"
100
+ alt=\"\" /></a><a href=\"/a/aliciakeys.html\">ALICIA KEYS</a>\"Girl On Fire\"</div>\r\n<div
101
+ class=\"albuma\"><a href=\"/p/phillipphillips.html\"><img src=\"http://www.azlyrics.com/hot/51jcNnYhZRL.jpg\"
102
+ alt=\"\" /></a><a href=\"/p/phillipphillips.html\">PHILLIP PHILLIPS</a>\"The
103
+ World From The Side Of The Moon\"</div>\r\n<div class=\"albuma\"><a href=\"/l/littlemix.html\"><img
104
+ src=\"http://www.azlyrics.com/hot/51n2YfrnJL.jpg\" alt=\"\" /></a><a href=\"/l/littlemix.html\">LITTLE
105
+ MIX</a>\"DNA\"</div>\r\n<div class=\"cb\"></div>\r\n\r\n<div class=\"albuma\"><a
106
+ href=\"/r/rihanna.html\"><img src=\"http://www.azlyrics.com/hot/51Vh7IJYhL.jpg\"
107
+ alt=\"\" /></a><a href=\"/r/rihanna.html\">RIHANNA</a>\"Unapologetic\"</div>\r\n<div
108
+ class=\"albuma\"><a href=\"/p/pitbull.html\"><img src=\"http://www.azlyrics.com/hot/510WIpjZCML.jpg\"
109
+ alt=\"\" /></a><a href=\"/p/pitbull.html\">PITBULL</a>\"Global Warming\"</div>\r\n<div
110
+ class=\"albuma\"><a href=\"/n/nickiminaj.html\"><img src=\"http://www.azlyrics.com/hot/Nicki_Minaj.jpg\"
111
+ alt=\"\" /></a><a href=\"/n/nickiminaj.html\">NICKI MINAJ</a>\"Pink Friday:
112
+ Roman Reloaded - The Re-Up\"</div>\r\n<div class=\"albuma\"><a href=\"/d/deftones.html\"><img
113
+ src=\"http://www.azlyrics.com/hot/519jbrVnMHL.jpg\" alt=\"\" /></a><a href=\"/d/deftones.html\">DEFTONES</a>\"Koi
114
+ No Yokan\"</div>\r\n<div class=\"cb\"></div>\r\n\r\n<script type=\"text/javascript\"
115
+ src=\"http://images.azlyrics.com/bot_az.js\"></script>\r\n\r\n</div>\r\n\r\n<div
116
+ class=\"smenu\"><ul>\r\n<li><a href=\"http://www.azlyrics.com/adv.html\">Advertise
117
+ Here</a></li>\r\n<li><a href=\"http://www.azlyrics.com/privacy.html\">Privacy
118
+ Policy</a></li>\r\n<li><a href=\"http://www.azlyrics.com/copyright.html\">DMCA
119
+ Policy</a></li>\r\n<li class=\"mlast\"><a href=\"http://www.azlyrics.com/contact.html\">Contact
120
+ Us</a></li>\r\n</ul></div>\r\n<div class=\"copyright\">All lyrics are property
121
+ and copyright of their owners. All lyrics provided for educational purposes
122
+ only.<br />\r\n<script type=\"text/javascript\"><!--\r\ncurdate=new Date();\r\ndocument.write(\"<b>Copyright
123
+ &copy; 2000-\"+curdate.getFullYear()+\" AZLyrics.com<\\/b>\"); // -->\r\n</script>\r\n</div>\r\n\r\n</div>\r\n<div
124
+ class=\"cb\"></div>\r\n\r\n</div>\r\n\r\n<script type=\"text/javascript\">\r\n<!--\r\nvar
125
+ gaJsHost = ((\"https:\" == document.location.protocol) ? \"https://ssl.\"
126
+ : \"http://www.\");\r\ndocument.write(unescape(\"%3Cscript src='\" + gaJsHost
127
+ + \"google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E\"));\r\n//
128
+ \ -->\r\n</script>\r\n<script type=\"text/javascript\">\r\n<!--\r\ntry {\r\nvar
129
+ pageTracker = _gat._getTracker(\"UA-4309237-1\");\r\npageTracker._trackPageview();\r\n}
130
+ catch(err) {}\r\n// -->\r\n</script>\r\n</body>\r\n</html>"
131
+ http_version: '1.1'
132
+ recorded_at: Sun, 23 Dec 2012 03:34:11 GMT
133
+ recorded_with: VCR 2.3.0
@@ -0,0 +1,152 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://www.azlyrics.com/lyrics/dearhunter/redhands.html
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ accept:
11
+ - ! '*/*'
12
+ user-agent:
13
+ - Ruby
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ server:
20
+ - nginx/1.2.6
21
+ date:
22
+ - Sun, 23 Dec 2012 02:48:54 GMT
23
+ content-type:
24
+ - text/html
25
+ transfer-encoding:
26
+ - chunked
27
+ connection:
28
+ - keep-alive
29
+ body:
30
+ encoding: US-ASCII
31
+ string: ! "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"
32
+ \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\"
33
+ xml:lang=\"en\" lang=\"en\">\r\n<head>\r\n<title>THE DEAR HUNTER LYRICS -
34
+ Red Hands</title>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html;
35
+ charset=utf-8\" />\r\n<meta name=\"description\" content=\"Lyrics to &quot;Red
36
+ Hands&quot; song by THE DEAR HUNTER: Even if you never strayed from me I'd
37
+ question your fidelity There'd always be a shroud of suspicion...\" /> \r\n<meta
38
+ name=\"keywords\" content=\"Red Hands lyrics, THE DEAR HUNTER Red Hands lyrics,
39
+ THE DEAR HUNTER lyrics\" />\r\n<meta name=\"robots\" content=\"noarchive\"
40
+ />\r\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../azl.css\" />\r\n<script
41
+ type=\"text/javascript\" src=\"http://www.azlyrics.com/external.js\"></script>\r\n<script
42
+ type=\"text/javascript\" src=\"http://images.azlyrics.com/head.js\"></script>\r\n<script
43
+ type=\"text/javascript\" language=\"JavaScript\">\r\nArtistName = \"THE DEAR
44
+ HUNTER\";\r\nSongName = \"Red Hands\";\r\n</script>\r\n</head>\r\n<body>\r\n<div
45
+ id=\"h1head\"><h1>\"Red Hands\" lyrics</h1></div>\r\n\r\n<div id=\"main\">\r\n<script
46
+ type=\"text/javascript\" src=\"http://images.azlyrics.com/top_rock.js\"></script>\r\n\r\n<!--
47
+ flex -->\r\n<script>\r\ncf_page_artist = ArtistName;\r\ncf_page_song = SongName;\r\ncf_page_genre
48
+ = \"\";\r\ncf_adunit_id = \"39381789\";\r\ncf_flex = true;\r\n</script>\r\n<script
49
+ src=\"http://srv.clickfuse.com/showads/showad.php\"></script>\r\n<!-- flex
50
+ end -->\r\n\r\n<!-- AddThis Button BEGIN -->\r\n<iframe src=\"http://www.facebook.com/plugins/like.php?href=http://www.azlyrics.com/lyrics/dearhunter/redhands.html&amp;layout=button_count&amp;show_faces=false&amp;width=140&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21\"
51
+ scrolling=\"no\" frameborder=\"0\" style=\"float:left; border:none; overflow:hidden;
52
+ width:140px; height:21px;\" allowTransparency=\"true\"></iframe>\r\n<script
53
+ type=\"text/javascript\">\r\n<!--\r\nvar addthis_config = {\r\n services_custom:
54
+ {\r\n name: \"Amazon\",\r\n url: \"http://www.amazon.com/gp/search?ie=UTF8&keywords=THE+DEAR+HUNTER%20Red+Hands&tag=azlyricsunive-20&index=digital-music&linkCode=ur2&camp=1789&creative=9325\",\r\n
55
+ \ icon: \"http://images.azlyrics.com/play.gif\"}\r\n}\r\n// -->\r\n</script>\r\n<div
56
+ class=\"addthis_toolbox addthis_default_style\" style=\"float:right;\">\r\n\t<a
57
+ class=\"addthis_button_www.amazon.com\" title=\"Get MP3!\" style=\"text-decoration:none;
58
+ color: black;\">MP3&nbsp;</a> \r\n\t<a class=\"addthis_button_email\">Email&nbsp;</a>\r\n\t<a
59
+ class=\"addthis_button_print\">Print</a>\r\n</div>\r\n<script type=\"text/javascript\"
60
+ src=\"http://s7.addthis.com/js/300/addthis_widget.js#username=azlyrics\"></script>\r\n\r\n<!--
61
+ AddThis Button END -->\r\n\r\n<!-- JANGO PLAYER -->\r\n<div style=\"clear:both;\">\r\n<iframe
62
+ width=\"325\" scrolling=\"no\" height=\"38\" frameborder=\"0\" vspace=\"0\"
63
+ hspace=\"0\" allowTransparency=\"true\" marginwidth=\"0\" marginheight=\"0\"
64
+ style=\"border: 0px none; padding:5px 0 30px;\" src=\"http://jmn.jangonetwork.com/az?cust_params=j_artist=THE
65
+ DEAR HUNTER&amp;j_title=Red Hands\"></iframe><br />\r\n</div>\r\n<!-- END
66
+ OF JANGO PLAYER -->\r\n\r\n<h2>THE DEAR HUNTER LYRICS</h2>\r\n\r\n<div class=\"ringtone\">\r\n<img
67
+ src=\"http://images.azlyrics.com/phone.gif\" width=\"16\" height=\"17\" alt=\"Red
68
+ Hands Ringtone\" />&nbsp;<a href=\"http://www.ringtonematcher.com/co/ringtonematcher/02/noc.asp?sid=DVAZros&amp;artist=THE+DEAR+HUNTER&amp;song=Red+Hands\"
69
+ class=\"Ringtones\">Send \"Red Hands\" Ringtone to your Cell</a>&nbsp;<img
70
+ src=\"http://images.azlyrics.com/phone_flip.gif\" width=\"16\" height=\"17\"
71
+ alt=\"Red Hands Ringtone\" />\r\n</div>\r\n\r\n<b>\"Red Hands\"</b><br />\r\n\r\n<br
72
+ />\r\n\r\n<div style=\"margin-left:10px;margin-right:10px;\">\r\n<!-- start
73
+ of lyrics -->\r\nEven if you never strayed from me<br />\nI'd question your
74
+ fidelity<br />\nThere'd always be a shroud of suspicion<br />\nAnd my heart's
75
+ a liability<br />\n<br />\nWith your hands marooned so freshly red<br />\nYou'd
76
+ wrap your lips around my neck<br />\nTry and forced to love the thought of
77
+ me<br />\nSimple motions make me ill<br />\n<br />\nWas it bitter when you
78
+ tossed and turned<br />\nOn his under cover mattress, <br />\nDid it feel
79
+ so good <br />\nHope it felt so good<br />\nDon't know what I'd do if you
80
+ lost sleep over little old me<br />\nHe's so much better<br />\nThey're all
81
+ much better<br />\nTake off your sweater your shoes and your shirt<br />\nAnd
82
+ get to work<br />\n<br />\nMaybe this is just a work of art<br />\nScripted
83
+ players in a play of lust<br />\nHope the end is well worth waiting for<br
84
+ />\nEverything you wished it be<br />\nWas it bitter when you tossed and turned<br
85
+ />\nOn his under cover mattress, <br />\nDid it feel so good<br />\nHope it
86
+ felt so good<br />\nDon't know what I'd do if you lost sleep over little old
87
+ me<br />\nHe's so much better, they're all much better<br />\nTake off your
88
+ sweater your shoes and your shirt <br />\nAnd get to work<br />\n<br />\nOh
89
+ my god what have I done<br />\nNow my darling put your clothes back on<br
90
+ />\nOh my god what have I done<br />\nNow my darling put your clothes back
91
+ on<br />\n<br />\nBecause you can't be caught red handed<br />\nIf you're
92
+ not red handed<br />\nMy darling I would never say those words to you<br />\nI
93
+ was pulling out my heart so I could pin it to my sleeve<br />\nOn display
94
+ for you to see I'm on display<br />\n<br />\nBecause you can't be caught red
95
+ handed<br />\nIf you're not red handed<br />\nMy darling I would never say
96
+ those words to you<br />\nI was pulling out my heart so I could pin it to
97
+ my sleeve<br />\nOn display for you to see I'm on display<br />\n<br />\n(Oh
98
+ my god what have I done)<br />\n(Now my darling put your clothes back on)<br
99
+ />\n(Oh my god what have I done)<br />\n(Now my darling put your clothes back
100
+ on)<br />\n(Now my darling put your clothes back on)<br />\n<br />\nBecause
101
+ you can't be caught red handed if you're not red handed<br />\nMy darling
102
+ I would never say those words to you<br />\nI was pulling out my heart so
103
+ I could pin it to my sleeve<br />\nOn display for you to see I'm on display<br
104
+ />\n<br />\n(Oh my god what have I done?)<br />\n(Now my darling put your
105
+ clothes back on)<br />\n(Now my darling put your clothes back on)\r\n<!--
106
+ end of lyrics -->\r\n</div>\r\n\r\n<br /><br /><br /><br />\r\n\r\n\r\n\r\n\r\n<form
107
+ action=\"../../add.php\" method=\"post\" id=\"corlyr\">\r\n<input type=\"hidden\"
108
+ name=\"what\" value=\"correct_lyrics\" />\r\n<input type=\"hidden\" name=\"song_id\"
109
+ value=\"255359\" />\r\n</form>\r\n\r\n<br />\r\n<div class=\"bmenu\"><ul>\r\n\r\n<li><a
110
+ href=\"#\" onclick=\"document.getElementById('corlyr').submit();return false;\">Submit
111
+ Corrections</a></li>\r\n<li><a href=\"http://www.azlyrics.com/d/dearhunter.html\">THE
112
+ DEAR HUNTER Lyrics</a></li>\r\n<li class=\"mlast\"><a class=\"main\" href=\"http://www.azlyrics.com\">A-Z
113
+ Lyrics</a></li>\r\n</ul></div>\r\n\r\n<div class=\"ringtone\">\r\n<img src=\"http://images.azlyrics.com/phone.gif\"
114
+ width=\"16\" height=\"17\" alt=\"Red Hands Ringtone\" />&nbsp;<a href=\"http://www.ringtonematcher.com/co/ringtonematcher/02/noc.asp?sid=DVAZros&amp;artist=THE+DEAR+HUNTER&amp;song=Red+Hands\"
115
+ class=\"Ringtones\">Send \"Red Hands\" Ringtone to your Cell</a>&nbsp;<img
116
+ src=\"http://images.azlyrics.com/phone_flip.gif\" width=\"16\" height=\"17\"
117
+ alt=\"Red Hands Ringtone\" />\r\n</div>\r\n\r\n<!-- AddThis Button BEGIN -->\r\n<iframe
118
+ src=\"http://www.facebook.com/plugins/like.php?href=http://www.azlyrics.com/lyrics/dearhunter/redhands.html&amp;layout=button_count&amp;show_faces=false&amp;width=140&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21\"
119
+ scrolling=\"no\" frameborder=\"0\" style=\"float:left; border:none; overflow:hidden;
120
+ width:140px; height:21px;\" allowTransparency=\"true\"></iframe>\r\n<script
121
+ type=\"text/javascript\">\r\n<!--\r\nvar addthis_config = {\r\n services_custom:
122
+ {\r\n name: \"Amazon\",\r\n url: \"http://www.amazon.com/gp/search?ie=UTF8&keywords=THE+DEAR+HUNTER%20Red+Hands&tag=azlyricsunive-20&index=digital-music&linkCode=ur2&camp=1789&creative=9325\",\r\n
123
+ \ icon: \"http://images.azlyrics.com/play.gif\"}\r\n}\r\n// -->\r\n\r\n</script>\r\n<div
124
+ class=\"addthis_toolbox addthis_default_style\" style=\"float:right;\">\r\n\t<a
125
+ class=\"addthis_button_www.amazon.com\" title=\"Get MP3!\" style=\"text-decoration:none;
126
+ color: black;\">MP3&nbsp;</a> \r\n\t<a class=\"addthis_button_email\">Email&nbsp;</a>\r\n\t<a
127
+ class=\"addthis_button_print\">Print</a>\r\n</div>\r\n<script type=\"text/javascript\"
128
+ src=\"http://s7.addthis.com/js/300/addthis_widget.js#username=azlyrics\"></script>\r\n<!--
129
+ AddThis Button END -->\r\n<div class=\"cb\"></div>\r\n\r\n<form class=\"search\"
130
+ method=\"get\" action=\"http://search.azlyrics.com/search.php\">\r\n\r\nEnter
131
+ artist/album/song to search lyrics for:<div class=\"search_wr\"><input id=\"q\"
132
+ name=\"q\" class=\"search_text\" type=\"text\" value=\"\" /><button class=\"search_btn\"
133
+ type=\"submit\"></button><div id=\"qas\"></div></div>\r\n</form>\r\n\r\n<script
134
+ type=\"text/javascript\" src=\"http://images.azlyrics.com/bot_rock.js\"></script>\r\n\r\n<div
135
+ class=\"smenu\"><ul>\r\n<li><a href=\"http://www.azlyrics.com/adv.html\">Advertise
136
+ Here</a></li>\r\n<li><a href=\"http://www.azlyrics.com/privacy.html\">Privacy
137
+ Policy</a></li>\r\n<li><a href=\"http://www.azlyrics.com/copyright.html\">DMCA
138
+ Policy</a></li>\r\n<li class=\"mlast\"><a href=\"http://www.azlyrics.com/contact.html\">Contact
139
+ Us</a></li>\r\n</ul></div>\r\n<div class=\"copyright\">THE DEAR HUNTER lyrics
140
+ are property and copyright of their owners.<br />\"Red Hands\" lyrics provided
141
+ for educational purposes and personal use only.<br />\r\n\r\n<script type=\"text/javascript\"><!--\r\ncurdate=new
142
+ Date();\r\ndocument.write(\"<b>Copyright &copy; 2000-\"+curdate.getFullYear()+\"
143
+ AZLyrics.com<\\/b>\"); // -->\r\n</script>\r\n</div>\r\n\r\n</div>\r\n<script
144
+ type=\"text/javascript\">\r\n<!--\r\nvar gaJsHost = ((\"https:\" == document.location.protocol)
145
+ ? \"https://ssl.\" : \"http://www.\");\r\ndocument.write(unescape(\"%3Cscript
146
+ src='\" + gaJsHost + \"google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E\"));\r\n//
147
+ \ -->\r\n</script>\r\n<script type=\"text/javascript\">\r\n<!--\r\ntry {\r\nvar
148
+ pageTracker = _gat._getTracker(\"UA-4309237-1\");\r\npageTracker._setDomainName(\".azlyrics.com\");\r\npageTracker._trackPageview();\r\n}
149
+ catch(err) {}\r\n// -->\r\n</script>\r\n</body>\r\n</html>\r\n\n</script>\r\n</body>\r\n</html>\r\n"
150
+ http_version: '1.1'
151
+ recorded_at: Sun, 23 Dec 2012 02:48:54 GMT
152
+ recorded_with: VCR 2.3.0
@@ -0,0 +1,29 @@
1
+ # This file was generated by the `rspec --init` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # Require this file using `require "spec_helper"` to ensure that it is only
4
+ # loaded once.
5
+ #
6
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
7
+
8
+ require 'blue_conductor'
9
+ require 'pry'
10
+ require 'vcr'
11
+
12
+ VCR.configure do |c|
13
+ c.cassette_library_dir = 'spec/cassettes'
14
+ c.hook_into :fakeweb
15
+ c.default_cassette_options = { :record => :new_episodes }
16
+ end
17
+
18
+ RSpec.configure do |config|
19
+ config.treat_symbols_as_metadata_keys_with_true_values = true
20
+ config.run_all_when_everything_filtered = true
21
+ config.filter_run :focus
22
+ config.extend VCR::RSpec::Macros
23
+
24
+ # Run specs in random order to surface order dependencies. If you find an
25
+ # order dependency and want to debug it, you can fix the order by providing
26
+ # the seed, which is printed after each run.
27
+ # --seed 1234
28
+ config.order = 'random'
29
+ end
metadata ADDED
@@ -0,0 +1,170 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: blue_conductor
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Alex Williams
9
+ - Craig Williams
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2012-12-29 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rspec
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
31
+ - !ruby/object:Gem::Dependency
32
+ name: pry
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ type: :development
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: nokogiri
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ - !ruby/object:Gem::Dependency
64
+ name: vcr
65
+ requirement: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ type: :development
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ - !ruby/object:Gem::Dependency
80
+ name: fakeweb
81
+ requirement: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ! '>='
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ type: :development
88
+ prerelease: false
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: rake
97
+ requirement: !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ! '>='
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: Scrapes azLyrics.com for song lyrics
112
+ email:
113
+ - alexwilliams4@me.com
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - .gitignore
119
+ - .rspec
120
+ - Gemfile
121
+ - LICENSE.txt
122
+ - README.md
123
+ - Rakefile
124
+ - blue_conductor.gemspec
125
+ - lib/blue_conductor.rb
126
+ - lib/blue_conductor/band_manager.rb
127
+ - lib/blue_conductor/http/request.rb
128
+ - lib/blue_conductor/http/response.rb
129
+ - lib/blue_conductor/http/url_generator.rb
130
+ - lib/blue_conductor/sanitizer.rb
131
+ - lib/blue_conductor/song.rb
132
+ - lib/blue_conductor/version.rb
133
+ - lyric
134
+ - spec/blue_conductor/band_manager_spec.rb
135
+ - spec/blue_conductor_spec.rb
136
+ - spec/cassettes/blue_conductor_song.yml
137
+ - spec/cassettes/invalid_song.yml
138
+ - spec/cassettes/song.yml
139
+ - spec/spec_helper.rb
140
+ homepage: ''
141
+ licenses: []
142
+ post_install_message:
143
+ rdoc_options: []
144
+ require_paths:
145
+ - lib
146
+ required_ruby_version: !ruby/object:Gem::Requirement
147
+ none: false
148
+ requirements:
149
+ - - ! '>='
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ required_rubygems_version: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ requirements: []
159
+ rubyforge_project:
160
+ rubygems_version: 1.8.24
161
+ signing_key:
162
+ specification_version: 3
163
+ summary: azlyrics.com scraper
164
+ test_files:
165
+ - spec/blue_conductor/band_manager_spec.rb
166
+ - spec/blue_conductor_spec.rb
167
+ - spec/cassettes/blue_conductor_song.yml
168
+ - spec/cassettes/invalid_song.yml
169
+ - spec/cassettes/song.yml
170
+ - spec/spec_helper.rb