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 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