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' source 'https://rubygems.org'
# Specify your gem's dependencies in ripper.gemspec # Specify your gem's dependencies in rippr.gemspec
gemspec gemspec

View File

@ -1,4 +1,4 @@
# Ripper # Rippr
TODO: Write a gem description TODO: Write a gem description
@ -6,7 +6,7 @@ TODO: Write a gem description
Add this line to your application's Gemfile: Add this line to your application's Gemfile:
gem 'ripper' gem 'rippr'
And then execute: And then execute:
@ -14,7 +14,7 @@ And then execute:
Or install it yourself as: Or install it yourself as:
$ gem install ripper $ gem install rippr
## Usage ## 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" VERSION = "0.0.1"
end end

View File

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