Coder Social home page Coder Social logo

nicfit / mishmash Goto Github PK

View Code? Open in Web Editor NEW
12.0 7.0 4.0 1.45 MB

Music database, etc.

License: GNU General Public License v3.0

Makefile 5.27% Python 93.14% CSS 0.21% Mako 0.32% Dockerfile 0.59% JavaScript 0.27% Shell 0.20%
music-library python media sqlachemy eyed3

mishmash's Introduction

Hi there ๐Ÿ‘‹

โœจ Check out My GitHub Stars for a lot of good stuff and inspiration.

mishmash's People

Contributors

benschumacher avatar dependabot[bot] avatar nicfit avatar pyup-bot avatar redshodan avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

mishmash's Issues

SQLalchemy error after running info

I get this when running mishmash info for the first time. Any idea of issue?

from sqlalchemy.orm.query import _ColumnEntity
ImportError: cannot import name '_ColumnEntity' from 'sqlalchemy.orm.query' (c:\python38\lib\site-packages\sqlalchemy\orm\query.py)

Monitor error during delete

D=(1) MASK=(1073742080) MASK->NAMES=['IN_CREATE', 'IN_ISDIR'] WATCH-PATH=/media/music FILENAME=Beach Boys, The
unsonic.nicfit.net    | WD=(1) MASK=(1073741828) MASK->NAMES=['IN_ATTRIB', 'IN_ISDIR'] WATCH-PATH=/media/music FILENAME=Beach Boys, The
unsonic.nicfit.net    | WD=(3570) MASK=(512) MASK->NAMES=['IN_DELETE'] WATCH-PATH=/media/Beach Boys, The/1966 - Pet Sounds FILENAME=The Beach Boys - 15 - Hang On To Your Ego.mp3
unsonic.nicfit.net    | WD=(3570) MASK=(512) MASK->NAMES=['IN_DELETE'] WATCH-PATH=/media/Beach Boys, The/1966 - Pet Sounds FILENAME=The Beach Boys - 12 - Pet Sounds.mp3
unsonic.nicfit.net    | WD=(3570) MASK=(512) MASK->NAMES=['IN_DELETE'] WATCH-PATH=/media/Beach Boys, The/1966 - Pet Sounds FILENAME=The Beach Boys - 02 - You Still Believe In Me.mp3
unsonic.nicfit.net    | WD=(3570) MASK=(512) MASK->NAMES=['IN_DELETE'] WATCH-PATH=/media/Beach Boys, The/1966 - Pet Sounds FILENAME=The Beach Boys - 13 - Caroline No.mp3
unsonic.nicfit.net    | WD=(3570) MASK=(512) MASK->NAMES=['IN_DELETE'] WATCH-PATH=/media/Beach Boys, The/1966 - Pet Sounds FILENAME=cover.jpg
unsonic.nicfit.net    | WD=(3570) MASK=(512) MASK->NAMES=['IN_DELETE'] WATCH-PATH=/media/Beach Boys, The/1966 - Pet Sounds FILENAME=The Beach Boys - 03 - That's Not Me.mp3
unsonic.nicfit.net    | WD=(3570) MASK=(512) MASK->NAMES=['IN_DELETE'] WATCH-PATH=/media/Beach Boys, The/1966 - Pet Sounds FILENAME=The Beach Boys - 07 - Sloop John B..mp3
unsonic.nicfit.net    | WD=(3570) MASK=(512) MASK->NAMES=['IN_DELETE'] WATCH-PATH=/media/Beach Boys, The/1966 - Pet Sounds FILENAME=The Beach Boys - 09 - I Know There's An Answer.mp3
unsonic.nicfit.net    | WD=(3570) MASK=(512) MASK->NAMES=['IN_DELETE'] WATCH-PATH=/media/Beach Boys, The/1966 - Pet Sounds FILENAME=The Beach Boys - 16 - Trombone Dixie.mp3
unsonic.nicfit.net    | WD=(3570) MASK=(512) MASK->NAMES=['IN_DELETE'] WATCH-PATH=/media/Beach Boys, The/1966 - Pet Sounds FILENAME=The Beach Boys - 06 - Let's Go Away For Awhile.mp3
unsonic.nicfit.net    | WD=(3570) MASK=(512) MASK->NAMES=['IN_DELETE'] WATCH-PATH=/media/Beach Boys, The/1966 - Pet Sounds FILENAME=The Beach Boys - 08 - God Only Knows.mp3
unsonic.nicfit.net    | WD=(3570) MASK=(512) MASK->NAMES=['IN_DELETE'] WATCH-PATH=/media/Beach Boys, The/1966 - Pet Sounds FILENAME=The Beach Boys - 05 - I'm Waiting For The Day.mp3
unsonic.nicfit.net    | WD=(3570) MASK=(512) MASK->NAMES=['IN_DELETE'] WATCH-PATH=/media/Beach Boys, The/1966 - Pet Sounds FILENAME=The Beach Boys - 04 - Don't Talk (Put Your Head On My Shoulders).mp3
unsonic.nicfit.net    | WD=(3570) MASK=(512) MASK->NAMES=['IN_DELETE'] WATCH-PATH=/media/Beach Boys, The/1966 - Pet Sounds FILENAME=The Beach Boys - 14 - Unreleased Backgrounds.mp3
unsonic.nicfit.net    | WD=(3570) MASK=(512) MASK->NAMES=['IN_DELETE'] WATCH-PATH=/media/Beach Boys, The/1966 - Pet Sounds FILENAME=The Beach Boys - 11 - I Just Wasn't Made For These Times.mp3
unsonic.nicfit.net    | WD=(3570) MASK=(512) MASK->NAMES=['IN_DELETE'] WATCH-PATH=/media//Beach Boys, The/1966 - Pet Sounds FILENAME=The Beach Boys - 10 - Here Today.mp3
unsonic.nicfit.net    | WD=(3570) MASK=(512) MASK->NAMES=['IN_DELETE'] WATCH-PATH=/media//Beach Boys, The/1966 - Pet Sounds FILENAME=The Beach Boys - 01 - Wouldn't It Be Nice.mp3
unsonic.nicfit.net    | WD=(3570) MASK=(1024) MASK->NAMES=['IN_DELETE_SELF'] WATCH-PATH=/media//Beach Boys, The/1966 - Pet Sounds FILENAME=.
unsonic.nicfit.net    | WD=(3570) MASK=(32768) MASK->NAMES=['IN_IGNORED'] WATCH-PATH=/media//Beach Boys, The/1966 - Pet Sounds FILENAME=.
unsonic.nicfit.net    | WD=(3571) MASK=(1073742336) MASK->NAMES=['IN_DELETE', 'IN_ISDIR'] WATCH-PATH=/media//Beach Boys, The FILENAME=1966 - Pet Sounds
unsonic.nicfit.net    | Process Monitor-1:
unsonic.nicfit.net    | Traceback (most recent call last):
unsonic.nicfit.net    |   File "/unsonic/lib/python3.6/site-packages/mishmash/commands/sync/_inotify.py", line 84, in _main
unsonic.nicfit.net    |     str(watch_path).encode(LOCAL_FS_ENCODING))
unsonic.nicfit.net    |   File "/unsonic/lib/python3.6/site-packages/inotify/adapters.py", line 90, in remove_watch
unsonic.nicfit.net    |     inotify.calls.inotify_rm_watch(self.__inotify_fd, wd)
unsonic.nicfit.net    |   File "/unsonic/lib/python3.6/site-packages/inotify/calls.py", line 35, in _check_nonnegative
unsonic.nicfit.net    |     (result,))
unsonic.nicfit.net    | inotify.calls.InotifyError: Call failed (should not be -1): (-1) ERRNO=(0)
unsonic.nicfit.net    | 
unsonic.nicfit.net    | During handling of the above exception, another exception occurred:
unsonic.nicfit.net    | 
unsonic.nicfit.net    | Traceback (most recent call last):
unsonic.nicfit.net    |   File "/usr/lib64/python3.6/multiprocessing/process.py", line 249, in _bootstrap
unsonic.nicfit.net    |     self.run()
unsonic.nicfit.net    |   File "/usr/lib64/python3.6/multiprocessing/process.py", line 93, in run
unsonic.nicfit.net    |     self._target(*self._args, **self._kwargs)
unsonic.nicfit.net    |   File "/unsonic/lib/python3.6/site-packages/mishmash/commands/sync/_inotify.py", line 112, in _main
unsonic.nicfit.net    |     self._inotify.remove_watch(str(path).encode(LOCAL_FS_ENCODING))
unsonic.nicfit.net    |   File "/unsonic/lib/python3.6/site-packages/inotify/adapters.py", line 90, in remove_watch
unsonic.nicfit.net    |     inotify.calls.inotify_rm_watch(self.__inotify_fd, wd)
unsonic.nicfit.net    |   File "/unsonic/lib/python3.6/site-packages/inotify/calls.py", line 35, in _check_nonnegative
unsonic.nicfit.net    |     (result,))
unsonic.nicfit.net    | inotify.calls.InotifyError: Call failed (should not be -1): (-1) ERRNO=(0)

Add slug column for name/titles

With a slug column, matching names to services like LastFM will be much easier. Probably want to have a version of the slug algorithm, and the ability to recalc the slugs. This could approach nameprep in abilities.

No per library last_sync timestamp

Feature request: add a last_sync column to the libraries table and have it be managed by the sync command.

There is no per library last_sync timestamp. However you can sync just a single library. The global timestamp in the meta table can't cover this.

Fails without inotify on non-Linux platforms

See above.

Was looking to try this out on an OS X machine and immediately hit this. Haven't looked into this in great detail, but wanted to flag this as something to look at in the future. (Will check it out within Docker in the meantime.)

Bomb out during sync from bad UTF tag

Adding track: /data/home/baron-data/music/Foreign Born/holy.mp3
2017-09-24 12:07:56,065 ERROR [mishmash][MainThread] 'utf-8' codec can't encode character '\udce9' in position 104: surrogates not allowed
Traceback (most recent call last):
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/MishMash-0.3b4-py3.6.egg/mishmash/__main__.py", line 53, in main
    retval = args.command_func(args, args.config) or 0
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/MishMash-0.3b4-py3.6.egg/mishmash/core.py", line 20, in run
    retval = super().run(args)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/nicfit.py-0.6.5-py3.6.egg/nicfit/command.py", line 62, in run
    return self._run()
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/MishMash-0.3b4-py3.6.egg/mishmash/commands/sync/sync.py", line 458, in _run
    result = _syncLib(lib)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/MishMash-0.3b4-py3.6.egg/mishmash/commands/sync/sync.py", line 451, in _syncLib
    return eyed3_main(args, None)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/eyeD3-0.8.2-py3.6.egg/eyed3/main.py", line 50, in main
    fs_encoding=args.fs_encoding)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/eyeD3-0.8.2-py3.6.egg/eyed3/utils/__init__.py", line 103, in walk
    handler.handleFile(f)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/eyeD3-0.8.2-py3.6.egg/eyed3/plugins/__init__.py", line 172, in handleFile
    self.audio_file = core.load(f, *args, **kwargs)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/eyeD3-0.8.2-py3.6.egg/eyed3/core.py", line 72, in load
    mtype = guessMimetype(path)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/eyeD3-0.8.2-py3.6.egg/eyed3/utils/__init__.py", line 57, in guessMimetype
    mime = _mime_types.guess_type(filename)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/eyeD3-0.8.2-py3.6.egg/eyed3/utils/__init__.py", line 46, in guess_type
    return self.from_file(filename)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/python_magic-0.4.13-py3.6.egg/magic.py", line 85, in from_file
    return maybe_decode(magic_file(self.cookie, filename))
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/python_magic-0.4.13-py3.6.egg/magic.py", line 242, in magic_file
    return _magic_file(cookie, coerce_filename(filename))
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/python_magic-0.4.13-py3.6.egg/magic.py", line 216, in coerce_filename
    return filename.encode('utf-8')
