Merge pull request #2775 from nguillaumin/skip-non-audio-media

Fixes #2688: Skip non-audio media from MusicBrainz
This commit is contained in:
Adrian Sampson 2017-12-30 20:17:46 -05:00 committed by GitHub
commit a5fc80ec50
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 32 additions and 2 deletions

View file

@ -36,6 +36,9 @@ if util.SNI_SUPPORTED:
else:
BASE_URL = 'http://musicbrainz.org/'
NON_AUDIO_FORMATS = ['Data CD', 'DVD', 'DVD-Video', 'Blu-ray', 'HD-DVD', 'VCD',
'SVCD', 'UMD', 'VHS']
musicbrainzngs.set_useragent('beets', beets.__version__,
'http://beets.io/')
@ -275,6 +278,9 @@ def album_info(release):
disctitle = medium.get('title')
format = medium.get('format')
if format in NON_AUDIO_FORMATS:
continue
all_tracks = medium['track-list']
if 'pregap' in medium:
all_tracks.insert(0, medium['pregap'])

View file

@ -6,6 +6,9 @@ Changelog
Changelog goes here!
Fixes:
* Non-audio media (DVD-Video, etc.) are now skipped by the autotagger. :bug:`2688`
1.4.6 (December 21, 2017)
-------------------------

View file

@ -27,7 +27,7 @@ import mock
class MBAlbumInfoTest(_common.TestCase):
def _make_release(self, date_str='2009', tracks=None, track_length=None,
track_artist=False):
track_artist=False, medium_format='FORMAT'):
release = {
'title': 'ALBUM TITLE',
'id': 'ALBUM ID',
@ -90,7 +90,7 @@ class MBAlbumInfoTest(_common.TestCase):
release['medium-list'].append({
'position': '1',
'track-list': track_list,
'format': 'FORMAT',
'format': medium_format,
'title': 'MEDIUM TITLE',
})
return release
@ -324,6 +324,27 @@ class MBAlbumInfoTest(_common.TestCase):
d = mb.album_info(release)
self.assertEqual(d.data_source, 'MusicBrainz')
def test_skip_non_audio_dvd(self):
tracks = [self._make_track('TITLE ONE', 'ID ONE', 100.0 * 1000.0),
self._make_track('TITLE TWO', 'ID TWO', 200.0 * 1000.0)]
release = self._make_release(tracks=tracks, medium_format="DVD")
d = mb.album_info(release)
self.assertEqual(len(d.tracks), 0)
def test_skip_non_audio_dvd_video(self):
tracks = [self._make_track('TITLE ONE', 'ID ONE', 100.0 * 1000.0),
self._make_track('TITLE TWO', 'ID TWO', 200.0 * 1000.0)]
release = self._make_release(tracks=tracks, medium_format="DVD-Video")
d = mb.album_info(release)
self.assertEqual(len(d.tracks), 0)
def test_no_skip_dvd_audio(self):
tracks = [self._make_track('TITLE ONE', 'ID ONE', 100.0 * 1000.0),
self._make_track('TITLE TWO', 'ID TWO', 200.0 * 1000.0)]
release = self._make_release(tracks=tracks, medium_format="DVD-Audio")
d = mb.album_info(release)
self.assertEqual(len(d.tracks), 2)
class ParseIDTest(_common.TestCase):
def test_parse_id_correct(self):