itunes_parser 1.0.1
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 +7 -0
- data/.gitignore +34 -0
- data/.travis.yml +4 -0
- data/CODE_OF_CONDUCT.md +13 -0
- data/Gemfile +4 -0
- data/LICENSE +25 -0
- data/README.md +75 -0
- data/Rakefile +1 -0
- data/bin/console +12 -0
- data/bin/setup +7 -0
- data/examples/Library.xml +95888 -0
- data/itunes_parser.gemspec +27 -0
- data/lib/itunes_parser.rb +14 -0
- data/lib/itunes_parser/artist.rb +5 -0
- data/lib/itunes_parser/playlist.rb +35 -0
- data/lib/itunes_parser/plist.rb +18 -0
- data/lib/itunes_parser/track.rb +23 -0
- data/lib/itunes_parser/version.rb +3 -0
- metadata +131 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
|
+
require 'itunes_parser/version'
|
|
5
|
+
|
|
6
|
+
Gem::Specification.new do |spec|
|
|
7
|
+
spec.name = "itunes_parser"
|
|
8
|
+
spec.version = ItunesParser::VERSION
|
|
9
|
+
spec.authors = ["Feña Agar"]
|
|
10
|
+
spec.email = ["ferliagno@gmail.com"]
|
|
11
|
+
spec.licenses = ['UNLICENSE']
|
|
12
|
+
spec.summary = %q{iTunes XML parser based on nokogiri-plist}
|
|
13
|
+
spec.description = %q{A fast and simple iTunes XML parser based on nokogiri-plist}
|
|
14
|
+
spec.homepage = "https://github.com/elfenars/itunes_parser"
|
|
15
|
+
|
|
16
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
|
17
|
+
spec.bindir = "exe"
|
|
18
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
19
|
+
spec.require_paths = ["lib"]
|
|
20
|
+
|
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.10"
|
|
22
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
|
23
|
+
spec.add_development_dependency "pry"
|
|
24
|
+
|
|
25
|
+
spec.add_runtime_dependency "nokogiri-plist"
|
|
26
|
+
spec.add_development_dependency "rspec", "~> 3"
|
|
27
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module ItunesParser
|
|
2
|
+
module Playlist
|
|
3
|
+
|
|
4
|
+
# Shows all playlists in the doc.
|
|
5
|
+
# Returns Array of Hashes, each Hash is a playlist.
|
|
6
|
+
# Optional param `pretty` returns Array of Hashes with only IDs and Names.
|
|
7
|
+
def playlists(pretty: false)
|
|
8
|
+
_playlists = doc["Playlists"]
|
|
9
|
+
|
|
10
|
+
unless pretty
|
|
11
|
+
_playlists
|
|
12
|
+
else
|
|
13
|
+
_playlists.collect{|pl| {id: pl["Playlist ID"], name: pl["Name"] }}
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Shows one playlist.
|
|
18
|
+
# Returns Hash with playlist info.
|
|
19
|
+
def playlist(id:)
|
|
20
|
+
playlists.select{|pl| pl["Playlist ID"] == id}.first
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Shows all tracks of a playlist.
|
|
24
|
+
# Returns Array of Hashes, each Hash is a track.
|
|
25
|
+
def playlist_tracks(id:)
|
|
26
|
+
tracks = []
|
|
27
|
+
|
|
28
|
+
playlist(id: id)["Playlist Items"].each do |playlist_item|
|
|
29
|
+
tracks << self.track(id: playlist_item["Track ID"])
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
tracks
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require 'itunes_parser/playlist'
|
|
2
|
+
require 'itunes_parser/track'
|
|
3
|
+
require 'nokogiri-plist'
|
|
4
|
+
|
|
5
|
+
module ItunesParser
|
|
6
|
+
class PList
|
|
7
|
+
include Playlist
|
|
8
|
+
include Track
|
|
9
|
+
|
|
10
|
+
# Parsed XML with nokogiri-plist
|
|
11
|
+
attr_reader :doc
|
|
12
|
+
|
|
13
|
+
# Parses the XML
|
|
14
|
+
def initialize(file: nil)
|
|
15
|
+
@doc = Nokogiri::PList(file)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module ItunesParser
|
|
2
|
+
module Track
|
|
3
|
+
|
|
4
|
+
# Shows all tracks in the doc.
|
|
5
|
+
# Returns Hash { track_id => { <track_information> } }
|
|
6
|
+
# Optional param `pretty` returns Array of Hashes with only IDs and Names.
|
|
7
|
+
def tracks pretty: false
|
|
8
|
+
_tracks = doc["Tracks"]
|
|
9
|
+
|
|
10
|
+
unless pretty
|
|
11
|
+
_tracks
|
|
12
|
+
else
|
|
13
|
+
_tracks.collect{|track| { id: track[1]["Track ID"], name: track[1]["Name"] }}
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Shows one track.
|
|
18
|
+
# Returns Hash with track info.
|
|
19
|
+
def track(id:)
|
|
20
|
+
tracks.select{|pl| pl["#{id}"] }.first[1]
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: itunes_parser
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 1.0.1
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Feña Agar
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: exe
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2015-09-26 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: bundler
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '1.10'
|
|
20
|
+
type: :development
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '1.10'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: rake
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - "~>"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '10.0'
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '10.0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: pry
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - ">="
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '0'
|
|
48
|
+
type: :development
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - ">="
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: nokogiri-plist
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - ">="
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
type: :runtime
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - ">="
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: rspec
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - "~>"
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '3'
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - "~>"
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '3'
|
|
83
|
+
description: A fast and simple iTunes XML parser based on nokogiri-plist
|
|
84
|
+
email:
|
|
85
|
+
- ferliagno@gmail.com
|
|
86
|
+
executables: []
|
|
87
|
+
extensions: []
|
|
88
|
+
extra_rdoc_files: []
|
|
89
|
+
files:
|
|
90
|
+
- ".gitignore"
|
|
91
|
+
- ".travis.yml"
|
|
92
|
+
- CODE_OF_CONDUCT.md
|
|
93
|
+
- Gemfile
|
|
94
|
+
- LICENSE
|
|
95
|
+
- README.md
|
|
96
|
+
- Rakefile
|
|
97
|
+
- bin/console
|
|
98
|
+
- bin/setup
|
|
99
|
+
- examples/Library.xml
|
|
100
|
+
- itunes_parser.gemspec
|
|
101
|
+
- lib/itunes_parser.rb
|
|
102
|
+
- lib/itunes_parser/artist.rb
|
|
103
|
+
- lib/itunes_parser/playlist.rb
|
|
104
|
+
- lib/itunes_parser/plist.rb
|
|
105
|
+
- lib/itunes_parser/track.rb
|
|
106
|
+
- lib/itunes_parser/version.rb
|
|
107
|
+
homepage: https://github.com/elfenars/itunes_parser
|
|
108
|
+
licenses:
|
|
109
|
+
- UNLICENSE
|
|
110
|
+
metadata: {}
|
|
111
|
+
post_install_message:
|
|
112
|
+
rdoc_options: []
|
|
113
|
+
require_paths:
|
|
114
|
+
- lib
|
|
115
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
116
|
+
requirements:
|
|
117
|
+
- - ">="
|
|
118
|
+
- !ruby/object:Gem::Version
|
|
119
|
+
version: '0'
|
|
120
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
121
|
+
requirements:
|
|
122
|
+
- - ">="
|
|
123
|
+
- !ruby/object:Gem::Version
|
|
124
|
+
version: '0'
|
|
125
|
+
requirements: []
|
|
126
|
+
rubyforge_project:
|
|
127
|
+
rubygems_version: 2.4.5.1
|
|
128
|
+
signing_key:
|
|
129
|
+
specification_version: 4
|
|
130
|
+
summary: iTunes XML parser based on nokogiri-plist
|
|
131
|
+
test_files: []
|