Giter Club home page Giter Club logo

beets-check's People

Contributors

alebianco avatar geigerzaehler avatar hexacera avatar mosic avatar nik014 avatar shizeeg avatar ssssam avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

beets-check's Issues

Assertion error when importing in threaded mode

This error pops up when trying to import with beets-check enabled. And doesn't appear with beets-check disabled.

beet import --flat -g 2012\ -\ The\ Best\ Of\ Santana\ \(Sony\ Music\)/

<normal output for the first grouping, then starts a second grouping>

/common/torrents/Santana-Discography.1969-2013.Lossless/2012 - The Best Of Santana (Sony Music)/Vol.2/01. Persuasion.flac
/common/torrents/Santana-Discography.1969-2013.Lossless/2012 - The Best Of Santana (Sony Music)/Vol.2/02. You Just Don't Care.flac
/common/torrents/Santana-Discography.1969-2013.Lossless/2012 - The Best Of Santana (Sony Music)/Vol.2/03. Black Magic Woman,Gypsy Queen (Live).flac
/common/torrents/Santana-Discography.1969-2013.Lossless/2012 - The Best Of Santana (Sony Music)/Vol.2/04. Incident At Neshabur.flac
/common/torrents/Santana-Discography.1969-2013.Lossless/2012 - The Best Of Santana (Sony Music)/Vol.2/05. Se A Cabo.flac
/common/torrents/Santana-Discography.1969-2013.Lossless/2012 - The Best Of Santana (Sony Music)/Vol.2/06. Hope You're Feeling Better.flac
/common/torrents/Santana-Discography.1969-2013.Lossless/2012 - The Best Of Santana (Sony Music)/Vol.2/07. Toussaint L'Overture.flac
/common/torrents/Santana-Discography.1969-2013.Lossless/2012 - The Best Of Santana (Sony Music)/Vol.2/08. Guajira.flac
/common/torrents/Santana-Discography.1969-2013.Lossless/2012 - The Best Of Santana (Sony Music)/Vol.2/09. Everything's Coming Our Way.flac
/common/torrents/Santana-Discography.1969-2013.Lossless/2012 - The Best Of Santana (Sony Music)/Vol.2/10. Europa (Earth's Cry Heaven's Smile) (Live).flac
/common/torrents/Santana-Discography.1969-2013.Lossless/2012 - The Best Of Santana (Sony Music)/Vol.2/11. Stormy.flac
/common/torrents/Santana-Discography.1969-2013.Lossless/2012 - The Best Of Santana (Sony Music)/Vol.2/12. Well All Right.flac
/common/torrents/Santana-Discography.1969-2013.Lossless/2012 - The Best Of Santana (Sony Music)/Vol.2/13. One Chain (Don't Make No Prison).flac
/common/torrents/Santana-Discography.1969-2013.Lossless/2012 - The Best Of Santana (Sony Music)/Vol.2/14. Peace On Earth- Mother Earth- Third Stone From The Sun (Medley).flac (14 items)

Correcting tags from:
    Santana - The Best Of Santana Volume 2
To:
    Santana - The Best of Santana, Volume 2
URL:
    http://musicbrainz.org/release/92c67fbd-9131-4703-b8ca-30351f320d54
(Similarity: 99.9%) (tracks) (2000, US)
 * Black Magic Woman/Gypsy Queen (Live)                            -> Black Magic Woman / Gypsy Queen (live)
 * Incident At Neshabur                                            -> Incident at Neshabur
 * Se A Cabo                                                       -> Se Acabo
 * Europa (Earth's Cry Heaven's Smile) (Live)                      -> Europa (Earth's Cry Heaven's Smile) (live)
 * Peace On Earth- Mother Earth- Third Stone From The Sun (Medley) -> Peace on Earth... Mother Earth... Third Stone From the Sun (title)
Traceback (most recent call last):
  File "/bin/beet", line 9, in <module>
    load_entry_point('beets==1.3.14', 'console_scripts', 'beet')()
  File "/usr/lib/python2.7/site-packages/beets-1.3.14-py2.7.egg/beets/ui/__init__.py", line 1140, in main
    _raw_main(args)
  File "/usr/lib/python2.7/site-packages/beets-1.3.14-py2.7.egg/beets/ui/__init__.py", line 1130, in _raw_main
    subcommand.func(lib, suboptions, subargs)
  File "/usr/lib/python2.7/site-packages/beets-1.3.14-py2.7.egg/beets/ui/commands.py", line 881, in import_func
    import_files(lib, paths, query)
  File "/usr/lib/python2.7/site-packages/beets-1.3.14-py2.7.egg/beets/ui/commands.py", line 858, in import_files
    session.run()
  File "/usr/lib/python2.7/site-packages/beets-1.3.14-py2.7.egg/beets/importer.py", line 316, in run
    pl.run_parallel(QUEUE_SIZE)
  File "/usr/lib/python2.7/site-packages/beets-1.3.14-py2.7.egg/beets/util/pipeline.py", line 347, in run
    self.coro.send(msg)
  File "/usr/lib/python2.7/site-packages/beets-1.3.14-py2.7.egg/beets/util/pipeline.py", line 160, in coro
    task = func(*(args + (task,)))
  File "/usr/lib/python2.7/site-packages/beets-1.3.14-py2.7.egg/beets/importer.py", line 1376, in manipulate_files
    session=session,
  File "/usr/lib/python2.7/site-packages/beets-1.3.14-py2.7.egg/beets/importer.py", line 671, in manipulate_files
    item.try_write()
  File "/usr/lib/python2.7/site-packages/beets-1.3.14-py2.7.egg/beets/library.py", line 609, in try_write
    self.write(path, tags)
  File "/usr/lib/python2.7/site-packages/beets-1.3.14-py2.7.egg/beets/library.py", line 581, in write
    plugins.send('write', item=self, path=path, tags=item_tags)
  File "/usr/lib/python2.7/site-packages/beets-1.3.14-py2.7.egg/beets/plugins.py", line 458, in send
    result = handler(**arguments)
  File "/usr/lib/python2.7/site-packages/beets-1.3.14-py2.7.egg/beets/plugins.py", line 117, in wrapper
    assert self._log.level == logging.NOTSET
AssertionError
beets version 1.3.14
plugins: chroma, check, convert, duplicates, embedart, fetchart, info, missing, play, smartplaylist, zero

This seems to be an issue with the beets-check plugin. A previous issue was opened in beets: beetbox/beets#1467

In that issue, @steveh points out the error doesn't happen with threaded = no.

Embedart plugin invalidates checksum

The embedart plugin writes images to media files. Since the plugin uses a different API from other plugins beets-check does not detect these changes. This leads to invalid checksums.

This is an upstream issue and will be addressed in a patch for beets.

This came up in another issue.

Would you like to migrate this to the beetbox organization?

It'd be separate from the beets repo, so you'd still be the maintainer.

If so, then do you have any kind of rules for how other beetbox members/contributors can interact with this repository? We haven't yet decided on our side, so we're soliciting input.

Is this project dead?

Aside from it seeing no commits since 2015, some API changes (or perhaps just Python 3) seem to have done this plugin in pretty badly; importing anything with this plugin enabled with the default settings gives this error:

Traceback (most recent call last):
  File "/usr/bin/beet", line 11, in <module>
    load_entry_point('beets==1.4.7', 'console_scripts', 'beet')()
  File "/usr/lib/python3.6/site-packages/beets/ui/__init__.py", line 1256, in main
    _raw_main(args)
  File "/usr/lib/python3.6/site-packages/beets/ui/__init__.py", line 1243, in _raw_main
    subcommand.func(lib, suboptions, subargs)
  File "/usr/lib/python3.6/site-packages/beets/ui/commands.py", line 937, in import_func
    import_files(lib, paths, query)
  File "/usr/lib/python3.6/site-packages/beets/ui/commands.py", line 914, in import_files
    session.run()
  File "/usr/lib/python3.6/site-packages/beets/importer.py", line 329, in run
    pl.run_sequential()
  File "/usr/lib/python3.6/site-packages/beets/util/pipeline.py", line 389, in run_sequential
    list(self.pull())
  File "/usr/lib/python3.6/site-packages/beets/util/pipeline.py", line 466, in pull
    out = coro.send(msg)
  File "/usr/lib/python3.6/site-packages/beets/util/pipeline.py", line 171, in coro
    task = func(*(args + (task,)))
  File "/usr/lib/python3.6/site-packages/beets/importer.py", line 1371, in user_query
    plugins.send('import_task_choice', session=session, task=task)
  File "/usr/lib/python3.6/site-packages/beets/plugins.py", line 452, in send
    result = handler(**arguments)
  File "/usr/lib/python3.6/site-packages/beets/plugins.py", line 124, in wrapper
    return func(*args, **kwargs)
  File "/usr/lib/python3.6/site-packages/beetsplug/check.py", line 152, in verify_import_integrity
    verify_integrity(item)
  File "/usr/lib/python3.6/site-packages/beetsplug/check.py", line 53, in verify_integrity
    checker.check(item)
  File "/usr/lib/python3.6/site-packages/beetsplug/check.py", line 486, in check
    process = Popen(self.cmdline.format(self.shellquote(syspath(item.path))),
  File "/usr/lib/python3.6/site-packages/beetsplug/check.py", line 507, in shellquote
    return "'" + s.replace("'", r"'\''") + "'"
TypeError: a bytes-like object is required, not 'str'

Wrong filenames and confusing messages

When check reports an integrity problem with a file (On import), it first reports that it is checking a completely different file, and then gives the name of the actually corrupt file...

check: Warning: failed to verify integrity

check:   /path/goodfile.mp3: error reading /path/badfile.mp3: It seems that file is truncated or there is garbage at the end of the file

check: Warning: failed to verify integrity

check:   /path2/09_goodfile.flac: error reading /path2/03_badfile.flac: while decoding data
check:   /path2/09_goodfile.flac: error reading /path2/07_badfile.flac: while decoding data

check: Warning: failed to verify integrity

check:   /path3/05_goodfile.flac: error reading /path3/01_badfile.flac: while decoding data

Manually checking the goodfiles and badfiles confirms that they are good and bad... but why is the goodfile name appearing in the message at all? Shouldn't it just be the badfile?

sqlite3.InterfaceError

beets-check explodes sometimes when using it in conjunction with beets embedart.

I will provide these files if you like.

issue over at /beets: beetbox/beets#1242

kef@kathmandu in 2014Music/
› beet -v embedart -f ../Music/Nobuo\ Uematsu/1993\ -\ Piano\ Collections_\ Final\ Fantasy\ V/cover.jpg path:../Music/Nobuo\ Uematsu/1993\ -\ Piano\ Collections_\ Final\ Fantasy\ V
user configuration: /Users/kef/.beets/config.yaml
data directory: /Users/kef/.beets
Sending event: pluginload
artresizer: method is (2, (6, 9, 0))
library database: /Volumes/r0ckc4ndy/Music/.beetslibrary.blb
library directory: /Volumes/r0ckc4ndy/Music
Sending event: library_opened
No album art present in Nobuo Uematsu - A Presentiment.
Resizing album art to 500 pixels wide
artresizer: ImageMagick resizing /Volumes/r0ckc4ndy/Music/Nobuo Uematsu/1993 - Piano Collections_ Final Fantasy V/cover.jpg to /var/folders/dv/l3_5wprd61q5q8csk3y6hbx00000gn/T/tmpFLk4C1.jpg
embedart: embedding /var/folders/dv/l3_5wprd61q5q8csk3y6hbx00000gn/T/tmpFLk4C1.jpg
Sending event: write
Sending event: after_write
Traceback (most recent call last):
  File "/usr/local/bin/beet", line 9, in <module>
    load_entry_point('beets==1.3.10', 'console_scripts', 'beet')()
  File "/usr/local/lib/python2.7/site-packages/beets/ui/__init__.py", line 945, in main
    _raw_main(args)
  File "/usr/local/lib/python2.7/site-packages/beets/ui/__init__.py", line 935, in _raw_main
    subcommand.func(lib, suboptions, subargs)
  File "/usr/local/lib/python2.7/site-packages/beetsplug/embedart.py", line 74, in embed_func
    compare_threshold, ifempty)
  File "/usr/local/lib/python2.7/site-packages/beetsplug/embedart.py", line 141, in embed_item
    item.try_write(itempath)
  File "/usr/local/lib/python2.7/site-packages/beets/library.py", line 509, in try_write
    self.write(path)
  File "/usr/local/lib/python2.7/site-packages/beets/library.py", line 500, in write
    plugins.send('after_write', item=self, path=path)
  File "/usr/local/lib/python2.7/site-packages/beets/plugins.py", line 406, in send
    handler(**args)
  File "/usr/local/lib/python2.7/site-packages/beetsplug/check.py", line 126, in item_after_write
    set_checksum(item)
  File "/usr/local/lib/python2.7/site-packages/beetsplug/check.py", line 35, in set_checksum
    item.store()
  File "/usr/local/lib/python2.7/site-packages/beets/library.py", line 238, in store
    super(LibModel, self).store()
  File "/usr/local/lib/python2.7/site-packages/beets/dbcore/db.py", line 364, in store
    (self.id, key, value),
  File "/usr/local/lib/python2.7/site-packages/beets/dbcore/db.py", line 655, in mutate
    cursor = self.db._connection().execute(statement, subvals)
sqlite3.InterfaceError: Error binding parameter 2 - probably unsupported type.

Fixing issues from mp3val?

Any plans for adding support for fixing found errors in the plugin?

If not, what's the best workflow for fixing the errors? The checksums no longer match if I manually fix them with mp3val, so do I just force a re-computation?

Thanks for this great plugin.

Deprecation warning with python 3.9.1

When running any beets command on Fedora 33 I get the following error message:

/usr/lib/python3.9/site-packages/beetsplug/check.py:74: DeprecationWarning: invalid escape sequence \(
  'error': '^WARNING: .* \(offset 0x[0-9a-f]+\): (.*)$',

Everything works successfully. So just a heads up that it looks like a future python version might break compatability.

Generating PAR2 sets on import

In addition to, or in place of the existing checksumming, it would be nice to have PAR2 sets generated. The plugin could create a set for each track or the whole album. I am willing to look into adding the functionality with a PR. First, I would like some opinions on the idea, especially from the author.
I realize I can create a custom command for repairing files using PAR2. However, I would like this plugin to generate them on import as well. If there is a way to create custom handlers for import in the config file already, then please point me to the information.

Failing `python2 setup.py test`

Using https://gist.github.com/Freso/d077696f278bc97093db :

freso@kotake> LANG=C makepkg -isc
==> Making package: beets-check-git 0.9.2.r10.g14ec223-1 (Fri Dec 19 23:33:48 CET 2014)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
  -> Updating beets-check git repo...
Fetching origin
==> Validating source files with md5sums...
    beets-check ... Skipped
==> Extracting sources...
  -> Creating working copy of beets-check git repo...
Cloning into 'beets-check'...
done.
==> Starting pkgver()...
==> Removing existing pkg/ directory...
==> Starting check()...
/usr/lib/python2.7/site-packages/setuptools/dist.py:289: UserWarning: The version specified requires normalization, consider using '0.10.0b0' instead of '0.10.0-beta.0'.
  self.metadata.version,
running test
Searching for futures
Reading https://pypi.python.org/simple/futures/
/usr/lib/python2.7/site-packages/pkg_resources.py:2443: PEP440Warning: 'futures (0.2.python3)' is being parsed as a legacy, non PEP 440, version. You may fin
d odd behavior and sort order. In particular it will be sorted as less than 0.0. It is recommend to migrate to PEP 440 compatible versions.
  PEP440Warning,
Best match: futures 2.2.0
Downloading https://pypi.python.org/packages/source/f/futures/futures-2.2.0.tar.gz#md5=310e446de8609ddb59d0886e35edb534
Processing futures-2.2.0.tar.gz
Writing /tmp/easy_install-fKdLLX/futures-2.2.0/setup.cfg
Running futures-2.2.0/setup.py -q bdist_egg --dist-dir /tmp/easy_install-fKdLLX/futures-2.2.0/egg-dist-tmp-OWadjY

Installed /tmp/makepkg/beets-check-git/src/beets-check/.eggs/futures-2.2.0-py2.7.egg
running egg_info
creating beets_check.egg-info
writing requirements to beets_check.egg-info/requires.txt
writing beets_check.egg-info/PKG-INFO
writing top-level names to beets_check.egg-info/top_level.txt
writing dependency_links to beets_check.egg-info/dependency_links.txt
writing manifest file 'beets_check.egg-info/SOURCES.txt'
reading manifest file 'beets_check.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
no previously-included directories found matching 'test'
writing manifest file 'beets_check.egg-info/SOURCES.txt'
running build_ext
Traceback (most recent call last):
  File "setup.py", line 31, in <module>
    'Programming Language :: Python :: 2.7',
  File "/usr/lib/python2.7/distutils/core.py", line 151, in setup
    dist.run_commands()
  File "/usr/lib/python2.7/distutils/dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
    cmd_obj.run()
  File "/usr/lib/python2.7/site-packages/setuptools/command/test.py", line 142, in run
    self.with_project_on_sys_path(self.run_tests)
  File "/usr/lib/python2.7/site-packages/setuptools/command/test.py", line 122, in with_project_on_sys_path
    func()
  File "/usr/lib/python2.7/site-packages/setuptools/command/test.py", line 163, in run_tests
    testRunner=self._resolve_as_ep(self.test_runner),
  File "/usr/lib/python2.7/unittest/main.py", line 94, in __init__
    self.parseArgs(argv)
  File "/usr/lib/python2.7/unittest/main.py", line 149, in parseArgs
    self.createTests()
  File "/usr/lib/python2.7/unittest/main.py", line 158, in createTests
    self.module)
  File "/usr/lib/python2.7/unittest/loader.py", line 130, in loadTestsFromNames
    suites = [self.loadTestsFromName(name, module) for name in names]
  File "/usr/lib/python2.7/unittest/loader.py", line 103, in loadTestsFromName
    return self.loadTestsFromModule(obj)
  File "/usr/lib/python2.7/site-packages/setuptools/command/test.py", line 37, in loadTestsFromModule
    tests.append(self.loadTestsFromName(submodule))
  File "/usr/lib/python2.7/unittest/loader.py", line 91, in loadTestsFromName
    module = __import__('.'.join(parts_copy))
  File "/usr/lib/python2.7/test/test_tools.py", line 21, in <module>
    raise unittest.SkipTest('test irrelevant for an installed Python')
unittest.case.SkipTest: test irrelevant for an installed Python
==> ERROR: A failure occurred in check().
    Aborting...
[2] freso@kotake>

Checksum fails after convert

After I convert some files, running beet check on them gives an error. The checksums seem to be updated after beet convert.

vagrant@precise32:/vagrant$ beet check -e QUERY
0a61300ee2290d36776485dfa89ee190749ca6841d7a3715001bb54b2cd8e236 */path/to/song1.flac
40bb3aeebbd6518b497fbca933d7fac9127509fba03970b89f964683330c5ac5 */path/to/song2.flac
94fa3fd8f8d6a852942bf0853d64d9846f7ec324251269dbab01678c0f7fb6a0 */path/to/song3.flac
vagrant@precise32:/vagrant$ beet convert QUERY
SONG 1
SONG 2
SONG 3
Convert? (Y/n) y
Started encoding /path/to/song1.flac
Finished encoding /path/to/song1.flac
Started encoding /path/to/song2.flac
Finished encoding /path/to/song2.flac
Started encoding /path/to/song3.flac
Finished encoding /path/to/song3.flac
vagrant@precise32:/vagrant$ beet check -e QUERY
bdefdda4851e3829d5239cb7e0c45d343a7ec2f2891e77447f087e4e0ac01156 */path/to/song1.flac
41d46da58b06e534ce0c31b7122c25e1b4fc4b61f03c4e49929f3e1fca47e47e */path/to/song2.flac
b9aed4847a9ca71d57ee319122edec909759196e409dd903641be862014af562 */path/to/song3.flac
vagrant@precise32:/vagrant$ beet check QUERY
Looking up files with checksums...
FAILED: /path/to/song1.flac
FAILED: /path/to/song2.flac
FAILED: /path/to/song3.flac
Verifying checksums: 3/3 [100%]
Failed to verify checksum of 3 file(s)

Versions:

vagrant@precise32:/vagrant$ pip freeze
beets==1.3.5
beets-check==0.9.0-beta.3

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2

I tried running beet check -a on my library and ran into the error UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 82: ordinal not in range(128).

I'm not sure what file caused this error, but would be happy to help if I know how to render more useful debug logs.

Here is my terminal output:

beet check -a 
Looking for files without checksums...
Traceback (most recent call last):      
  File "/usr/local/bin/beet", line 9, in <module>
    load_entry_point('beets==1.3.10', 'console_scripts', 'beet')()
  File "/Library/Python/2.7/site-packages/beets/ui/__init__.py", line 945, in main
    _raw_main(args)
  File "/Library/Python/2.7/site-packages/beets/ui/__init__.py", line 935, in _raw_main
    subcommand.func(lib, suboptions, subargs)
  File "/Library/Python/2.7/site-packages/beetsplug/check.py", line 226, in func
    self.add()
  File "/Library/Python/2.7/site-packages/beetsplug/check.py", line 254, in add
    self.execute_with_progress(add, items, msg='Adding missing checksums')
  File "/Library/Python/2.7/site-packages/beetsplug/check.py", line 416, in execute_with_progress
    for _ in e.map(func, args):
  File "/Library/Python/2.7/site-packages/concurrent/futures/_base.py", line 580, in map
    yield future.result()
  File "/Library/Python/2.7/site-packages/concurrent/futures/_base.py", line 400, in result
    return self.__get_result()
  File "/Library/Python/2.7/site-packages/concurrent/futures/_base.py", line 359, in __get_result
    reraise(self._exception, self._traceback)
  File "/Library/Python/2.7/site-packages/concurrent/futures/_compat.py", line 107, in reraise
    exec('raise exc_type, exc_value, traceback', {}, locals_)
  File "/Library/Python/2.7/site-packages/concurrent/futures/thread.py", line 61, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/Library/Python/2.7/site-packages/beetsplug/check.py", line 244, in add
    log.debug(u'adding checksum for {0}'.format(item.path))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 82: ordinal not in range(128)

This is using the most recent version of beet check from master, at revision 62edbb5630.

Problem checking flac files

Hi all!

opened this issue to report a problem when beets imports an album in FLAC format, I can just see a flac process spawned, then beets dies leaving a trace, cannot understand why.

This is a complete output of error, tell me if a strace could help:

$ beet -v import /mnt/my_mount/Method\ Man*
user configuration: /home/my_user/.config/beets/config.yaml
data directory: /home/my_user/.config/beets
plugin paths: 
Sending event: pluginload
library database: /home/my_user/.config/beets/library.db
library directory: /mnt/syno-music/aaa
Sending event: library_opened
Sending event: import_begin
state file could not be read: [Errno 2] No such file or directory: u'/home/my_user/.config/beets/state.pickle'
Sending event: import_task_created
Sending event: import_task_start
Looking up: /mnt/my_mount/Method Man/1994 - Tical
Tagging Method Man - Tical
Searching for discovered album ID: 48feb668-a0fc-382a-9cde-1cb1f55f31b1
Sending event: import_task_created
Sending event: import_task_created
Candidate: Method Man - Tical
Success. Distance: 0.00
Album ID match recommendation is Recommendation.strong
ID match.
Sending event: import_task_start
/mnt/my_mount/Method Man/1994 - Tical (14 items)
Looking up: /mnt/my_mount/Method Man/1995 - I'll Be There for You_You're All I Need to Get By
Tagging:
    Method Man - Tical
Tagging Method Man - I'll Be There for You/You're All I Need to Get By
URL:
    http://musicbrainz.org/release/48feb668-a0fc-382a-9cde-1cb1f55f31b1
Searching for discovered album ID: 8ad0facc-4cd2-4d3d-b8d0-0d5819b59442
(Similarity: 100.0%) (CD, 1995, XE, Def Jam Recordings)
Sending event: import_task_choice
Sending event: import_task_created
Sending event: import_task_created
Sending event: import_task_created
state file could not be read: [Errno 2] No such file or directory: u'/home/my_user/.config/beets/state.pickle'
Sending event: import_task_created
state file could not be read: [Errno 2] No such file or directory: u'/home/my_user/.config/beets/state.pickle'
Candidate: Method Man - I'll Be There for You/You're All I Need to Get By
Success. Distance: 0.00
Album ID match recommendation is Recommendation.strong
ID match.
Sending event: import_task_start
Looking up: /mnt/my_mount/Method Man/1995 - The Riddler
Tagging Method Man - The Riddler
Searching for discovered album ID: 90fae1c0-f575-47a0-b36a-f3f15f37b86c
Sending event: import_task_created
Sending event: import_task_created
Sending event: import_task_created
Candidate: Method Man - The Riddler
Success. Distance: 0.04
Album ID match recommendation is Recommendation.medium
Search terms: Method Man - The Riddler
Album might be VA: False
/mnt/my_mount/Method Man/1995 - I'll Be There for You_You're All I Need to Get By (4 items)
Tagging:
    Method Man - I'll Be There for You/You're All I Need to Get By
URL:
    http://musicbrainz.org/release/8ad0facc-4cd2-4d3d-b8d0-0d5819b59442
(Similarity: 100.0%) (tracks) (CD, 1995, GB, Def Jam Recordings)
Sending event: import_task_apply
 * Release Yo' Delf (Prodigy mix) (5:55) -> Release Yo' Delf (Prodigy mix) (5:45) (length)
Sending event: import_task_choice
0 of 14 items replaced
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Evaluating 5 candidates.
Candidate: Method Man - The Riddler
Duplicate.
Candidate: Method Man - The Riddler: Remix by The RZA
Success. Distance: 0.49
Candidate: Method Man - Say
Success. Distance: 0.68
Candidate: Method Man - I'll Be There for You/You're All I Need to Get By
Success. Distance: 0.64
Candidate: Method Man - I'll Be There for You/You're All I Need to Get By
Success. Distance: 0.64
Traceback (most recent call last):
  File "/usr/local/bin/beet", line 9, in <module>
    load_entry_point('beets==1.3.13', 'console_scripts', 'beet')()
  File "/usr/local/lib/python2.7/dist-packages/beets/ui/__init__.py", line 1104, in main
    _raw_main(args)
  File "/usr/local/lib/python2.7/dist-packages/beets/ui/__init__.py", line 1094, in _raw_main
    subcommand.func(lib, suboptions, subargs)
  File "/usr/local/lib/python2.7/dist-packages/beets/ui/commands.py", line 893, in import_func
    import_files(lib, paths, query)
  File "/usr/local/lib/python2.7/dist-packages/beets/ui/commands.py", line 870, in import_files
    session.run()
  File "/usr/local/lib/python2.7/dist-packages/beets/importer.py", line 316, in run
    pl.run_parallel(QUEUE_SIZE)
  File "/usr/local/lib/python2.7/dist-packages/beets/util/pipeline.py", line 301, in run
    out = self.coro.send(msg)
  File "/usr/local/lib/python2.7/dist-packages/beets/util/pipeline.py", line 183, in coro
    func(*(args + (task,)))
  File "/usr/local/lib/python2.7/dist-packages/beets/importer.py", line 1343, in plugin_stage
    func(session, task)
  File "/usr/local/lib/python2.7/dist-packages/beets/plugins.py", line 117, in wrapper
    assert self._log.level == logging.NOTSET
AssertionError

pip list

Warning: cannot find svn location for apsw==3.8.6-r1
apsw (3.8.6-r1)
apt-xapian-index (0.47)
argparse (1.2.1)
BeautifulSoup (3.2.1)
beets (1.3.13)
beets-check (0.10.0-beta.0)
cffi (0.8.6)
characteristic (0.1.0)
chardet (2.3.0)
CherryPy (3.5.0)
colorama (0.3.2)
cryptography (0.6.1)
cssselect (0.9.1)
cssutils (0.9.10)
defusedxml (0.4.1)
dnspython (1.12.0)
docutils (0.12)
enum34 (1.0.4)
feedparser (5.1.3)
futures (3.0.2)
gyp (0.1)
html5lib (0.999)
jellyfish (0.5.0)
lxml (3.4.0)
Markdown (2.5.1)
mechanize (0.2.5)
munkres (1.0.7)
musicbrainzngs (0.5)
mutagen (1.29)
nbxmpp (0.5.1)
ndg-httpsclient (0.3.2)
netifaces (0.10.4)
numpy (1.8.2)
PAM (0.4.2)
Parsley (1.2)
Pillow (2.6.1)
pip (1.5.6)
ply (3.4)
psutil (2.1.1)
pyasn1 (0.1.7)
pyasn1-modules (0.0.5)
pycparser (2.10)
pycrypto (2.6.1)
pycurl (7.19.5)
Pygments (2.0.1)
pygobject (3.14.0)
pyliblzma (0.5.3)
pyOpenSSL (0.14)
pyparsing (2.0.3)
pyserial (2.6)
python-apt (0.9.3.11)
python-dateutil (2.2)
python-debian (0.1.27)
python-debianbts (1.11)
pyxdg (0.25)
PyYAML (3.11)
reportbug (6.6.3)
repoze.lru (0.6)
requests (2.4.3)
roman (2.0.0)
Routes (2.0)
service-identity (1.0.0)
setuptools (5.5.1)
six (1.8.0)
SOAPpy (0.12.22)
torbrowser-launcher (0.1.9)
Twisted (14.0.2)
Twisted-Conch (14.0.2)
Twisted-Core (14.0.2)
Twisted-Lore (14.0.2)
Twisted-Mail (14.0.2)
Twisted-Names (14.0.2)
Twisted-News (14.0.2)
Twisted-Runner (14.0.2)
Twisted-Web (14.0.2)
Twisted-Words (14.0.2)
txsocksx (0.0.0)
Unidecode (0.04.17)
urllib3 (1.9.1)
uTidylib (0.2)
vboxapi (1.0)
WebOb (1.4)
wheel (0.24.0)
wsgiref (0.1.2)
wstools (0.4.3)
zope.interface (4.1.1)

Checksum fails when using the convert plugin

When running beet convert I'm seeing a ChecksumError after a single file is converted.

I'm using default config options for both the convert and check plugins.

Additionally it looks like the FileOperationError class has changed its __init__ parameters.

Finished encoding /path/to/song.flac
Traceback (most recent call last):
  File "/usr/local/bin/beet", line 9, in <module>
    load_entry_point('beets==1.3.4', 'console_scripts', 'beet')()
  File "/usr/local/lib/python2.7/dist-packages/beets/ui/__init__.py", line 955, in main
    _raw_main(args)
  File "/usr/local/lib/python2.7/dist-packages/beets/ui/__init__.py", line 946, in _raw_main
    subcommand.func(lib, suboptions, subargs)
  File "/usr/local/lib/python2.7/dist-packages/beetsplug/convert.py", line 248, in convert_func
    pipe.run_parallel()
  File "/usr/local/lib/python2.7/dist-packages/beets/util/pipeline.py", line 288, in run
    self.coro.send(msg)
  File "/usr/local/lib/python2.7/dist-packages/beetsplug/convert.py", line 187, in convert_item
    item.write()
  File "/usr/local/lib/python2.7/dist-packages/beets/library.py", line 427, in write
    plugins.send('write', item=self)
  File "/usr/local/lib/python2.7/dist-packages/beets/plugins.py", line 359, in send
    return [handler(**arguments) for handler in event_handlers()[event]]
  File "/usr/local/lib/python2.7/dist-packages/beetsplug/check.py", line 92, in item_before_write
    verify_checksum(item)
  File "/usr/local/lib/python2.7/dist-packages/beetsplug/check.py", line 47, in verify_checksum
    raise ChecksumError('checksum did not match value in library.')
TypeError: __init__() takes exactly 3 arguments (2 given)

Success message when no tool installed

A message indicating to install a tool should be displayed instead of printing 100% success.

flap|~/Dev/beets (master)$ beet check --list-tools
mp3val          not found
flac            not found
oggz-validate   not found
flap|~/Dev/beets (master)$ ./beet check
Verifying checksums: 99/99 [100%]
All checksums successfully verified

[Feature Request]: ffmpeg -f hash/dano support?

I'm unsure if another plugin or a beet option offers something similar, but, as I read the README, stability of checksums seems to remain an issue.

My little ffmpeg frontend dano or simply ffmpeg -f hash support would offer your users (and I'm one!) a stable hash format for when file metadata changes, and detect file name changes.

Is there anyway we could integrate with each other?

Thanks!

setting up tools on Windows

Hi. This isn't really an issue per se, but any advice on setting up integrity tools on a windows box? My environment path is pointing to executables of mp3val and flac.

Thanks!

TypeError: a bytes-like object is required, not 'str'

everytime i get to check a corrupted flac this is the outcome:

Traceback (most recent call last):
File "/usr/bin/beet", line 11, in
load_entry_point('beets==1.4.9', 'console_scripts', 'beet')()
File "/usr/lib/python3.7/site-packages/beets/ui/init.py", line 1266, in main
_raw_main(args)
File "/usr/lib/python3.7/site-packages/beets/ui/init.py", line 1253, in _raw_main
subcommand.func(lib, suboptions, subargs)
File "/usr/lib/python3.7/site-packages/beetsplug/check.py", line 231, in func
self.check(checksums=options.checksums)
File "/usr/lib/python3.7/site-packages/beetsplug/check.py", line 277, in check
self.execute_with_progress(check, items, msg)
File "/usr/lib/python3.7/site-packages/beetsplug/check.py", line 391, in execute_with_progress
for _ in e.map(func, args):
File "/usr/lib/python3.7/concurrent/futures/_base.py", line 598, in result_iterator
yield fs.pop().result()
File "/usr/lib/python3.7/concurrent/futures/_base.py", line 428, in result
return self.__get_result()
File "/usr/lib/python3.7/concurrent/futures/_base.py", line 384, in __get_result
raise self._exception
File "/usr/lib/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/usr/lib/python3.7/site-packages/beetsplug/check.py", line 259, in check
verify_integrity(item)
File "/usr/lib/python3.7/site-packages/beetsplug/check.py", line 58, in verify_integrity
checker.run(item)
File "/usr/lib/python3.7/site-packages/beetsplug/check.py", line 450, in run
self.parse(stdout, stderr, process.returncode, item.path)
File "/usr/lib/python3.7/site-packages/beetsplug/check.py", line 491, in parse
for line in stderr.split('\n'):
TypeError: a bytes-like object is required, not 'str'

what could it mean?

syncing music libraries

I keep music files on my laptop in sync with music files on my home server using unison.

I have beets running on both machines, but use the server for listing/playing files only, and use the laptop for making any tag modifications.
When I do this (modify tags) I then sync the changed files to the server, and reimport these files into beets in order to keep the tags up to date.

I was thinking that I could use this plugin to detect which files have changed and then pipe the results to beet import, so that I could sync my tag changes with a single command. Is this possible?

Re-import does not retain old checksum

Beets 1.3.6 introduced a bug which lead to a crash when re-importing items. The crash was fixed in 0.9.1, but it will not retain the old checksum. This means that if a file is corrupted and then re-imported without checking it first, the old checksum will be overwritten and the corruption will go unnoticed. This will be fixed in beets 1.3.7.

Look for existing checksum files on disk

Look for classic checksum files on disk, and import/validate those.

Some common patterns: *sfv, *DIGEST*, *DIGESTS*, *CHECKSUMS*

The most common formats on these will be:

  • SFV: $FILENAME $SFV
  • BSD checksums (openssl dgst default)
    MD5(filename) = ...
  • coreutils checksums
    ... *filename (the * is optional). Watch out for digests of the same length but unknown type.

Hard crash on missing files

Love the beets check plugin, was able to discover some disk corruption and missing files -- however the plugin crashes and exits beets if a file is missing. Is it possible to print a warning instead?

Support multiple checksums

If my collection already has MD5 or SHA1 checksums, those should be imported/validated. This should also be extended to support new fast checksums such as BLAKE2 & SHA-3 (Keccek).

Check lossless files for authenticity

beets-check is a great addition for beets - thank you!

I have one suggestion that might be useful:
Is it possible to check lossless files for authenticity? There are tools like aucdtect ( http://en.true-audio.com/Tau_Analyzer_-_Aucdtect_Algorithm_Details ) that can check wav files for wrong lossless files created from lossy sources. redoflacs (https://github.com/sirjaren/redoflacs) has a nice implementation of that (-a / -A flag).

Would it be possible to include this "fake check"?

Regards,
Matthias

Fix flac files

Do the -x option can fix flac files ?
Got an integrity error but when I try to fix it, beets prints No MP3 files to fix.

Can beets-check handle flac fixing or should I do it with another way ?

pypi release?

Do you plan on a pypi release? Or do I need to install it using the git url like it's said in the docs?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.