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:
parent
e3c9b4fa0a
commit
205930ed40
4
.gitmodules
vendored
Normal file
4
.gitmodules
vendored
Normal 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
|
||||
2
Gemfile
2
Gemfile
@ -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
|
||||
|
||||
@ -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
23
bin/rippr
Executable 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
28
lib/musicbrainz_discid.rb
Normal 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
|
||||
@ -1,5 +0,0 @@
|
||||
require "ripper/version"
|
||||
|
||||
module Ripper
|
||||
# Your code goes here...
|
||||
end
|
||||
27
lib/rippr.rb
Normal file
27
lib/rippr.rb
Normal 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
|
||||
@ -1,3 +1,3 @@
|
||||
module Ripper
|
||||
module Rippr
|
||||
VERSION = "0.0.1"
|
||||
end
|
||||
@ -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
|
||||
Loading…
Reference in New Issue
Block a user