shroom 0.0.8 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Rakefile +1 -1
- data/lib/sh_browse.rb +1 -1
- data/lib/sh_cover_art.rb +0 -1
- data/lib/sh_lyrics.rb +54 -47
- data/lib/sh_util.rb +1 -0
- data/lib/sh_view.rb +5 -1
- metadata +2 -2
data/Rakefile
CHANGED
data/lib/sh_browse.rb
CHANGED
data/lib/sh_cover_art.rb
CHANGED
@@ -10,7 +10,6 @@ module Sh
|
|
10
10
|
if Ping.pingecho("audioscrobbler.com", 5) and not File.exists?(path)
|
11
11
|
doc = lastfm("album.getInfo", {:artist => artist, :album => album})
|
12
12
|
img_url = REXML::XPath.first(doc, '//image[@size="extralarge"]').text
|
13
|
-
puts doc
|
14
13
|
if img_url
|
15
14
|
open(path, 'w') do |output|
|
16
15
|
open(img_url) do |input|
|
data/lib/sh_lyrics.rb
CHANGED
@@ -7,55 +7,62 @@ module Sh
|
|
7
7
|
class Lyrics
|
8
8
|
def Lyrics.get_lyrics song
|
9
9
|
artist, title = song.artist.name, song.title
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
lyrics = nil
|
17
|
-
if Ping.pingecho("lyricwiki.org", 10)
|
18
|
-
url = "http://lyricwiki.org/api.php?func=getSong&fmt=xml" +
|
19
|
-
"&artist=#{CGI.escape(artist)}" +
|
20
|
-
"&song=#{CGI.escape(title)}"
|
21
|
-
doc = Hpricot(open(url))
|
22
|
-
page_url = (doc/'url').inner_text
|
23
|
-
page_name = (page_url.match(/:([^:]*)$/) || ":").to_s[1..-1]
|
24
|
-
page_name = CGI.unescape(page_name)
|
25
|
-
page_name.freeze
|
26
|
-
unless page_url.end_with? ';action=edit'
|
27
|
-
doc = Hpricot(open(page_url).read.gsub(/<[\s]*br[\s]*\/?>/, "\n"))
|
28
|
-
versions = []
|
29
|
-
lyricboxes = doc/'div.lyricbox'
|
30
|
-
best_match = [0, lyricboxes.first.inner_text.strip]
|
31
|
-
if lyricboxes.size > 1 and StringMatcher.compare_ignore_case(page_name, title) < 0.9
|
32
|
-
lyricboxes.each do |box|
|
33
|
-
prev = box.previous
|
34
|
-
version = nil
|
35
|
-
while prev
|
36
|
-
unless (prev/'.mw-headline').empty?
|
37
|
-
version = prev.inner_text.strip
|
38
|
-
break
|
39
|
-
end
|
40
|
-
prev = prev.previous
|
41
|
-
end
|
42
|
-
version.sub! /^\[edit\] /, ''
|
43
|
-
lyrics = box.inner_text.strip
|
44
|
-
versions << [version, lyrics]
|
45
|
-
end
|
46
|
-
versions.each do |version, lyrics|
|
47
|
-
version_title = page_name.dup
|
48
|
-
version_title << " (#{version})" if version
|
49
|
-
match = [StringMatcher.compare_ignore_case(version_title, title), lyrics]
|
50
|
-
best_match = match if match.first > best_match.first
|
51
|
-
end
|
52
|
-
end
|
53
|
-
lyrics = best_match[1]
|
54
|
-
end
|
55
|
-
end
|
56
|
-
return lyrics
|
10
|
+
lyrics = nil
|
11
|
+
if artist and title
|
12
|
+
url = "http://lyrical.heroku.com/api?format=plain"
|
13
|
+
url << "&artist=#{CGI.escape(artist)}"
|
14
|
+
url << "&song=#{CGI.escape(title)}"
|
15
|
+
lyrics = open(url).read
|
16
|
+
lyrics = nil if lyrics.empty?
|
57
17
|
end
|
18
|
+
return lyrics
|
58
19
|
end
|
20
|
+
|
21
|
+
# class LyricsWiki
|
22
|
+
# def LyricsWiki.get_lyrics(artist, title)
|
23
|
+
# lyrics = nil
|
24
|
+
# if Ping.pingecho("lyricwiki.org", 10)
|
25
|
+
# url = "http://lyricwiki.org/api.php?func=getSong&fmt=xml" +
|
26
|
+
# "&artist=#{CGI.escape(artist)}" +
|
27
|
+
# "&song=#{CGI.escape(title)}"
|
28
|
+
# doc = Hpricot(open(url))
|
29
|
+
# page_url = (doc/'url').inner_text
|
30
|
+
# page_name = (page_url.match(/:([^:]*)$/) || ":").to_s[1..-1]
|
31
|
+
# page_name = CGI.unescape(page_name)
|
32
|
+
# page_name.freeze
|
33
|
+
# unless page_url.end_with? ';action=edit'
|
34
|
+
# doc = Hpricot(open(page_url).read.gsub(/<[\s]*br[\s]*\/?>/, "\n"))
|
35
|
+
# versions = []
|
36
|
+
# lyricboxes = doc/'div.lyricbox'
|
37
|
+
# best_match = [0, lyricboxes.first.inner_text.strip]
|
38
|
+
# if lyricboxes.size > 1 and StringMatcher.compare_ignore_case(page_name, title) < 0.9
|
39
|
+
# lyricboxes.each do |box|
|
40
|
+
# prev = box.previous
|
41
|
+
# version = nil
|
42
|
+
# while prev
|
43
|
+
# unless (prev/'.mw-headline').empty?
|
44
|
+
# version = prev.inner_text.strip
|
45
|
+
# break
|
46
|
+
# end
|
47
|
+
# prev = prev.previous
|
48
|
+
# end
|
49
|
+
# version.sub! /^\[edit\] /, ''
|
50
|
+
# lyrics = box.inner_text.strip
|
51
|
+
# versions << [version, lyrics]
|
52
|
+
# end
|
53
|
+
# versions.each do |version, lyrics|
|
54
|
+
# version_title = page_name.dup
|
55
|
+
# version_title << " (#{version})" if version
|
56
|
+
# match = [StringMatcher.compare_ignore_case(version_title, title), lyrics]
|
57
|
+
# best_match = match if match.first > best_match.first
|
58
|
+
# end
|
59
|
+
# end
|
60
|
+
# lyrics = best_match[1]
|
61
|
+
# end
|
62
|
+
# end
|
63
|
+
# return lyrics
|
64
|
+
# end
|
65
|
+
# end
|
59
66
|
end
|
60
67
|
end
|
61
68
|
|
data/lib/sh_util.rb
CHANGED
data/lib/sh_view.rb
CHANGED
@@ -507,7 +507,11 @@ module Sh
|
|
507
507
|
<p></p><a href="#reload">Reload lyrics</a>
|
508
508
|
}
|
509
509
|
end
|
510
|
-
@html_lyrics.document
|
510
|
+
doc = @html_lyrics.document
|
511
|
+
if @html_signal_id and doc.signal_handler_is_connected?(@html_signal_id)
|
512
|
+
doc.signal_handler_disconnect(@html_signal_id)
|
513
|
+
end
|
514
|
+
@html_signal_id = doc.signal_connect('link-clicked') do |doc, loc|
|
511
515
|
if loc == '#reload'
|
512
516
|
@html_lyrics.set_html 'Loading...'
|
513
517
|
Thread.new do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shroom
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aiden Nibali
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-09-15 00:00:00 +10:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|