shroom 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -7,7 +7,7 @@ require 'rake/testtask'
7
7
 
8
8
  spec = Gem::Specification.new do |s|
9
9
  s.name = 'shroom'
10
- s.version = '0.0.8'
10
+ s.version = '0.0.9'
11
11
  s.has_rdoc = true
12
12
  s.extra_rdoc_files = ['README', 'LICENSE']
13
13
  s.summary = 'Shroom is a music player and organizer'
@@ -49,7 +49,7 @@ module Sh
49
49
  selected_rows = selection.selected_rows
50
50
  end
51
51
 
52
- puts selected_rows
52
+ #puts selected_rows
53
53
 
54
54
  if data.is_a? Sh::Song
55
55
  song = data
@@ -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|
@@ -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
- return nil unless artist and title
11
- LyricsWiki.get_lyrics(artist, title)
12
- end
13
-
14
- class LyricsWiki
15
- def LyricsWiki.get_lyrics(artist, title)
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
 
@@ -63,6 +63,7 @@ class StringMatcher
63
63
  end
64
64
 
65
65
  def compare
66
+ return 1 if @str1 == @str2
66
67
  pairs1 = word_letter_pairs @str1
67
68
  pairs2 = word_letter_pairs @str2
68
69
  union = pairs1.size + pairs2.size
@@ -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.signal_connect('link-clicked') do |doc, loc|
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.8
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-08-29 00:00:00 +10:00
12
+ date: 2009-09-15 00:00:00 +10:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency