From 01d0b96f72c2bbb814939faaa5c062ef92138c96 Mon Sep 17 00:00:00 2001 From: masterisk Date: Sat, 7 Feb 2026 16:15:53 +0900 Subject: [PATCH] Add MusicBrainz disc ID submission URL display Display the MusicBrainz disc ID submission URL after track info in the CLI. This allows users to easily submit disc IDs for CDs not yet in the database. --- lib/rubyripper/cli/cliDisc.rb | 8 ++++++++ lib/rubyripper/disc/calcMusicbrainzID.rb | 12 ++++++++++++ lib/rubyripper/disc/disc.rb | 1 + 3 files changed, 21 insertions(+) diff --git a/lib/rubyripper/cli/cliDisc.rb b/lib/rubyripper/cli/cliDisc.rb index e5fc25b1..87c51f8d 100644 --- a/lib/rubyripper/cli/cliDisc.rb +++ b/lib/rubyripper/cli/cliDisc.rb @@ -79,6 +79,7 @@ def showDisc def showFreedb() showDiscInfo() showTrackInfo() + showMusicbrainzIDSubmitInfo() end def showDiscInfo @@ -105,6 +106,13 @@ def showTrackInfo @out.puts "" end + def showMusicbrainzIDSubmitInfo + if discReady? + @out.puts _("Submit DiscID to MusicBrainz via : %s") % [@cd.musicbrainzSubmitURL] + @out.puts "" + end + end + # build the trackinfo def trackInfo trackInfo = Hash.new diff --git a/lib/rubyripper/disc/calcMusicbrainzID.rb b/lib/rubyripper/disc/calcMusicbrainzID.rb index 1d4c8ba7..0f368e9a 100644 --- a/lib/rubyripper/disc/calcMusicbrainzID.rb +++ b/lib/rubyripper/disc/calcMusicbrainzID.rb @@ -42,6 +42,18 @@ def discid @discid end + # fetch the MusicBrainz submit URL + def musicbrainzSubmitURL + getMusicBrainzLookupPath() if @musicbrainzLookupPath.nil? + url = String.new + url << 'https://musicbrainz.org/cdtoc/attach?toc=' + url << "#{@firstTrack}+#{@lastTrack}" + (0..@lastTrack).each do |tracknumber| + url << "+#{@offsets[tracknumber]}" + end + url + end + private # try to calculate it ourselves, prefer cd-info if available diff --git a/lib/rubyripper/disc/disc.rb b/lib/rubyripper/disc/disc.rb index e0c14d57..24759cb7 100644 --- a/lib/rubyripper/disc/disc.rb +++ b/lib/rubyripper/disc/disc.rb @@ -65,6 +65,7 @@ def freedbDiscid ; @calcFreedbID.discid; end # helper functions for @musicbrainz def musicbrainzLookupPath ; @calcMusicbrainzID.musicbrainzLookupPath ; end def musicbrainzDiscid ; @calcMusicbrainzID.discid ; end + def musicbrainzSubmitURL ; @calcMusicbrainzID.musicbrainzSubmitURL ; end # this can take a while so run in background def startExtendedTocScan()