xmfun 0.0.5 → 0.0.7

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 932fc6fda59787b6b88e1f62c3a1034bae61ac60
4
- data.tar.gz: 93965c8ab3a8dac6bbec723e2409cd9815ada775
3
+ metadata.gz: de89583de84a2110acc2701dd3db6fbd0d3ca430
4
+ data.tar.gz: 6dd726088e668911d797cdd1123b51d369ed6469
5
5
  SHA512:
6
- metadata.gz: a742a339d225638d8e15b2570b993fde8da9cca484a1ce01b7d61aace7c7b0e39bdf2ef19785e0d7f27d4bb943d012cea7157a7b54eac56733c6346c49d223f0
7
- data.tar.gz: 137c2b70396da5739e5b50b730e53108084f5493a14d12ed2dc8091f7f4f76b61ee1308178fe637cec97d49e3b2514e47203b93eb9eca1a3573c66b156fc226b
6
+ metadata.gz: e94f58c108707782a0ad8f33ab730cfeae0439a8323c14b09342e8794025b11a0c3dc6a20c6723ce0c23924b34131d5f005a1b0432a8c95d68568b906d40ef36
7
+ data.tar.gz: 9332f94f499ce495d44c1b536d1aaf6b50006d48c7e2b2ab3f19fbf06f4bfa3f4d1a4ccbab2925c2632bbe577f44b2069f18d4a692bef570d2fb291d9bc74475
data/.gitignore CHANGED
@@ -16,3 +16,5 @@ test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
18
  .DS_Store
19
+ .idea
20
+ *.mp3
@@ -0,0 +1,4 @@
1
+ LineLength:
2
+ Max: 160
3
+ StringLiterals:
4
+ Enabled: false
@@ -0,0 +1 @@
1
+ ruby-2.1.2
@@ -1,5 +1,21 @@
1
1
  language: ruby
2
2
  rvm:
3
+ - ruby-head
3
4
  - 2.1.2
4
5
  - 2.0.0
5
6
  - 1.9.3
7
+ - jruby
8
+ - rbx
9
+ matrix:
10
+ allow_failures:
11
+ - rvm: jruby
12
+ - rvm: rbx
13
+ - rvm: ruby-head
14
+ notifications:
15
+ webhooks:
16
+ urls:
17
+ - https://webhooks.gitter.im/e/2a376ca4981aeb2a81ca
18
+ on_success: change # options: [always|never|change] default: always
19
+ on_failure: always # options: [always|never|change] default: always
20
+ on_start: false # default: false
21
+ script: CODECLIMATE_REPO_TOKEN=d819a1100b1567adf763b9f6b0e1af83dcb59a4bf5c3534748ed32e3bb6818f4 bundle exec rake
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
1
  source "https://rubygems.org"
2
2
 
3
3
  gemspec
4
+
5
+ gem 'codeclimate-test-reporter', group: :test, require: nil
data/README.md CHANGED
@@ -1,10 +1,9 @@
1
1
  # XMfun
