xmfun 0.0.1 → 0.0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dc921b2d64b591315ce9b88105e859b3bf335423
4
- data.tar.gz: b7fffd8bf10c34c3cb85ecc217d2ff138d61a8a3
3
+ metadata.gz: df82d030462552e3c7a46301507d42156b89637a
4
+ data.tar.gz: 39ba675bbb2705abe84821eea975a7ee0d79bd5e
5
5
  SHA512:
6
- metadata.gz: d69e949c50bd95c4ba5514170f530fdbe75be3d24e2a69956a839a2670807abc27e72e31a94da0b8ffc5cb39caf2005384efc8cda5af7b5549e2a4b95de294e3
7
- data.tar.gz: 26d013a9edfef57fe389764de991f4c144bc316f557b3883a96f36f529e1803b7b39e7b951825a402eb4e21698be1c43979ff29cd048be5d9b26e2ead9924958
6
+ metadata.gz: 72e7421684f5b9373b24991f6b25d02deb136bbdc2320c5aa407e9dc9523c69bb3bc7ff7670ff8f806e47b2ee01b73a783bda09a3f7b706d3a23dc440fd2e8dd
7
+ data.tar.gz: 635a174bd39ee90121e14359384a65f6c66c08288a0b57c6b8dc64bcd12c3de4c73175283bbb1b157b16ee9535c2a02ad02a3b64a77d717747f17931f204c48b
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.1.2
4
+ - 2.0.0
5
+ - 1.9.3
data/README.md CHANGED
@@ -1,4 +1,8 @@
1
1
  # XMfun
2
+ [![Build
3
+ Status](https://travis-ci.org/ipmsteven/xmfun.svg?branch=master)](https://travis-ci.org/ipmsteven/xmfun)
4
+ [![Code
5
+ Climate](https://codeclimate.com/github/ipmsteven/xmfun/badges/gpa.svg)](https://codeclimate.com/github/ipmsteven/xmfun)
2
6
 
3
7
  Yet Another Xiami Music Downloader
4
8
 
data/bin/xmfun CHANGED
@@ -7,8 +7,9 @@ url = ''
7
7
  dst = '.'
8
8
 
9
9
  Clap.run ARGV,
10
- "-c" => lambda { |collect_id| url = "http://www.xiami.com/song/playlist/id/#{collect_id}/type/3" },
11
- "-s" => lambda { |song_id| url = "http://www.xiami.com/song/playlist/id/#{song_id}/object_name/default/object_id/0" },
10
+ #"-c" => lambda { |collect_id| url = "http://www.xiami.com/song/playlist/id/#{collect_id}/type/3" },
11
+ #"-s" => lambda { |song_id| url = "http://www.xiami.com/song/playlist/id/#{song_id}/object_name/default/object_id/0" },
12
+ "-u" => lambda { |xm_url| url = Xmfun::UrlParser.parse(xm_url) },
12
13
  "-d" => lambda { |d| dst = d },
13
14
  "-v" => lambda { puts Xmfun::VERSION },
14
15
  "-h" => lambda { puts Xmfun.help }
data/lib/xmfun.rb CHANGED
@@ -1,4 +1,6 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  require 'xmfun/version'
3
+ require 'xmfun/url_parser'
2
4
  require 'xmfun/decoder'
3
5
  require 'xmfun/downloader'
4
6
 
@@ -8,14 +10,13 @@ module Xmfun
8
10
  def self.help
9
11
  <<-HELP
10
12
  Usage: ruby xmfun.rb
11
- -c cid -- download a music collect
12
- -s sid -- download a single song
13
+ -u url -- url on xiami website
13
14
  -d path -- path to save your music
14
15
  -v -- show version
15
16
  -h -- show help message
16
17
 
17
- Example: Download Collect with ID 10181268 and save to current path
18
- xmfun -c 10181268 -d .
18
+ Example: Download song from "http://www.xiami.com/song/383221" and save to 'xuwei' folder
19
+ xmfun -u http://www.xiami.com/song/383221 -d xuwei
19
20
  HELP
20
21
  end
21
22
  end
data/lib/xmfun/decoder.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  require 'cgi'
2
3
 
3
4
  module Xmfun
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  require 'open-uri'
2
3
  require 'nokogiri'
3
4
  require 'clap'
@@ -18,8 +19,13 @@ module Xmfun
18
19
  end
19
20
 
20
21
  f = Nokogiri::XML(open(url, "Client-IP" => "220.181.111.168"))
21
- progress = ProgressBar.create(:title => "The Progress", :total => f.css("track").size )
22
- Parallel.map(f.css("track"), :finish => lambda { |item, i, result| progress.increment }) do |track|
22
+ progress = ProgressBar.create( :title => "Progress",
23
+ :total => f.css("track").size,
24
+ :format => '%a %bᗧ%i %p%% %t',
25
+ :progress_mark => ' ',
26
+ :remainder_mark => '・'
27
+ )
28
+ Parallel.map( f.css("track"), :in_threads => Parallel.processor_count, :finish => lambda { |item, i, result| progress.increment } ) do |track|
23
29
  album = track.css('album_name').text
24
30
  artist = track.css('artist').text
25
31
  lyric = track.css('lyric').text
@@ -0,0 +1,26 @@
1
+ # -*- encoding : utf-8 -*-
2
+
3
+ module Xmfun
4
+ class UrlParser
5
+ def self.parse(url)
6
+ if uri? url
7
+ url_array = url.split("//").last.split(/(\/|\?)/)
8
+ type, id = url_array[2], url_array[4]
9
+
10
+ case type
11
+ when "album" then "http://www.xiami.com/song/playlist/id/#{id}/type/1"
12
+ when "artist" then "http://www.xiami.com/song/playlist/id/#{id}/type/2"
13
+ when "collect" then "http://www.xiami.com/song/playlist/id/#{id}/type/3"
14
+ when "song" then "http://www.xiami.com/song/playlist/id/#{id}/object_name/default/object_id/0"
15
+ else ""
16
+ end
17
+ else
18
+ false
19
+ end
20
+ end
21
+
22
+ def self.uri?(uri)
23
+ uri =~ /\A#{URI::regexp(['http', 'https'])}\z/
24
+ end
25
+ end
26
+ end
data/lib/xmfun/version.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  module Xmfun
2
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
3
4
  end
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  require 'xmfun'
2
3
 
3
4
  # This file was generated by the `rspec --init` command. Conventionally, all
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  require 'spec_helper'
2
3
 
3
4
  module Xmfun
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xmfun
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - ipmsteven
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-12 00:00:00.000000000 Z
11
+ date: 2014-08-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: clap
@@ -146,6 +146,7 @@ extra_rdoc_files: []
146
146
  files:
147
147
  - ".gitignore"
148
148
  - ".rspec"
149
+ - ".travis.yml"
149
150
  - Gemfile
150
151
  - LICENSE.txt
151
152
  - README.md
@@ -154,6 +155,7 @@ files:
154
155
  - lib/xmfun.rb
155
156
  - lib/xmfun/decoder.rb
156
157
  - lib/xmfun/downloader.rb
158
+ - lib/xmfun/url_parser.rb
157
159
  - lib/xmfun/version.rb
158
160
  - spec/spec_helper.rb
159
161
  - spec/xmfun/decode_spec.rb