UnicodeEncodeError: 'utf-8' codec can't encode character '\udce9' in position 104: surrogates not allowed
General error:
Traceback (most recent call last):
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/MishMash-0.3b4-py3.6.egg/mishmash/__main__.py", line 53, in main
    retval = args.command_func(args, args.config) or 0
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/MishMash-0.3b4-py3.6.egg/mishmash/core.py", line 20, in run
    retval = super().run(args)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/nicfit.py-0.6.5-py3.6.egg/nicfit/command.py", line 62, in run
    return self._run()
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/MishMash-0.3b4-py3.6.egg/mishmash/commands/sync/sync.py", line 458, in _run
    result = _syncLib(lib)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/MishMash-0.3b4-py3.6.egg/mishmash/commands/sync/sync.py", line 451, in _syncLib
    return eyed3_main(args, None)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/eyeD3-0.8.2-py3.6.egg/eyed3/main.py", line 50, in main
    fs_encoding=args.fs_encoding)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/eyeD3-0.8.2-py3.6.egg/eyed3/utils/__init__.py", line 103, in walk
    handler.handleFile(f)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/eyeD3-0.8.2-py3.6.egg/eyed3/plugins/__init__.py", line 172, in handleFile
    self.audio_file = core.load(f, *args, **kwargs)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/eyeD3-0.8.2-py3.6.egg/eyed3/core.py", line 72, in load
    mtype = guessMimetype(path)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/eyeD3-0.8.2-py3.6.egg/eyed3/utils/__init__.py", line 57, in guessMimetype
    mime = _mime_types.guess_type(filename)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/eyeD3-0.8.2-py3.6.egg/eyed3/utils/__init__.py", line 46, in guess_type
    return self.from_file(filename)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/python_magic-0.4.13-py3.6.egg/magic.py", line 85, in from_file
    return maybe_decode(magic_file(self.cookie, filename))
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/python_magic-0.4.13-py3.6.egg/magic.py", line 242, in magic_file
    return _magic_file(cookie, coerce_filename(filename))
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/python_magic-0.4.13-py3.6.egg/magic.py", line 216, in coerce_filename
    return filename.encode('utf-8')
UnicodeEncodeError: 'utf-8' codec can't encode character '\udce9' in position 104: surrogates not allowed
2017-09-24 12:07:56,072 DEBUG [unsonic][MainThread] Application._atexit
make: *** [Makefile:63: build/development.sqlite] Error 2

Look for and ignore MPG3hook files

Ignore these mpg3hook files. They end with .mp3 so mishmash tries to grok them and complains about no valid mp3 frames.

Example album with mpg3hook files. The file command recognizes them as "AppleDouble encoded Macintosh file". Every mpg3hook file in my repo has the same md5sum: bc66ea6a6136e8a72ec1c1efddcaebd6

total 66228
drwxrwxr-x 2 baron baron    4096 Nov 14  2010  ./
drwxrwxr-x 4 baron baron    4096 Nov 29  2010  ../
-rwxrwxr-x 1 baron baron      82 Nov 14  2010 '._10 Quito.mp3'*
-rwxrwxr-x 1 baron baron 3382300 Nov 14  2010 '10 Quito.mp3'*
-rwxrwxr-x 1 baron baron      82 Nov 14  2010 '._11 Cotton.mp3'*
-rwxrwxr-x 1 baron baron 4635004 Nov 14  2010 '11 Cotton.mp3'*
-rwxrwxr-x 1 baron baron      82 Nov 14  2010 '._12 Against Pollution.mp3'*
-rwxrwxr-x 1 baron baron 5787189 Nov 14  2010 '12 Against Pollution.mp3'*
-rwxrwxr-x 1 baron baron      82 Nov 14  2010 '._13 Pigs That Ran Straightaway Into The Water, Triumph Of.mp3'*
-rwxrwxr-x 1 baron baron 4604952 Nov 14  2010 '13 Pigs That Ran Straightaway Into The Water, Triumph Of.mp3'*
-rwxrwxr-x 1 baron baron      82 Nov 14  2010 '._2 Palmcorder Yajna.mp3'*
-rwxrwxr-x 1 baron baron 6098632 Nov 14  2010 '2 Palmcorder Yajna.mp3'*
-rwxrwxr-x 1 baron baron      82 Nov 14  2010 '._3 Linda Blair Was Born Innocent.mp3'*
-rwxrwxr-x 1 baron baron 3995417 Nov 14  2010 '3 Linda Blair Was Born Innocent.mp3'*
-rwxrwxr-x 1 baron baron      82 Nov 14  2010 '._4 Letter From Belgium.mp3'*
-rwxrwxr-x 1 baron baron 5316772 Nov 14  2010 '4 Letter From Belgium.mp3'*
-rwxrwxr-x 1 baron baron      82 Nov 14  2010 '._5 The Young Thousands.mp3'*
-rwxrwxr-x 1 baron baron 7253162 Nov 14  2010 '5 The Young Thousands.mp3'*
-rwxrwxr-x 1 baron baron      82 Nov 14  2010 '._6 Your Belgian Things.mp3'*
-rwxrwxr-x 1 baron baron 5458689 Nov 14  2010 '6 Your Belgian Things.mp3'*
-rwxrwxr-x 1 baron baron      82 Nov 14  2010 '._7 Mole.mp3'*
-rwxrwxr-x 1 baron baron 6410247 Nov 14  2010 '7 Mole.mp3'*
-rwxrwxr-x 1 baron baron      82 Nov 14  2010 '._8 Home Again Garden Grove.mp3'*
-rwxrwxr-x 1 baron baron 5077368 Nov 14  2010 '8 Home Again Garden Grove.mp3'*
-rwxrwxr-x 1 baron baron      82 Nov 14  2010 '._9 All Up The Seething Coast.mp3'*
-rwxrwxr-x 1 baron baron 5191426 Nov 14  2010 '9 All Up The Seething Coast.mp3'*
-rwxrwxr-x 1 baron baron      82 Nov 14  2010 '._We Shall All Be Healed_The Mountain Goats_1_Slow West Vultures.mp3'*
-rwxrwxr-x 1 baron baron 4518938 Nov 14  2010 'We Shall All Be Healed_The Mountain Goats_1_Slow West Vultures.mp3'*
baron@dib ~/src/unsonic $ file "music/The Mountain Goats/We Shall All Be Healed/._We Shall All Be Healed_The Mountain Goats_1_Slow West Vultures.mp3" 
music/The Mountain Goats/We Shall All Be Healed/._We Shall All Be Healed_The Mountain Goats_1_Slow West Vultures.mp3: AppleDouble encoded Macintosh file```

Exception on "mishmash help info"

(venv) baron@dib ~/src/unsonic $ ./build/venv/bin/mishmash help info
mishmash:MainThread [ERROR]: 'Namespace' object has no attribute 'command_func'
Traceback (most recent call last):
File "/home/baron/src/unsonic/external/mishmash/mishmash/main.py", line 53, in main
retval = args.command_func(args, args.config) or 0
AttributeError: 'Namespace' object has no attribute 'command_func'
General error:
Traceback (most recent call last):
File "/home/baron/src/unsonic/external/mishmash/mishmash/main.py", line 53, in main
retval = args.command_func(args, args.config) or 0
AttributeError: 'Namespace' object has no attribute 'command_func'

'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

ERROR:mishmash:'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/dist-packages/mishmash/__main__.py", line 55, in main
    retval = args.command_func(args) or 0
  File "/usr/local/lib/python3.9/dist-packages/mishmash/core.py", line 37, in run
    retval = super().run(args)
  File "/usr/local/lib/python3.9/dist-packages/nicfit/command.py", line 93, in run
    return self._run()
  File "/usr/local/lib/python3.9/dist-packages/mishmash/commands/sync/sync.py", line 504, in _run
    result = _syncLib(lib)
  File "/usr/local/lib/python3.9/dist-packages/mishmash/commands/sync/sync.py", line 497, in _syncLib
    return eyed3_main(args, None)
  File "/usr/local/lib/python3.9/dist-packages/eyed3/main.py", line 41, in main
    eyed3.utils.walk(args.plugin, p, excludes=args.excludes, fs_encoding=args.fs_encoding,
  File "/usr/local/lib/python3.9/dist-packages/eyed3/utils/__init__.py", line 88, in walk
    handler.handleFile(f)
  File "/usr/local/lib/python3.9/dist-packages/eyed3/plugins/__init__.py", line 172, in handleFile
    self.audio_file = core.load(f, *args, **kwargs)
  File "/usr/local/lib/python3.9/dist-packages/eyed3/core.py", line 442, in load
    return mp3.Mp3AudioFile(path, tag_version)
  File "/usr/local/lib/python3.9/dist-packages/eyed3/mp3/__init__.py", line 145, in __init__
    super().__init__(path)
  File "/usr/local/lib/python3.9/dist-packages/eyed3/core.py", line 231, in __init__
    self._read()
  File "/usr/local/lib/python3.9/dist-packages/eyed3/mp3/__init__.py", line 151, in _read
    tag_found = self._tag.parse(file_obj, self._tag_version)
  File "/usr/local/lib/python3.9/dist-packages/eyed3/id3/tag.py", line 99, in parse
    tag_found, padding = self._loadV2Tag(fileobj)
  File "/usr/local/lib/python3.9/dist-packages/eyed3/id3/tag.py", line 131, in _loadV2Tag
    padding = self.frame_set.parse(fp, self.header,
  File "/usr/local/lib/python3.9/dist-packages/eyed3/id3/frames.py", line 1788, in parse
    frame = createFrame(tag_header, frame_header, data)
  File "/usr/local/lib/python3.9/dist-packages/eyed3/id3/frames.py", line 1888, in createFrame
    frame.parse(data, frame_header)
  File "/usr/local/lib/python3.9/dist-packages/eyed3/id3/frames.py", line 611, in parse
    self.description = decodeUnicode(desc, encoding)
  File "/usr/local/lib/python3.9/dist-packages/eyed3/id3/frames.py", line 1904, in decodeUnicode
    return str(bites, codec).rstrip("\x00")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
General error:
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/dist-packages/mishmash/__main__.py", line 55, in main
    retval = args.command_func(args) or 0
  File "/usr/local/lib/python3.9/dist-packages/mishmash/core.py", line 37, in run
    retval = super().run(args)
  File "/usr/local/lib/python3.9/dist-packages/nicfit/command.py", line 93, in run
    return self._run()
  File "/usr/local/lib/python3.9/dist-packages/mishmash/commands/sync/sync.py", line 504, in _run
    result = _syncLib(lib)
  File "/usr/local/lib/python3.9/dist-packages/mishmash/commands/sync/sync.py", line 497, in _syncLib
    return eyed3_main(args, None)
  File "/usr/local/lib/python3.9/dist-packages/eyed3/main.py", line 41, in main
    eyed3.utils.walk(args.plugin, p, excludes=args.excludes, fs_encoding=args.fs_encoding,
  File "/usr/local/lib/python3.9/dist-packages/eyed3/utils/__init__.py", line 88, in walk
    handler.handleFile(f)
  File "/usr/local/lib/python3.9/dist-packages/eyed3/plugins/__init__.py", line 172, in handleFile
    self.audio_file = core.load(f, *args, **kwargs)
  File "/usr/local/lib/python3.9/dist-packages/eyed3/core.py", line 442, in load
    return mp3.Mp3AudioFile(path, tag_version)
  File "/usr/local/lib/python3.9/dist-packages/eyed3/mp3/__init__.py", line 145, in __init__
    super().__init__(path)
  File "/usr/local/lib/python3.9/dist-packages/eyed3/core.py", line 231, in __init__
    self._read()
  File "/usr/local/lib/python3.9/dist-packages/eyed3/mp3/__init__.py", line 151, in _read
    tag_found = self._tag.parse(file_obj, self._tag_version)
  File "/usr/local/lib/python3.9/dist-packages/eyed3/id3/tag.py", line 99, in parse
    tag_found, padding = self._loadV2Tag(fileobj)
  File "/usr/local/lib/python3.9/dist-packages/eyed3/id3/tag.py", line 131, in _loadV2Tag
    padding = self.frame_set.parse(fp, self.header,
  File "/usr/local/lib/python3.9/dist-packages/eyed3/id3/frames.py", line 1788, in parse
    frame = createFrame(tag_header, frame_header, data)
  File "/usr/local/lib/python3.9/dist-packages/eyed3/id3/frames.py", line 1888, in createFrame
    frame.parse(data, frame_header)
  File "/usr/local/lib/python3.9/dist-packages/eyed3/id3/frames.py", line 611, in parse
    self.description = decodeUnicode(desc, encoding)
  File "/usr/local/lib/python3.9/dist-packages/eyed3/id3/frames.py", line 1904, in decodeUnicode
    return str(bites, codec).rstrip("\x00")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

TypeError: setFileScannerOpts() got an unexpected keyword argument 'default_recursive'

$ mishmash sync ./Musica/
Traceback (most recent call last):
  File "/usr/local/bin/mishmash", line 5, in <module>
    from mishmash.__main__ import app
  File "/usr/local/lib/python3.9/dist-packages/mishmash/__main__.py", line 115, in <module>
    app = MishMash()
  File "/usr/local/lib/python3.9/dist-packages/mishmash/__main__.py", line 98, in __init__
    Command.loadCommandMap(subparsers=subs)
  File "/usr/local/lib/python3.9/dist-packages/nicfit/command.py", line 135, in loadCommandMap
    cmd = Cmd(subparsers=subparsers, **cmd_kwargs) \
  File "/usr/local/lib/python3.9/dist-packages/mishmash/commands/sync/sync.py", line 449, in __init__
    self.plugin = SyncPlugin(self.parser)
  File "/usr/local/lib/python3.9/dist-packages/mishmash/commands/sync/sync.py", line 50, in __init__
    eyed3.main.setFileScannerOpts(
TypeError: setFileScannerOpts() got an unexpected keyword argument 'default_recursive'

Also with mishmash ./Musica/

unicode encoding error in sqlalchemy causing app exit

Syncing with unsonic/mishmash got this error which caused an application exit. It doesn't say what file it was working on when this happened, but syncing this one directory does it.

baron@dib ~/src/unsonic $ ./bin/unsonic -c foo.ini sync '/data/home/baron-data/music/Franz Ferdinand/Franz Ferdinand/'
2017-11-24 09:51:44,791 DEBUG [mishmash.database][MainThread] Checking for database 'sqlite:////home/baron/src/unsonic/build/development.sqlite'
2017-11-24 09:51:44,795 DEBUG [mishmash.database][MainThread] Connecting to database 'sqlite:////home/baron/src/unsonic/build/development.sqlite'
Syncing library 'Music': paths=['/data/home/baron-data/music/Franz Ferdinand/Franz Ferdinand/']
2017-11-24 09:51:44,802 INFO  [mishmash.commands.sync.sync][MainThread] Syncing library 'Music': paths=['/data/home/baron-data/music/Franz Ferdinand/Franz Ferdinand/']
Adding artist: Franz Ferdinand
Adding album: Franz Ferdinand
Adding track: /data/home/baron-data/music/Franz Ferdinand/Franz Ferdinand/01 Jacqueline.mp3
Updating album: Franz Ferdinand
Adding track: /data/home/baron-data/music/Franz Ferdinand/Franz Ferdinand/02 Tell Her Tonight.mp3
Updating album: Franz Ferdinand
Adding track: /data/home/baron-data/music/Franz Ferdinand/Franz Ferdinand/03 Take Me Out.mp3
Updating album: Franz Ferdinand
Adding track: /data/home/baron-data/music/Franz Ferdinand/Franz Ferdinand/05 Auf Achse.mp3
Updating album: Franz Ferdinand
Adding track: /data/home/baron-data/music/Franz Ferdinand/Franz Ferdinand/06 Cheating on You.mp3
Updating album: Franz Ferdinand
Adding track: /data/home/baron-data/music/Franz Ferdinand/Franz Ferdinand/07 This Fire.mp3
Updating album: Franz Ferdinand
Adding track: /data/home/baron-data/music/Franz Ferdinand/Franz Ferdinand/08 Darts of Pleasure.mp3
Updating album: Franz Ferdinand
Adding track: /data/home/baron-data/music/Franz Ferdinand/Franz Ferdinand/09 Michael.mp3
Updating album: Franz Ferdinand
Adding track: /data/home/baron-data/music/Franz Ferdinand/Franz Ferdinand/10 Come On Home.mp3
Updating album: Franz Ferdinand
Adding track: /data/home/baron-data/music/Franz Ferdinand/Franz Ferdinand/11 40'.mp3
Updating album: Franz Ferdinand
Adding track: /data/home/baron-data/music/Franz Ferdinand/Franz Ferdinand/Franz Ferdinand - 01 - Jacqueline.mp3
Updating album: Franz Ferdinand
Adding track: /data/home/baron-data/music/Franz Ferdinand/Franz Ferdinand/Franz Ferdinand - 02 - Tell Her Tonight.mp3
Updating album: Franz Ferdinand
Adding track: /data/home/baron-data/music/Franz Ferdinand/Franz Ferdinand/Franz Ferdinand - 03 - Take Me Out.mp3
2017-11-24 09:51:45,041 ERROR [mishmash][MainThread] 'utf-8' codec can't encode character '\udce9' in position 104: surrogates not allowed
Traceback (most recent call last):
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/MishMash-0.3b4-py3.6.egg/mishmash/__main__.py", line 53, in main
    retval = args.command_func(args, args.config) or 0
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/MishMash-0.3b4-py3.6.egg/mishmash/core.py", line 20, in run
    retval = super().run(args)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/nicfit/command.py", line 62, in run
    return self._run()
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/MishMash-0.3b4-py3.6.egg/mishmash/commands/sync/sync.py", line 458, in _run
    result = _syncLib(lib)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/MishMash-0.3b4-py3.6.egg/mishmash/commands/sync/sync.py", line 451, in _syncLib
    return eyed3_main(args, None)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/eyed3/main.py", line 50, in main
    fs_encoding=args.fs_encoding)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/eyed3/utils/__init__.py", line 112, in walk
    handler.handleDirectory(root, files)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/MishMash-0.3b4-py3.6.egg/mishmash/commands/sync/sync.py", line 324, in handleDirectory
    session)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/MishMash-0.3b4-py3.6.egg/mishmash/commands/sync/sync.py", line 161, in _syncAudioFile
    .filter_by(path=path, lib_id=self._lib.id).one()
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/sqlalchemy/orm/query.py", line 2814, in one
    ret = self.one_or_none()
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/sqlalchemy/orm/query.py", line 2784, in one_or_none
    ret = list(self)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/sqlalchemy/orm/query.py", line 2855, in __iter__
    return self._execute_and_instances(context)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/sqlalchemy/orm/query.py", line 2878, in _execute_and_instances
    result = conn.execute(querycontext.statement, self._params)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 945, in execute
    return meth(self, multiparams, params)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 263, in _execute_on_connection
    return connection._execute_clauseelement(self, multiparams, params)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1053, in _execute_clauseelement
    compiled_sql, distilled_params
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1189, in _execute_context
    context)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1405, in _handle_dbapi_exception
    util.reraise(*exc_info)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 187, in reraise
    raise value
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1182, in _execute_context
    context)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 470, in do_execute
    cursor.execute(statement, parameters)
UnicodeEncodeError: 'utf-8' codec can't encode character '\udce9' in position 104: surrogates not allowed
General error:
Traceback (most recent call last):
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/MishMash-0.3b4-py3.6.egg/mishmash/__main__.py", line 53, in main
    retval = args.command_func(args, args.config) or 0
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/MishMash-0.3b4-py3.6.egg/mishmash/core.py", line 20, in run
    retval = super().run(args)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/nicfit/command.py", line 62, in run
    return self._run()
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/MishMash-0.3b4-py3.6.egg/mishmash/commands/sync/sync.py", line 458, in _run
    result = _syncLib(lib)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/MishMash-0.3b4-py3.6.egg/mishmash/commands/sync/sync.py", line 451, in _syncLib
    return eyed3_main(args, None)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/eyed3/main.py", line 50, in main
    fs_encoding=args.fs_encoding)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/eyed3/utils/__init__.py", line 112, in walk
    handler.handleDirectory(root, files)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/MishMash-0.3b4-py3.6.egg/mishmash/commands/sync/sync.py", line 324, in handleDirectory
    session)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/MishMash-0.3b4-py3.6.egg/mishmash/commands/sync/sync.py", line 161, in _syncAudioFile
    .filter_by(path=path, lib_id=self._lib.id).one()
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/sqlalchemy/orm/query.py", line 2814, in one
    ret = self.one_or_none()
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/sqlalchemy/orm/query.py", line 2784, in one_or_none
    ret = list(self)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/sqlalchemy/orm/query.py", line 2855, in __iter__
    return self._execute_and_instances(context)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/sqlalchemy/orm/query.py", line 2878, in _execute_and_instances
    result = conn.execute(querycontext.statement, self._params)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 945, in execute
    return meth(self, multiparams, params)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 263, in _execute_on_connection
    return connection._execute_clauseelement(self, multiparams, params)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1053, in _execute_clauseelement
    compiled_sql, distilled_params
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1189, in _execute_context
    context)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1405, in _handle_dbapi_exception
    util.reraise(*exc_info)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 187, in reraise
    raise value
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1182, in _execute_context
    context)
  File "/home/baron/src/unsonic/build/venv/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 470, in do_execute
    cursor.execute(statement, parameters)
UnicodeEncodeError: 'utf-8' codec can't encode character '\udce9' in position 104: surrogates not allowed
2017-11-24 09:51:45,044 DEBUG [unsonic][MainThread] Application._atexit
baron@dib ~/src/unsonic $ 

Sync error - A string literal cannot contain NUL (0x00) characters.

Adding track: /media/music/Portishead/1997 - Portishead/Portishead - 08 - Seven Months.mp3
Updating album: Portishead
    fs_encoding=args.fs_encoding)
  File "/usr/lib/python3.6/site-packages/eyed3/utils/__init__.py", line 108, in walk
    handler.handleDirectory(root, files)
  File "/usr/lib/python3.6/site-packages/mishmash/commands/sync/sync.py", line 324, in handleDirectory
    session)
  File "/usr/lib/python3.6/site-packages/mishmash/commands/sync/sync.py", line 238, in _syncAudioFile
    lib_id=self._lib.id).one()
  File "/usr/lib/python3.6/site-packages/sqlalchemy/orm/query.py", line 2814, in one
    ret = self.one_or_none()
  File "/usr/lib/python3.6/site-packages/sqlalchemy/orm/query.py", line 2784, in one_or_none
    ret = list(self)
  File "/usr/lib/python3.6/site-packages/sqlalchemy/orm/query.py", line 2855, in __iter__
    return self._execute_and_instances(context)
  File "/usr/lib/python3.6/site-packages/sqlalchemy/orm/query.py", line 2878, in _execute_and_instances
    result = conn.execute(querycontext.statement, self._params)
  File "/usr/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 945, in execute
    return meth(self, multiparams, params)
  File "/usr/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 263, in _execute_on_connection
    return connection._execute_clauseelement(self, multiparams, params)
  File "/usr/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1053, in _execute_clauseelement
    compiled_sql, distilled_params
  File "/usr/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1189, in _execute_context
    context)
  File "/usr/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1405, in _handle_dbapi_exception
    util.reraise(*exc_info)
  File "/usr/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 187, in reraise
    raise value
  File "/usr/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1182, in _execute_context
    context)
  File "/usr/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 470, in do_execute
    cursor.execute(statement, parameters)
ValueError: A string literal cannot contain NUL (0x00) characters.

Sync notify tests

  • touch a music file: IN_OPEN, IN_ATTRIB, IN_CLOSE_WRITE
  • touch a non-music file: IN_OPEN, IN_ATTRIB, IN_CLOSE_WRITE
  • touch a music dir
  • touch a non-music dir
  • chmod/chown a music file
  • chmod/chown a non-music file
  • chmod/chown a music dir
  • chmod/chown a non-music dir
  • edit a file
  • add a file
  • rm a file
  • add a music dir
  • rm a music dir
  • add a non-music dir
  • rm a non-music dir
  • rm cover art
  • add cover art

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.