mirror of
https://github.com/clinton-hall/nzbToMedia.git
synced 2025-08-20 05:13:16 -07:00
Update vendored beets to 1.6.0
Updates colorama to 0.4.6 Adds confuse version 1.7.0 Updates jellyfish to 0.9.0 Adds mediafile 0.10.1 Updates munkres to 1.1.4 Updates musicbrainzngs to 0.7.1 Updates mutagen to 1.46.0 Updates pyyaml to 6.0 Updates unidecode to 1.3.6
This commit is contained in:
parent
5073ec0c6f
commit
56c6773c6b
385 changed files with 25143 additions and 18080 deletions
|
@ -1,4 +1,3 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# This file is part of beets.
|
||||
# Copyright 2016, Jakob Schnitzer.
|
||||
#
|
||||
|
@ -15,47 +14,37 @@
|
|||
|
||||
"""Update library's tags using MusicBrainz.
|
||||
"""
|
||||
from __future__ import division, absolute_import, print_function
|
||||
|
||||
from beets.plugins import BeetsPlugin
|
||||
from beets.plugins import BeetsPlugin, apply_item_changes
|
||||
from beets import autotag, library, ui, util
|
||||
from beets.autotag import hooks
|
||||
from collections import defaultdict
|
||||
|
||||
import re
|
||||
|
||||
def apply_item_changes(lib, item, move, pretend, write):
|
||||
"""Store, move and write the item according to the arguments.
|
||||
"""
|
||||
if not pretend:
|
||||
# Move the item if it's in the library.
|
||||
if move and lib.directory in util.ancestry(item.path):
|
||||
item.move(with_album=False)
|
||||
|
||||
if write:
|
||||
item.try_write()
|
||||
item.store()
|
||||
MBID_REGEX = r"(\d|\w){8}-(\d|\w){4}-(\d|\w){4}-(\d|\w){4}-(\d|\w){12}"
|
||||
|
||||
|
||||
class MBSyncPlugin(BeetsPlugin):
|
||||
def __init__(self):
|
||||
super(MBSyncPlugin, self).__init__()
|
||||
super().__init__()
|
||||
|
||||
def commands(self):
|
||||
cmd = ui.Subcommand('mbsync',
|
||||
help=u'update metadata from musicbrainz')
|
||||
help='update metadata from musicbrainz')
|
||||
cmd.parser.add_option(
|
||||
u'-p', u'--pretend', action='store_true',
|
||||
help=u'show all changes but do nothing')
|
||||
'-p', '--pretend', action='store_true',
|
||||
help='show all changes but do nothing')
|
||||
cmd.parser.add_option(
|
||||
u'-m', u'--move', action='store_true', dest='move',
|
||||
help=u"move files in the library directory")
|
||||
'-m', '--move', action='store_true', dest='move',
|
||||
help="move files in the library directory")
|
||||
cmd.parser.add_option(
|
||||
u'-M', u'--nomove', action='store_false', dest='move',
|
||||
help=u"don't move files in library")
|
||||
'-M', '--nomove', action='store_false', dest='move',
|
||||
help="don't move files in library")
|
||||
cmd.parser.add_option(
|
||||
u'-W', u'--nowrite', action='store_false',
|
||||
'-W', '--nowrite', action='store_false',
|
||||
default=None, dest='write',
|
||||
help=u"don't write updated metadata to files")
|
||||
help="don't write updated metadata to files")
|
||||
cmd.parser.add_format_option()
|
||||
cmd.func = self.func
|
||||
return [cmd]
|
||||
|
@ -75,17 +64,23 @@ class MBSyncPlugin(BeetsPlugin):
|
|||
"""Retrieve and apply info from the autotagger for items matched by
|
||||
query.
|
||||
"""
|
||||
for item in lib.items(query + [u'singleton:true']):
|
||||
for item in lib.items(query + ['singleton:true']):
|
||||
item_formatted = format(item)
|
||||
if not item.mb_trackid:
|
||||
self._log.info(u'Skipping singleton with no mb_trackid: {0}',
|
||||
self._log.info('Skipping singleton with no mb_trackid: {0}',
|
||||
item_formatted)
|
||||
continue
|
||||
|
||||
# Do we have a valid MusicBrainz track ID?
|
||||
if not re.match(MBID_REGEX, item.mb_trackid):
|
||||
self._log.info('Skipping singleton with invalid mb_trackid:' +
|
||||
' {0}', item_formatted)
|
||||
continue
|
||||
|
||||
# Get the MusicBrainz recording info.
|
||||
track_info = hooks.track_for_mbid(item.mb_trackid)
|
||||
if not track_info:
|
||||
self._log.info(u'Recording ID not found: {0} for track {0}',
|
||||
self._log.info('Recording ID not found: {0} for track {0}',
|
||||
item.mb_trackid,
|
||||
item_formatted)
|
||||
continue
|
||||
|
@ -103,16 +98,22 @@ class MBSyncPlugin(BeetsPlugin):
|
|||
for a in lib.albums(query):
|
||||
album_formatted = format(a)
|
||||
if not a.mb_albumid:
|
||||
self._log.info(u'Skipping album with no mb_albumid: {0}',
|
||||
self._log.info('Skipping album with no mb_albumid: {0}',
|
||||
album_formatted)
|
||||
continue
|
||||
|
||||
items = list(a.items())
|
||||
|
||||
# Do we have a valid MusicBrainz album ID?
|
||||
if not re.match(MBID_REGEX, a.mb_albumid):
|
||||
self._log.info('Skipping album with invalid mb_albumid: {0}',
|
||||
album_formatted)
|
||||
continue
|
||||
|
||||
# Get the MusicBrainz album information.
|
||||
album_info = hooks.album_for_mbid(a.mb_albumid)
|
||||
if not album_info:
|
||||
self._log.info(u'Release ID {0} not found for album {1}',
|
||||
self._log.info('Release ID {0} not found for album {1}',
|
||||
a.mb_albumid,
|
||||
album_formatted)
|
||||
continue
|
||||
|
@ -120,7 +121,7 @@ class MBSyncPlugin(BeetsPlugin):
|
|||
# Map release track and recording MBIDs to their information.
|
||||
# Recordings can appear multiple times on a release, so each MBID
|
||||
# maps to a list of TrackInfo objects.
|
||||
releasetrack_index = dict()
|
||||
releasetrack_index = {}
|
||||
track_index = defaultdict(list)
|
||||
for track_info in album_info.tracks:
|
||||
releasetrack_index[track_info.release_track_id] = track_info
|
||||
|
@ -148,7 +149,7 @@ class MBSyncPlugin(BeetsPlugin):
|
|||
break
|
||||
|
||||
# Apply.
|
||||
self._log.debug(u'applying changes to {}', album_formatted)
|
||||
self._log.debug('applying changes to {}', album_formatted)
|
||||
with lib.transaction():
|
||||
autotag.apply_metadata(album_info, mapping)
|
||||
changed = False
|
||||
|
@ -173,5 +174,5 @@ class MBSyncPlugin(BeetsPlugin):
|
|||
|
||||
# Move album art (and any inconsistent items).
|
||||
if move and lib.directory in util.ancestry(items[0].path):
|
||||
self._log.debug(u'moving album {0}', album_formatted)
|
||||
self._log.debug('moving album {0}', album_formatted)
|
||||
a.move()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue