blue_conductor 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +17 -0
- data/.rspec +2 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +52 -0
- data/Rakefile +1 -0
- data/blue_conductor.gemspec +26 -0
- data/lib/blue_conductor.rb +25 -0
- data/lib/blue_conductor/band_manager.rb +26 -0
- data/lib/blue_conductor/http/request.rb +14 -0
- data/lib/blue_conductor/http/response.rb +11 -0
- data/lib/blue_conductor/http/url_generator.rb +14 -0
- data/lib/blue_conductor/sanitizer.rb +21 -0
- data/lib/blue_conductor/song.rb +12 -0
- data/lib/blue_conductor/version.rb +3 -0
- data/lyric +22 -0
- data/spec/blue_conductor/band_manager_spec.rb +53 -0
- data/spec/blue_conductor_spec.rb +19 -0
- data/spec/cassettes/blue_conductor_song.yml +136 -0
- data/spec/cassettes/invalid_song.yml +133 -0
- data/spec/cassettes/song.yml +152 -0
- data/spec/spec_helper.rb +29 -0
- metadata +170 -0
data/.gitignore
ADDED
data/.rspec
ADDED
data/Gemfile
ADDED
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 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
|
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 "Back In Black" 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&layout=button_count&show_faces=false&width=140&action=like&font=verdana&colorscheme=light&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 </a> \r\n\t<a class=\"addthis_button_email\">Email </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&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\" /> <a href=\"http://www.ringtonematcher.com/co/ringtonematcher/02/noc.asp?sid=DVAZros&artist=AC/DC&song=Back+In+Black\"
|
67
|
+
class=\"Ringtones\">Send \"Back In Black\" Ringtone to your Cell</a> <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\" /> <a href=\"http://www.ringtonematcher.com/co/ringtonematcher/02/noc.asp?sid=DVAZros&artist=AC/DC&song=Back+In+Black\"
|
100
|
+
class=\"Ringtones\">Send \"Back In Black\" Ringtone to your Cell</a> <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&layout=button_count&show_faces=false&width=140&action=like&font=verdana&colorscheme=light&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 </a> \r\n\t<a class=\"addthis_button_email\">Email </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 © 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&width=230&connections=0&stream=false&header=false&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
|
+
© 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 "Red
|
36
|
+
Hands" 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&layout=button_count&show_faces=false&width=140&action=like&font=verdana&colorscheme=light&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 </a> \r\n\t<a class=\"addthis_button_email\">Email </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&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\" /> <a href=\"http://www.ringtonematcher.com/co/ringtonematcher/02/noc.asp?sid=DVAZros&artist=THE+DEAR+HUNTER&song=Red+Hands\"
|
69
|
+
class=\"Ringtones\">Send \"Red Hands\" Ringtone to your Cell</a> <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\" /> <a href=\"http://www.ringtonematcher.com/co/ringtonematcher/02/noc.asp?sid=DVAZros&artist=THE+DEAR+HUNTER&song=Red+Hands\"
|
115
|
+
class=\"Ringtones\">Send \"Red Hands\" Ringtone to your Cell</a> <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&layout=button_count&show_faces=false&width=140&action=like&font=verdana&colorscheme=light&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 </a> \r\n\t<a class=\"addthis_button_email\">Email </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 © 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
|
data/spec/spec_helper.rb
ADDED
@@ -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
|