sweeper 0.2.1 → 0.2.2
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.tar.gz.sig +0 -0
- data/CHANGELOG +3 -1
- data/README +9 -1
- data/lib/sweeper.rb +3 -18
- data/sweeper.gemspec +2 -2
- data/test/integration/sweeper_test.rb +1 -3
- metadata +1 -1
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/CHANGELOG
CHANGED
data/README
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
|
2
|
+
Sweeper
|
3
|
+
|
2
4
|
Automatically tag your music collection with metadata from Last.fm.
|
3
5
|
|
4
6
|
== License
|
@@ -34,9 +36,11 @@ Now, change to the directory of mp3s you want to tag and run:
|
|
34
36
|
|
35
37
|
Your mp3s will be updated with missing artist, genre, and trackname information, and a list of all tagged genres will be added to the <tt>comment</tt> field, for use in smart playlists.
|
36
38
|
|
39
|
+
You do not need a Last.fm account to use Sweeper.
|
40
|
+
|
37
41
|
== Demo
|
38
42
|
|
39
|
-
Unknown song
|
43
|
+
Unknown song:
|
40
44
|
|
41
45
|
$ id3info 1_001.mp3
|
42
46
|
*** Tag information for 1_001.mp3
|
@@ -80,3 +84,7 @@ You will get cleaner tags if you convert your files to ID3v2 first. Sweeper read
|
|
80
84
|
The support forum is here[http://rubyforge.org/forum/forum.php?forum_id=23599].
|
81
85
|
|
82
86
|
Patches and contributions are very welcome. Please note that contributors are required to assign copyright for their additions to Cloudburst, LLC.
|
87
|
+
|
88
|
+
== Further resources
|
89
|
+
|
90
|
+
* http://blog.evanweaver.com/articles/2008/04/13/sweeper/
|
data/lib/sweeper.rb
CHANGED
@@ -36,6 +36,8 @@ class Sweeper
|
|
36
36
|
def initialize(options = {})
|
37
37
|
@dir = File.expand_path(options['dir'] || Dir.pwd)
|
38
38
|
@options = options
|
39
|
+
@outf = Tempfile.new("stdout")
|
40
|
+
@errf = Tempfile.new("stderr")
|
39
41
|
end
|
40
42
|
|
41
43
|
# Run the Sweeper according to the <tt>options</tt>.
|
@@ -149,7 +151,7 @@ class Sweeper
|
|
149
151
|
# Lookup the basic metadata for an mp3 file. Accepts a pathname. Returns a tag hash.
|
150
152
|
def lookup_basic(filename)
|
151
153
|
Dir.chdir File.dirname(binary) do
|
152
|
-
response =
|
154
|
+
response = `./#{File.basename(binary)} #{filename.inspect} 2> #{@errf.path}`
|
153
155
|
object = begin
|
154
156
|
XSD::Mapping.xml2obj(response)
|
155
157
|
rescue REXML::ParseException
|
@@ -246,21 +248,4 @@ class Sweeper
|
|
246
248
|
ID3Lib::Tag.new(filename, ID3Lib::V_ALL)
|
247
249
|
end
|
248
250
|
|
249
|
-
# Silence STDERR and STDOUT for the duration of the block.
|
250
|
-
def silence(outf = nil, errf = nil)
|
251
|
-
# This method is annoying.
|
252
|
-
outf, errf = Tempfile.new("stdout"), Tempfile.new("stderr")
|
253
|
-
out, err = $stdout.clone, $stderr.clone
|
254
|
-
$stdout.reopen(outf)
|
255
|
-
$stderr.reopen(errf)
|
256
|
-
begin
|
257
|
-
yield
|
258
|
-
ensure
|
259
|
-
$stdout.reopen(out)
|
260
|
-
$stderr.reopen(err)
|
261
|
-
outf.close; outf.unlink
|
262
|
-
errf.close; errf.unlink
|
263
|
-
end
|
264
|
-
end
|
265
|
-
|
266
251
|
end
|
data/sweeper.gemspec
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
|
2
|
-
# Gem::Specification for Sweeper-0.2.
|
2
|
+
# Gem::Specification for Sweeper-0.2.2
|
3
3
|
# Originally generated by Echoe
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = %q{sweeper}
|
7
|
-
s.version = "0.2.
|
7
|
+
s.version = "0.2.2"
|
8
8
|
|
9
9
|
s.specification_version = 2 if s.respond_to? :specification_version=
|
10
10
|
|
@@ -49,9 +49,7 @@ class SweeperTest < Test::Unit::TestCase
|
|
49
49
|
end
|
50
50
|
|
51
51
|
def test_write
|
52
|
-
@s.
|
53
|
-
@s.write(@found_many, @s.lookup(@found_many))
|
54
|
-
end
|
52
|
+
@s.write(@found_many, @s.lookup(@found_many))
|
55
53
|
assert_equal(
|
56
54
|
@s.lookup(@found_many),
|
57
55
|
@s.read(@found_many))
|
metadata
CHANGED
metadata.gz.sig
CHANGED
Binary file
|