Ticket #53 (assigned defect)

Opened 2 years ago

Last modified 6 weeks ago

Crashes when MusicBrainz includes partial information

Reported by: http://lool.myopenid.com/ Owned by: http://lool.myopenid.com/
Priority: minor Milestone: future
Component: morituri Version: 0.1.1
Keywords: Cc:

Description

Hey,

With a moderately patched morituri 0.1.1 (patches in other tickets), I get:

With one of my CDs:
Artist : Connick jr., Harry
Title : Harry Connick jr.

MusicBrainz? returns incomplete information and this crashes morituri:
Checking device /dev/sr0
Device /dev/sr0 is mounted, unmounting
CDDB disc id 6a092609
MusicBrainz? disc id Z.MBzLOPmHXetak7UQqgv9kToc0-
Traceback (most recent call last):

File "/usr/bin/rip", line 35, in <module>

sys.exit(main.main(sys.argv[1:]))

File "/usr/lib/python2.6/dist-packages/morituri/rip/main.py", line 12, in main

ret = c.parse(argv)

File "/usr/lib/python2.6/dist-packages/morituri/extern/command/command.py", line 329, in parse

return self.subCommands[command].parse(args[1:])

File "/usr/lib/python2.6/dist-packages/morituri/extern/command/command.py", line 329, in parse

return self.subCommands[command].parse(args[1:])

File "/usr/lib/python2.6/dist-packages/morituri/extern/command/command.py", line 300, in parse

ret = self.do(args)

File "/usr/lib/python2.6/dist-packages/morituri/rip/cd.py", line 116, in do

prog.metadata = prog.getMusicBrainz(ittoc, mbdiscid)

File "/usr/lib/python2.6/dist-packages/morituri/common/program.py", line 295, in getMusicBrainz

metadatas = musicbrainz(mbdiscid)

File "/usr/lib/python2.6/dist-packages/morituri/common/program.py", line 144, in musicbrainz

ret.append(getMetadata(release))

File "/usr/lib/python2.6/dist-packages/morituri/common/program.py", line 78, in getMetadata

metadata.mbid = urlparse.urlparse(release.id)[2].split("/")[-1]

File "/usr/lib/python2.6/urlparse.py", line 129, in urlparse

tuple = urlsplit(url, scheme, allow_fragments)

File "/usr/lib/python2.6/urlparse.py", line 168, in urlsplit

i = url.find(':')

AttributeError?: 'NoneType?' object has no attribute 'find'

It has:
CDDB disc id 6a092609
MusicBrainz? disc id Z.MBzLOPmHXetak7UQqgv9kToc0-

I see morituri had to deal with such a CD in the past as a comment says:
# Arid - Under the Cold Street Lights has getId() None

but unfortunately, this is not enough for this CD.

I've started changing morituri to proceed with the missing data:

  • release.id is None so this in DiscMetadata?.getMetadata() fails:

metadata.mbid = urlparse.urlparse(release.id)[2].split("/")[-1]

  • release.artist.id is also None so this in DiscMetadata?.getMetadata() fails:

metadata.mbidArtist = urlparse.urlparse(release.artist.id)[2].split("/")[-1]

urlparse.urlparse(t.id)[2].split("/")[-1]

  • self.metadata.sortName is None in Program.getPath() so this fails:

vs? = filterForPath(self.metadata.tracks[i - 1].sortName)

but when I reached Program.getTagList():
mbidTrack = self.metadata.tracks[number - 1].mbid
failing because there is no mbid, I stopped because I realized this would mean some tags would be missing from the encoded files.

So instead morituri should probably stop or barf when there is not enough MusicBrainz? information, perhaps with a link to edit it.

Cheers,

Change History

comment:1 Changed 2 years ago by http://thomasvs.myopenid.com/

I have not been able to figure out what it means when this info is missing, or where it can be seen, or where to fill it in. Any idea?

comment:2 Changed 2 years ago by http://thomasvs.myopenid.com/

  • Owner changed from https://thomasvs.myopenid.com/ to http://lool.myopenid.com/
  • Status changed from new to assigned
  • Milestone changed from 0.1.2 to future

I can not find your disc on musicbrainz:
 http://musicbrainz.org/cdtoc/Z.MBzLOPmHXetak7UQqgv9kToc0-

gives not found.

comment:3 Changed 2 years ago by https://www.google.com/accounts/o8/id?id=aitoawkjj0i4mbidagqs2qf3kw1vv9etzkeprge

Hello Thomas,

I'm looking at the same error with a disc of mine:

