mirror of
https://github.com/clinton-hall/nzbToMedia.git
synced 2025-08-14 02:26:53 -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,6 +1,5 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# This file is part of beets.
|
||||
# Copyright 2016, Rafael Bodill http://github.com/rafi
|
||||
# Copyright 2016, Rafael Bodill https://github.com/rafi
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
|
@ -13,7 +12,6 @@
|
|||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
|
||||
from __future__ import division, absolute_import, print_function
|
||||
|
||||
import pylast
|
||||
from pylast import TopItem, _extract, _number
|
||||
|
@ -28,7 +26,7 @@ API_URL = 'https://ws.audioscrobbler.com/2.0/'
|
|||
|
||||
class LastImportPlugin(plugins.BeetsPlugin):
|
||||
def __init__(self):
|
||||
super(LastImportPlugin, self).__init__()
|
||||
super().__init__()
|
||||
config['lastfm'].add({
|
||||
'user': '',
|
||||
'api_key': plugins.LASTFM_KEY,
|
||||
|
@ -43,7 +41,7 @@ class LastImportPlugin(plugins.BeetsPlugin):
|
|||
}
|
||||
|
||||
def commands(self):
|
||||
cmd = ui.Subcommand('lastimport', help=u'import last.fm play-count')
|
||||
cmd = ui.Subcommand('lastimport', help='import last.fm play-count')
|
||||
|
||||
def func(lib, opts, args):
|
||||
import_lastfm(lib, self._log)
|
||||
|
@ -59,7 +57,7 @@ class CustomUser(pylast.User):
|
|||
tracks.
|
||||
"""
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(CustomUser, self).__init__(*args, **kwargs)
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
def _get_things(self, method, thing, thing_type, params=None,
|
||||
cacheable=True):
|
||||
|
@ -114,9 +112,9 @@ def import_lastfm(lib, log):
|
|||
per_page = config['lastimport']['per_page'].get(int)
|
||||
|
||||
if not user:
|
||||
raise ui.UserError(u'You must specify a user name for lastimport')
|
||||
raise ui.UserError('You must specify a user name for lastimport')
|
||||
|
||||
log.info(u'Fetching last.fm library for @{0}', user)
|
||||
log.info('Fetching last.fm library for @{0}', user)
|
||||
|
||||
page_total = 1
|
||||
page_current = 0
|
||||
|
@ -125,15 +123,15 @@ def import_lastfm(lib, log):
|
|||
retry_limit = config['lastimport']['retry_limit'].get(int)
|
||||
# Iterate through a yet to be known page total count
|
||||
while page_current < page_total:
|
||||
log.info(u'Querying page #{0}{1}...',
|
||||
log.info('Querying page #{0}{1}...',
|
||||
page_current + 1,
|
||||
'/{}'.format(page_total) if page_total > 1 else '')
|
||||
f'/{page_total}' if page_total > 1 else '')
|
||||
|
||||
for retry in range(0, retry_limit):
|
||||
tracks, page_total = fetch_tracks(user, page_current + 1, per_page)
|
||||
if page_total < 1:
|
||||
# It means nothing to us!
|
||||
raise ui.UserError(u'Last.fm reported no data.')
|
||||
raise ui.UserError('Last.fm reported no data.')
|
||||
|
||||
if tracks:
|
||||
found, unknown = process_tracks(lib, tracks, log)
|
||||
|
@ -141,22 +139,22 @@ def import_lastfm(lib, log):
|
|||
unknown_total += unknown
|
||||
break
|
||||
else:
|
||||
log.error(u'ERROR: unable to read page #{0}',
|
||||
log.error('ERROR: unable to read page #{0}',
|
||||
page_current + 1)
|
||||
if retry < retry_limit:
|
||||
log.info(
|
||||
u'Retrying page #{0}... ({1}/{2} retry)',
|
||||
'Retrying page #{0}... ({1}/{2} retry)',
|
||||
page_current + 1, retry + 1, retry_limit
|
||||
)
|
||||
else:
|
||||
log.error(u'FAIL: unable to fetch page #{0}, ',
|
||||
u'tried {1} times', page_current, retry + 1)
|
||||
log.error('FAIL: unable to fetch page #{0}, ',
|
||||
'tried {1} times', page_current, retry + 1)
|
||||
page_current += 1
|
||||
|
||||
log.info(u'... done!')
|
||||
log.info(u'finished processing {0} song pages', page_total)
|
||||
log.info(u'{0} unknown play-counts', unknown_total)
|
||||
log.info(u'{0} play-counts imported', found_total)
|
||||
log.info('... done!')
|
||||
log.info('finished processing {0} song pages', page_total)
|
||||
log.info('{0} unknown play-counts', unknown_total)
|
||||
log.info('{0} play-counts imported', found_total)
|
||||
|
||||
|
||||
def fetch_tracks(user, page, limit):
|
||||
|
@ -190,7 +188,7 @@ def process_tracks(lib, tracks, log):
|
|||
total = len(tracks)
|
||||
total_found = 0
|
||||
total_fails = 0
|
||||
log.info(u'Received {0} tracks in this page, processing...', total)
|
||||
log.info('Received {0} tracks in this page, processing...', total)
|
||||
|
||||
for num in range(0, total):
|
||||
song = None
|
||||
|
@ -201,7 +199,7 @@ def process_tracks(lib, tracks, log):
|
|||
if 'album' in tracks[num]:
|
||||
album = tracks[num]['album'].get('name', '').strip()
|
||||
|
||||
log.debug(u'query: {0} - {1} ({2})', artist, title, album)
|
||||
log.debug('query: {0} - {1} ({2})', artist, title, album)
|
||||
|
||||
# First try to query by musicbrainz's trackid
|
||||
if trackid:
|
||||
|
@ -211,7 +209,7 @@ def process_tracks(lib, tracks, log):
|
|||
|
||||
# If not, try just artist/title
|
||||
if song is None:
|
||||
log.debug(u'no album match, trying by artist/title')
|
||||
log.debug('no album match, trying by artist/title')
|
||||
query = dbcore.AndQuery([
|
||||
dbcore.query.SubstringQuery('artist', artist),
|
||||
dbcore.query.SubstringQuery('title', title)
|
||||
|
@ -220,8 +218,8 @@ def process_tracks(lib, tracks, log):
|
|||
|
||||
# Last resort, try just replacing to utf-8 quote
|
||||
if song is None:
|
||||
title = title.replace("'", u'\u2019')
|
||||
log.debug(u'no title match, trying utf-8 single quote')
|
||||
title = title.replace("'", '\u2019')
|
||||
log.debug('no title match, trying utf-8 single quote')
|
||||
query = dbcore.AndQuery([
|
||||
dbcore.query.SubstringQuery('artist', artist),
|
||||
dbcore.query.SubstringQuery('title', title)
|
||||
|
@ -231,19 +229,19 @@ def process_tracks(lib, tracks, log):
|
|||
if song is not None:
|
||||
count = int(song.get('play_count', 0))
|
||||
new_count = int(tracks[num]['playcount'])
|
||||
log.debug(u'match: {0} - {1} ({2}) '
|
||||
u'updating: play_count {3} => {4}',
|
||||
log.debug('match: {0} - {1} ({2}) '
|
||||
'updating: play_count {3} => {4}',
|
||||
song.artist, song.title, song.album, count, new_count)
|
||||
song['play_count'] = new_count
|
||||
song.store()
|
||||
total_found += 1
|
||||
else:
|
||||
total_fails += 1
|
||||
log.info(u' - No match: {0} - {1} ({2})',
|
||||
log.info(' - No match: {0} - {1} ({2})',
|
||||
artist, title, album)
|
||||
|
||||
if total_fails > 0:
|
||||
log.info(u'Acquired {0}/{1} play-counts ({2} unknown)',
|
||||
log.info('Acquired {0}/{1} play-counts ({2} unknown)',
|
||||
total_found, total, total_fails)
|
||||
|
||||
return total_found, total_fails
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue