1
0
mirror of https://github.com/danbee/rippr synced 2025-03-04 08:39:08 +00:00

Successfully get list of releases from MusicBrainz.

This commit is contained in:
Dan Barber 2014-01-14 14:16:21 +00:00
parent e3c9b4fa0a
commit 205930ed40
9 changed files with 91 additions and 13 deletions

4
.gitmodules vendored Normal file
View File

@ -0,0 +1,4 @@
[submodule "lib/vendor/musicbrainz"]
path = lib/vendor/musicbrainz
url = git@github.com:danbee/musicbrainz.git
branch = feature/find-release-by-discid

View File

@ -1,4 +1,4 @@
source 'https://rubygems.org'
# Specify your gem's dependencies in ripper.gemspec
# Specify your gem's dependencies in rippr.gemspec
gemspec

View File

@ -1,4 +1,4 @@
# Ripper
# Rippr
TODO: Write a gem description
@ -6,7 +6,7 @@ TODO: Write a gem description
Add this line to your application's Gemfile:
gem 'ripper'
gem 'rippr'
And then execute:
@ -14,7 +14,7 @@ And then execute:
Or install it yourself as:
$ gem install ripper
$ gem install rippr
## Usage

23
bin/rippr Executable file
View File

@ -0,0 +1,23 @@
#!/usr/bin/env ruby
require 'bundler'
Bundler.setup
require 'ostruct'
require 'thor'
require 'musicbrainz'
require 'rippr'
class Cli < Thor
desc "rip", "Rip the CD currently in the drive."
def rip
disc = 'pmzhT6ZlFiwSRCdVwV0eqire5_Y-'
metadata = Rippr::MetaData.new(disc)
metadata.releases.each do |release|
puts release.title
end
end
end
Cli.start(ARGV)

28
lib/musicbrainz_discid.rb Normal file
View File

@ -0,0 +1,28 @@
# Extend the MusicBrainz library to enable discid lookups.
module MusicBrainz
module Bindings
module DiscidReleases
def parse(xml)
xml.xpath('./disc/release-list/release').map do |xml|
MusicBrainz::Bindings::Release.parse(xml)
end
end
extend self
end
end
end
module MusicBrainz
class Release
class << self
def find_by_discid(id)
client.load(:discid, { id: id }, {
binding: :discid_releases,
create_models: :release
})
end
end
end
end

View File

@ -1,5 +0,0 @@
require "ripper/version"
module Ripper
# Your code goes here...
end

27
lib/rippr.rb Normal file
View File

@ -0,0 +1,27 @@
require "musicbrainz_discid"
require "rippr/version"
module Rippr
class MetaData
attr_accessor :releases
def initialize(discid)
MusicBrainz.configure do |c|
c.app_name = "Rippr"
c.app_version = "0.1"
c.contact = "rippr@danbarber.me"
end
@discid = discid
end
def releases
@releases ||= MusicBrainz::Release.find_by_discid(@discid)
end
end
end
class DiscId
def self.read(dev)
OpenStruct.new(id: 'pmzhT6ZlFiwSRCdVwV0eqire5_Y-') # Stubbed for initial testing
end
end

View File

@ -1,3 +1,3 @@
module Ripper
module Rippr
VERSION = "0.0.1"
end

View File

@ -1,11 +1,11 @@
# coding: utf-8
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'ripper/version'
require 'rippr/version'
Gem::Specification.new do |spec|
spec.name = "ripper"
spec.version = Ripper::VERSION
spec.name = "rippr"
spec.version = Rippr::VERSION
spec.authors = ["Dan Barber"]
spec.email = ["dan@new-bamboo.co.uk"]
spec.description = %q{Rip your CD's on the command line. Uses MusicBrainz and CDParanoia.}
@ -22,5 +22,6 @@ Gem::Specification.new do |spec|
spec.add_development_dependency "rake"
spec.add_dependency "discid"
spec.add_dependency "musicbrainz"
spec.add_dependency "thor"
end