me@localhost:~/Music$ rip cd rip -o6
Checking device /dev/sr0
CDDB disc id 890c5a0a                         
MusicBrainz disc id UYO3_NdSKvjN_k1m3c.EAii40RA-
Traceback (most recent call last):
  File "/usr/bin/rip", line 35, in <module>
    sys.exit(main.main(sys.argv[1:]))
  File "/usr/lib/python2.7/dist-packages/morituri/rip/main.py", line 12, in main
    ret = c.parse(argv)
  File "/usr/lib/python2.7/dist-packages/morituri/extern/command/command.py", line 329, in parse
    return self.subCommands[command].parse(args[1:])
  File "/usr/lib/python2.7/dist-packages/morituri/extern/command/command.py", line 329, in parse
    return self.subCommands[command].parse(args[1:])
  File "/usr/lib/python2.7/dist-packages/morituri/extern/command/command.py", line 300, in parse
    ret = self.do(args)
  File "/usr/lib/python2.7/dist-packages/morituri/rip/cd.py", line 116, in do
    prog.metadata = prog.getMusicBrainz(ittoc, mbdiscid)
  File "/usr/lib/python2.7/dist-packages/morituri/common/program.py", line 295, in getMusicBrainz
    metadatas = musicbrainz(mbdiscid)
  File "/usr/lib/python2.7/dist-packages/morituri/common/program.py", line 144, in musicbrainz
    ret.append(getMetadata(release))
  File "/usr/lib/python2.7/dist-packages/morituri/common/program.py", line 78, in getMetadata
    metadata.mbid = urlparse.urlparse(release.id)[2].split("/")[-1]
  File "/usr/lib/python2.7/urlparse.py", line 134, in urlparse
    tuple = urlsplit(url, scheme, allow_fragments)
  File "/usr/lib/python2.7/urlparse.py", line 173, in urlsplit
    i = url.find(':')
AttributeError: 'NoneType' object has no attribute 'find'

This is with Morituri 0.1.1, as is shipped with Ubuntu 11.04, but if you need me to poke around I'll be happy to grab the svn version and experiment with this disc - just tell me what you need to know.

comment:4 Changed 15 months ago by https://www.google.com/accounts/o8/id?id=aitoawk5srcm6yjgqjx9oa1ruownfuzsldd8l5w

Hello Thomas,

I have seen this as well for a release ( http://musicbrainz.org/release/31ecf305-6ed6-44a7-a53d-0e455e3e0e38) of which only one CD of two was known to musicbrainz. I have since added the second CD but I do not think it is associated with the CDTOC (uBk5cnnbgJsZ9LEn9XxjeRV7p0A-) yet.

-Jens

comment:5 Changed 6 weeks ago by https://www.google.com/accounts/o8/id?id=aitoawli0bb_q9adkor29jwj-4jv_3uu5keerzu

I

I have seen a similar problem with a multi-CD edition. The first CD was properly recognised by morituri; the second one did not have a MusicBrainz? ID. I added the tags in MusicBrainz? (without subscription) and now morituri shows a similar Traceback as the OP.

The CD in question is:
 http://musicbrainz.org/cdstub/z61lIcOES2Cp6llH43GaghrtOM0-

Here is the console output after I added the stub in MusicBrainz?:

Checking device /dev/sr0
CDDB disc id b00bfc0c
MusicBrainz? disc id z61lIcOES2Cp6llH43GaghrtOM0-
Traceback (most recent call last):

File "/usr/bin/rip", line 35, in <module>

sys.exit(main.main(sys.argv[1:]))

File "/usr/lib/python2.7/dist-packages/morituri/rip/main.py", line 14, in main

ret = c.parse(argv)

File "/usr/lib/python2.7/dist-packages/morituri/rip/main.py", line 82, in parse

logcommand.LogCommand?.parse(self, argv)

File "/usr/lib/python2.7/dist-packages/morituri/extern/command/command.py", line 335, in parse

return self.subCommands[command].parse(args[1:])

File "/usr/lib/python2.7/dist-packages/morituri/extern/command/command.py", line 335, in parse

return self.subCommands[command].parse(args[1:])

File "/usr/lib/python2.7/dist-packages/morituri/extern/command/command.py", line 304, in parse

ret = self.do(args)

File "/usr/lib/python2.7/dist-packages/morituri/rip/cd.py", line 148, in do

prog.metadata = prog.getMusicBrainz(ittoc, mbdiscid)

File "/usr/lib/python2.7/dist-packages/morituri/common/program.py", line 330, in getMusicBrainz

metadatas = musicbrainz(mbdiscid)

File "/usr/lib/python2.7/dist-packages/morituri/common/program.py", line 145, in musicbrainz

ret.append(getMetadata(release))

File "/usr/lib/python2.7/dist-packages/morituri/common/program.py", line 78, in getMetadata

metadata.mbid = urlparse.urlparse(release.id)[2].split("/")[-1]

File "/usr/lib/python2.7/urlparse.py", line 140, in urlparse

tuple = urlsplit(url, scheme, allow_fragments)

File "/usr/lib/python2.7/urlparse.py", line 179, in urlsplit

i = url.find(':')

AttributeError?: 'NoneType?' object has no attribute 'find'

BR

--
Danai

Note: See TracTickets for help on using tickets.