2
- [![Gem
3
- Version](https://badge.fury.io/rb/xmfun.svg)](http://badge.fury.io/rb/xmfun)
4
- [![Build
5
- Status](https://travis-ci.org/ipmsteven/xmfun.svg?branch=master)](https://travis-ci.org/ipmsteven/xmfun)
6
- [![Code
7
- Climate](https://codeclimate.com/github/ipmsteven/xmfun/badges/gpa.svg)](https://codeclimate.com/github/ipmsteven/xmfun)
2
+ [![Gem Version](https://badge.fury.io/rb/xmfun.svg)](http://badge.fury.io/rb/xmfun)
3
+ [![Build Status](https://travis-ci.org/xmfun/xmfun.svg?branch=master)](https://travis-ci.org/xmfun/xmfun)
4
+ [![Test Coverage](https://codeclimate.com/github/ipmsteven/xmfun/badges/coverage.svg)](https://codeclimate.com/github/ipmsteven/xmfun)
5
+ [![Code Climate](https://codeclimate.com/github/ipmsteven/xmfun/badges/gpa.svg)](https://codeclimate.com/github/ipmsteven/xmfun)
6
+ [![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/ipmsteven/xmfun?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
8
7
 
9
8
  Yet Another Xiami Music Downloader
10
9
 
@@ -27,11 +26,22 @@ Or install it yourself as:
27
26
  ## Usage
28
27
 
29
28
  ```
30
- xmfun
31
- -u url -- url on xiami website
32
- -d path -- path to save your music
33
- -v -- show version
34
- -h -- show help message
29
+ Usage: xmfun <command> [<args>]
30
+
31
+ -v, --version Print the version
32
+ -h, --help Print this help
33
+
34
+ Common commands:
35
+ download Download the mp3 files given an arg of url
36
+ update Update xmfun to the newest version
37
+ version Print the version
38
+ help Print this help
39
+
40
+ Example:
41
+ xmfun download http://www.xiami.com/song/3378080
42
+
43
+ More info:
44
+ xmfun <command> -h
35
45
  ```
36
46
 
37
47
  ## Contributing
data/Rakefile CHANGED
@@ -1,9 +1,15 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+ require 'cucumber'
4
+ require 'cucumber/rake/task'
3
5
 
4
6
  RSpec::Core::RakeTask.new(:spec)
5
7
 
6
- task :default => :spec
8
+ Cucumber::Rake::Task.new(:features) do |t|
9
+ t.cucumber_opts = "--format pretty"
10
+ end
11
+
12
+ task :default => [:spec, :features]
7
13
 
8
14
  task :console do
9
15
  exec "pry -r xmfun -I ./lib"
data/bin/xmfun CHANGED
@@ -1,15 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
-
3
- require 'clap'
4
2
  require 'xmfun'
5
3
 
6
- url = ''
7
- dst = '.'
8
-
9
- Clap.run ARGV,
10
- "-u" => lambda { |xm_url| url = Xmfun::Util::UrlParser.parse(xm_url) },
11
- "-d" => lambda { |d| dst = d },
12
- "-v" => lambda { puts Xmfun::VERSION },
13
- "-h" => lambda { puts Xmfun.help }
14
-
15
- Xmfun::Downloader.download(url, dst) unless url.empty?
4
+ Xmfun::CLI.start(ARGV)
@@ -5,21 +5,6 @@ require 'xmfun/mp3/track'
5
5
  require 'xmfun/mp3/mp3_tagger'
6
6
  require 'xmfun/util/url_parser'
7
7
  require 'xmfun/util/decoder'
8
- require 'xmfun/downloader'
9
-
10
-
11
-
12
- module Xmfun
13
- def self.help
14
- <<-HELP
15
- Usage: ruby xmfun.rb
16
- -u url -- url on xiami website
17
- -d path -- path to save your music
18
- -v -- show version
19
- -h -- show help message
20
-
21
- Example: Download song from "http://www.xiami.com/song/383221" and save to 'xuwei' folder
22
- xmfun -u http://www.xiami.com/song/383221 -d xuwei
23
- HELP
24
- end
25
- end
8
+ require 'xmfun/util/downloader'
9
+ require 'xmfun/util/helper'
10
+ require 'xmfun/cli'
@@ -0,0 +1,50 @@
1
+ # -*- encoding : utf-8 -*-
2
+
3
+ require 'clap'
4
+
5
+ module Xmfun
6
+ class CLI
7
+ extend Xmfun::Util::Helper
8
+
9
+ def self.start(argv)
10
+ if argv.empty?
11
+ puts main_help
12
+ exit
13
+ end
14
+
15
+ url = ''
16
+ dst = '.'
17
+
18
+ download_proc = lambda do |option|
19
+ if option == '-h'
20
+ puts download_help
21
+ else
22
+ unless(url = Xmfun::Util::UrlParser.parse(option))
23
+ puts "\e[31mPlease provide valid URL\e[0m"
24
+ exit
25
+ end
26
+ end
27
+ end
28
+
29
+ begin
30
+ Clap.run argv,
31
+ "download" => download_proc,
32
+ "update" => lambda { system("gem update xmfun") },
33
+ "help" => lambda { puts main_help; exit },
34
+ "--help" => lambda { puts main_help; exit },
35
+ "version" => lambda { puts Xmfun::VERSION; exit },
36
+ "--version" => lambda { puts Xmfun::VERSION; exit },
37
+
38
+ "-u" => lambda { |xmurl| url = Xmfun::Util::UrlParser.parse(xm_url) },
39
+ "-v" => lambda { puts Xmfun::VERSION; exit},
40
+ "-h" => lambda { puts main_help; exit},
41
+ "-d" => lambda { |d| dst = d }
42
+ rescue ArgumentError
43
+ puts "\e[31mInvalid Usage\e[0m"
44
+ puts main_help
45
+ end
46
+
47
+ Xmfun::Util::Downloader.download(url, dst) unless url.empty?
48
+ end
49
+ end
50
+ end
@@ -1,7 +1,8 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
- require 'open-uri'
4
- require 'mp3info'
3
+ require "open-uri"
4
+ require "mp3info"
5
+ require "cgi"
5
6
 
6
7
  module Xmfun
7
8
  module Mp3
@@ -12,10 +13,21 @@ module Xmfun
12
13
  m.tag.title = track.title
13
14
  m.tag.album = track.album
14
15
 
16
+ m.tag2["USLT"] = get_lyric(track.lyric)
15
17
  m.tag2.remove_pictures
16
- m.tag2.add_picture(open(track.album_pic).read)
18
+ m.tag2.add_picture(get_data(track.album_pic))
17
19
  end
18
20
  end
21
+
22
+ private
23
+
24
+ def self.get_lyric(url)
25
+ CGI.unescapeHTML(get_data(url)).force_encoding("UTF-8")
26
+ end
27
+
28
+ def self.get_data(url)
29
+ open(url).read rescue ''
30
+ end
19
31
  end
20
32
  end
21
33
  end
@@ -10,7 +10,9 @@ module Xmfun
10
10
  row, text = strtok(input)
11
11
 
12
12
  tmp = text.in_groups(row).transpose.join
13
- CGI::unescape(tmp).gsub('^', '0')
13
+ CGI::unescape(tmp).gsub("^", "0")
14
+ rescue ArgumentError
15
+ false
14
16
  end
15
17
 
16
18
  def self.strtok(s)
@@ -0,0 +1,80 @@
1
+ # -*- encoding : utf-8 -*-
2
+
3
+ require 'open-uri'
4
+ require 'nokogiri'
5
+ require 'nori'
6
+ require 'parallel'
7
+ require 'ruby-progressbar'
8
+
9
+ module Xmfun
10
+ module Util
11
+ class Downloader
12
+ def self.download(url, dst = ".")
13
+ make_dst(dst)
14
+
15
+ tracks = Nokogiri::XML(open(url, "Client-IP" => "220.181.111.168")).css("track")
16
+
17
+ if tracks.size > 1
18
+ download_collect(tracks)
19
+ else
20
+ download_song(tracks[0])
21
+ end
22
+ end
23
+
24
+ private
25
+ def self.make_dst(dst)
26
+ if Dir.exist?(dst)
27
+ Dir.chdir(dst)
28
+ else
29
+ Dir.mkdir(dst)
30
+ Dir.chdir(dst)
31
+ end
32
+ end
33
+
34
+ def self.make_progress_bar(size)
35
+ ProgressBar.create( :title => "Progress",
36
+ :total => size,
37
+ :format => '%a %bᗧ%i %p%% %t',
38
+ :progress_mark => ' ',
39
+ :remainder_mark => '・' )
40
+ end
41
+
42
+ def self.download_collect(collect)
43
+ progress = make_progress_bar(collect.size)
44
+
45
+ Parallel.map( collect, :in_threads => Parallel.processor_count, :finish => lambda { |item, i, result| progress.increment } ) do |track|
46
+
47
+ track = Xmfun::Mp3::Track.new(Nori.new.parse(track.to_s)['track'])
48
+
49
+ URI.parse(track.location).open do |f|
50
+ File.open(track.file_name, 'w') { |mp3| mp3.write(f.read) }
51
+ end
52
+
53
+ Xmfun::Mp3::Mp3Tagger.tag(track)
54
+ end
55
+ end
56
+
57
+ def self.download_song(song)
58
+ track = Xmfun::Mp3::Track.new(Nori.new.parse(song.to_s)['track'])
59
+ progress = nil
60
+
61
+ content_length_lambda = lambda do |content_length|
62
+ if content_length && 0 < content_length
63
+ progress = make_progress_bar content_length
64
+ end
65
+ end
66
+
67
+ progress_lambda = lambda { |size| progress.progress = size if progress }
68
+
69
+ uri = URI.parse(track.location)
70
+
71
+ uri.open( :content_length_proc => content_length_lambda,
72
+ :progress_proc => progress_lambda ) do |f|
73
+ File.open(track.file_name, 'w') { |mp3| mp3.write(f.read) }
74
+ end
75
+
76
+ Xmfun::Mp3::Mp3Tagger.tag(track)
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,40 @@
1
+ # -*- encoding : utf-8 -*-
2
+
3
+ module Xmfun
4
+ module Util
5
+ module Helper
6
+ def main_help
7
+ <<-EOS
8
+ Usage: xmfun <command> [<args>]
9
+
10
+ -v, --version Print the version
11
+ -h, --help Print this help
12
+
13
+ Common commands:
14
+ download Download the mp3 files given an arg of url
15
+ update Update xmfun to the newest version
16
+ version Print the version
17
+ help Print this help
18
+
19
+ Example:
20
+ xmfun download http://www.xiami.com/song/3378080
21
+
22
+ More info:
23
+ xmfun <command> -h
24
+ EOS
25
+ end
26
+
27
+ def download_help
28
+ <<-EOS
29
+ Usage:
30
+ xmfun download URL
31
+ xmfun download URL -d DESINATION_FOLDER
32
+
33
+ Example:
34
+ xmfun download http://www.xiami.com/song/3378080
35
+ xmfun download http://www.xiami.com/song/3378080 -d pink
36
+ EOS
37
+ end
38
+ end
39
+ end
40
+ end
@@ -1,5 +1,5 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  module Xmfun
4
- VERSION = "0.0.5"
4
+ VERSION = '0.0.7'
5
5
  end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xmfun
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - ipmsteven
8
+ - Polo
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-09-08 00:00:00.000000000 Z
12
+ date: 2014-10-03 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: clap
@@ -72,14 +73,14 @@ dependencies:
72
73
  requirements:
73
74
  - - "~>"
74
75
  - !ruby/object:Gem::Version
75
- version: 0.8.4
76
+ version: 0.8.5
76
77
  type: :runtime
77
78
  prerelease: false
78
79
  version_requirements: !ruby/object:Gem::Requirement
79
80
  requirements:
80
81
  - - "~>"
81
82
  - !ruby/object:Gem::Version
82
- version: 0.8.4
83
+ version: 0.8.5
83
84
  - !ruby/object:Gem::Dependency
84
85
  name: activesupport
85
86
  requirement: !ruby/object:Gem::Requirement
@@ -164,6 +165,62 @@ dependencies:
164
165
  - - "~>"
165
166
  - !ruby/object:Gem::Version
166
167
  version: 0.10.0
168
+ - !ruby/object:Gem::Dependency
169
+ name: webmock
170
+ requirement: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - "~>"
173
+ - !ruby/object:Gem::Version
174
+ version: 1.18.0
175
+ type: :development
176
+ prerelease: false
177
+ version_requirements: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - "~>"
180
+ - !ruby/object:Gem::Version
181
+ version: 1.18.0
182
+ - !ruby/object:Gem::Dependency
183
+ name: vcr
184
+ requirement: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - "~>"
187
+ - !ruby/object:Gem::Version
188
+ version: 2.9.3
189
+ type: :development
190
+ prerelease: false
191
+ version_requirements: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - "~>"
194
+ - !ruby/object:Gem::Version
195
+ version: 2.9.3
196
+ - !ruby/object:Gem::Dependency
197
+ name: aruba
198
+ requirement: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - "~>"
201
+ - !ruby/object:Gem::Version
202
+ version: 0.6.1
203
+ type: :development
204
+ prerelease: false
205
+ version_requirements: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - "~>"
208
+ - !ruby/object:Gem::Version
209
+ version: 0.6.1
210
+ - !ruby/object:Gem::Dependency
211
+ name: cucumber
212
+ requirement: !ruby/object:Gem::Requirement
213
+ requirements:
214
+ - - "~>"
215
+ - !ruby/object:Gem::Version
216
+ version: 1.3.17
217
+ type: :development
218
+ prerelease: false
219
+ version_requirements: !ruby/object:Gem::Requirement
220
+ requirements:
221
+ - - "~>"
222
+ - !ruby/object:Gem::Version
223
+ version: 1.3.17
167
224
  - !ruby/object:Gem::Dependency
168
225
  name: pry-byebug
169
226
  requirement: !ruby/object:Gem::Requirement
@@ -187,7 +244,8 @@ extensions: []
187
244
  extra_rdoc_files: []
188
245
  files:
189
246
  - ".gitignore"
190
- - ".rspec"
247
+ - ".hound.yml"
248
+ - ".ruby-version"
191
249
  - ".travis.yml"
192
250
  - Gemfile
193
251
  - LICENSE.txt
@@ -195,15 +253,14 @@ files:
195
253
  - Rakefile
196
254
  - bin/xmfun
197
255
  - lib/xmfun.rb
198
- - lib/xmfun/downloader.rb
256
+ - lib/xmfun/cli.rb
199
257
  - lib/xmfun/mp3/mp3_tagger.rb
200
258
  - lib/xmfun/mp3/track.rb
201
259
  - lib/xmfun/util/decoder.rb
260
+ - lib/xmfun/util/downloader.rb
261
+ - lib/xmfun/util/helper.rb
202
262
  - lib/xmfun/util/url_parser.rb
203
263
  - lib/xmfun/version.rb
204
- - spec/spec_helper.rb
205
- - spec/xmfun/decode_spec.rb
206
- - xmfun.gemspec
207
264
  homepage: https://github.com/ipmsteven/xmfun
208
265
  licenses:
209
266
  - MIT
@@ -228,6 +285,4 @@ rubygems_version: 2.2.2
228
285
  signing_key:
229
286
  specification_version: 4
230
287
  summary: Yet another xiami music downloader
231
- test_files:
232
- - spec/spec_helper.rb
233
- - spec/xmfun/decode_spec.rb
288
+ test_files: []
data/.rspec DELETED
@@ -1,2 +0,0 @@
1
- --color
2
- --format progress
@@ -1,78 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
-
3
- require 'open-uri'
4
- require 'nokogiri'
5
- require 'nori'
6
- require 'parallel'
7
- require 'ruby-progressbar'
8
-
9
- module Xmfun
10
- class Downloader
11
- def self.download(url, dst)
12
- make_dst(dst)
13
-
14
- tracks = Nokogiri::XML(open(url, "Client-IP" => "220.181.111.168")).css("track")
15
-
16
- if tracks.size > 1
17
- download_collect(tracks)
18
- else
19
- download_song(tracks[0])
20
- end
21
- end
22
-
23
- private
24
- def self.make_dst(dst)
25
- if Dir.exist?(dst)
26
- Dir.chdir(dst)
27
- else
28
- Dir.mkdir(dst)
29
- Dir.chdir(dst)
30
- end
31
- end
32
-
33
- def self.make_progress_bar(size)
34
- ProgressBar.create( :title => "Progress",
35
- :total => size,
36
- :format => '%a %bᗧ%i %p%% %t',
37
- :progress_mark => ' ',
38
- :remainder_mark => '・' )
39
- end
40
-
41
- def self.download_collect(collect)
42
- progress = make_progress_bar(collect.size)
43
-
44
- Parallel.map( collect, :in_threads => Parallel.processor_count, :finish => lambda { |item, i, result| progress.increment } ) do |track|
45
-
46
- track = Xmfun::Mp3::Track.new(Nori.new.parse(track.to_s)['track'])
47
-
48
- URI.parse(track.location).open do |f|
49
- File.open(track.file_name, 'w') { |mp3| mp3.write(f.read) }
50
- end
51
-
52
- Xmfun::Mp3::Mp3Tagger.tag(track)
53
- end
54
- end
55
-
56
- def self.download_song(song)
57
- track = Xmfun::Mp3::Track.new(Nori.new.parse(song.to_s)['track'])
58
- progress = nil
59
-
60
- content_length_lambda = lambda do |content_length|
61
- if content_length && 0 < content_length
62
- progress = make_progress_bar content_length
63
- end
64
- end
65
-
66
- progress_lambda = lambda { |size| progress.progress = size if progress }
67
-
68
- uri = URI.parse(track.location)
69
-
70
- uri.open( :content_length_proc => content_length_lambda,
71
- :progress_proc => progress_lambda ) do |f|
72
- File.open(track.file_name, 'w') { |mp3| mp3.write(f.read) }
73
- end
74
-
75
- Xmfun::Mp3::Mp3Tagger.tag(track)
76
- end
77
- end
78
- end
@@ -1,19 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
- require 'xmfun'
3
-
4
- # This file was generated by the `rspec --init` command. Conventionally, all
5
- # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
6
- # Require this file using `require "spec_helper"` to ensure that it is only
7
- # loaded once.
8
- #
9
- # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
10
- RSpec.configure do |config|
11
- config.run_all_when_everything_filtered = true
12
- config.filter_run :focus
13
-
14
- # Run specs in random order to surface order dependencies. If you find an
15
- # order dependency and want to debug it, you can fix the order by providing
16
- # the seed, which is printed after each run.
17
- # --seed 1234
18
- config.order = 'random'
19
- end
@@ -1,26 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
- require 'spec_helper'
3
-
4
- module Xmfun
5
- describe Util::Decoder do
6
- before do
7
- @decoder = Xmfun::Util::Decoder
8
- end
9
-
10
- it "#should return a decoded url" do
11
- location = "8h2fmF%2956mtDe%fc185utFii12F%65ph3e5d24%Elt%l.%F35233_%4Ece%5-lp2ec272E74%k57e235E%%F.oF1%%123eE2eefE%53mxm16527_Fyd%6ab75EA5i%69EF_la%c52d88E-%.a29%333.u38E6a-8%n"
12
- url = "http://m5.file.xiami.com/1/169/7169/320390/3562717_365342_l.mp3?auth_key=30dc8ee47200ee626fdc2eadac2e3fb8-1407888000-0-null"
13
- expect(@decoder.decode(location)).to eq(url)
14
-
15
- location = "10h%i5F1t2.%18tFn23.pfeF2m%1t11p3.%183Ax23_%iF312a3%3Fm522"
16
- url = "http://f1.xiami.net/355/1133/13218_13218.mp3"
17
- expect(@decoder.decode(location)).to eq(url)
18
- end
19
-
20
- it "#should raise an error when decoding an invalid url" do
21
- location = "this_is_invalid_url"
22
- expect_msg = "invalid input #{location}"
23
- expect { @decoder.decode(location) }.to raise_error(ArgumentError, expect_msg)
24
- end
25
- end
26
- end
@@ -1,36 +0,0 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'xmfun/version'
5
-
6
- Gem::Specification.new do |spec|
7
- spec.name = "xmfun"
8
- spec.version = Xmfun::VERSION
9
- spec.authors = ["ipmsteven"]
10
- spec.email = ["steven.lyl147@gmail.com"]
11
- spec.description = %q{Yet another xiami music downloader}
12
- spec.summary = %q{Yet another xiami music downloader}
13
- spec.homepage = "https://github.com/ipmsteven/xmfun"
14
- spec.license = "MIT"
15
-
16
- spec.files = `git ls-files`.split($/)
17
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ["lib"]
20
-
21
- spec.add_dependency "clap", "~> 1.0.0"
22
- spec.add_dependency "nori", "~> 2.4.0"
23
- spec.add_dependency "nokogiri", "~> 1.6.3.1"
24
- spec.add_dependency "parallel", "~> 1.2.2"
25
- spec.add_dependency "ruby-mp3info", "~> 0.8.4"
26
- spec.add_dependency "activesupport", "~> 4.1.5"
27
- spec.add_dependency "ruby-progressbar", "~> 1.5.1"
28
-
29
- spec.add_development_dependency "bundler", "~> 1.3"
30
- spec.add_development_dependency "rake", "~> 10.3.2"
31
- spec.add_development_dependency "rspec", "~> 3.0.0"
32
- spec.add_development_dependency "pry", "~> 0.10.0"
33
- if RUBY_VERSION =~ /^2\./
34
- spec.add_development_dependency "pry-byebug", "~> 1.3.3"
35
- end
36
- end