eyeD3 is a Python module and command line program for processing ID3 tags. Information about mp3 files (i.e bit rate, sample frequency, play time, etc.) is also provided. The formats supported are ID3v1 (1.0/1.1) and ID3v2 (2.3/2.4).

Overview

Status

Latest Version Project Status Build Status License Supported Python versions Coverage Status

About

eyeD3 is a Python tool for working with audio files, specifically MP3 files containing ID3 metadata (i.e. song info).

It provides a command-line tool (eyeD3) and a Python library (import eyed3) that can be used to write your own applications or plugins that are callable from the command-line tool.

For example, to set some song information in an mp3 file called song.mp3:

$ eyeD3 -a Integrity -A "Humanity Is The Devil" -t "Hollow" -n 2 song.mp3

With this command we've set the artist (-a/--artist), album (-A/--album), title (-t/--title), and track number (-n/--track-num) properties in the ID3 tag of the file. This is the standard interface that eyeD3 has always had in the past, therefore it is also the default plugin when no other is specified.

The results of this command can be seen by running the eyeD3 with no options.

$ eyeD3 song.mp3
song.mp3      [ 3.06 MB ]
-------------------------------------------------------------------------
ID3 v2.4:
title: Hollow
artist: Integrity
album: Humanity Is The Devil
album artist: None
track: 2
-------------------------------------------------------------------------

The same can be accomplished using Python.

import eyed3

audiofile = eyed3.load("song.mp3")
audiofile.tag.artist = "Token Entry"
audiofile.tag.album = "Free For All Comp LP"
audiofile.tag.album_artist = "Various Artists"
audiofile.tag.title = "The Edge"
audiofile.tag.track_num = 3

audiofile.tag.save()

eyeD3 is written and maintained by Travis Shirk and is licensed under version 3 of the GPL.

Features

  • Python package (import eyed3) for writing applications and plugins.
  • eyeD3 : Command-line tool driver script that supports plugins.
  • Easy ID3 editing/viewing of audio metadata from the command-line.
  • Plugins for: Tag to string formatting (display), album fixing (fixup), cover art downloading (art), collection stats (stats), and json/yaml/jabber/nfo output formats, and more included.
  • Support for ID3 versions 1.x, 2.2 (read-only), 2.3, and 2.4.
  • Support for the MP3 audio format exposing details such as play time, bit rate, sampling frequency, etc.
  • Abstract design allowing future support for different audio formats and metadata containers.

Get Started

Python >= 3.6 is required.

For installation instructions or more complete documentation see http://eyeD3.nicfit.net/

Please post feedback and/or defects on the issue tracker, or mailing list.

Comments
  • eyeD3 version 0.9.x not working on slackware

    eyeD3 version 0.9.x not working on slackware

    I've been a very happy user of eyeD3 for several years now, so I tried compiling version 0.9.2 of it, only for it to fail with the error below:

    Traceback (most recent call last): File "/usr/bin/eyeD3", line 11, in load_entry_point('eyeD3==0.9.2', 'console_scripts', 'eyeD3')() File "/usr/lib64/python2.7/site-packages/pkg_resources/init.py", line 490, in load_entry_point return get_distribution(dist).load_entry_point(group, name) File "/usr/lib64/python2.7/site-packages/pkg_resources/init.py", line 2854, in load_entry_point return ep.load() File "/usr/lib64/python2.7/site-packages/pkg_resources/init.py", line 2445, in load return self.resolve() File "/usr/lib64/python2.7/site-packages/pkg_resources/init.py", line 2451, in resolve module = import(self.module_name, fromlist=['name'], level=0) File "/usr/lib64/python2.7/site-packages/eyed3/init.py", line 31, in from .utils.log import log # noqa: E402 File "/usr/lib64/python2.7/site-packages/eyed3/utils/init.py", line 361 msg = f"invalid level choice: {level} (choose from {parser.log_levels})" ^ SyntaxError: invalid syntax

    This isn't a total loss, as I just switched back to version 0.8.12 for the time being, but it would be nice to be able to run the newer versions to stay current, but there is probably some dependency that I have no idea is missing that makes that impossible. What did I get wrong?

    help wanted 
    opened by oldpink 9
  • UnboundLocalError: local variable 'tn' referenced before assignment

    UnboundLocalError: local variable 'tn' referenced before assignment

    So I was using eyeD3 ( python ) to set ID3 tags to mp3 files for a personal project when the given traceback occurred in eyed3/id3/tag.py As a temporary hack I changed _setNum(self, fid, val) on line 320 in the said file as follows:

    def _setNum(self, fid, val):
            tn, tt = None, None # Added this line 
            if type(val) is tuple:
                tn, tt = val
            elif type(val) is int:
                tn, tt = val, None
            elif val is None:
                tn, tt = None, None
    
            n = (tn, tt)
    

    Although the UnboundLocalError was gone but the track number tag was not being assigned properly (I didn't expect to either) hence this issue for hopefully a proper fix (or guidance so that I can fix it myself and open a PR)

    The error occurred in a Py3.7 virtual environment

    Python 3.7.2 (default, Jan 10 2019, 23:51:51)
    [GCC 8.2.1 20181127] on linux
    
    $ eyeD3 --version
    eyed3.plugins:WARNING: Plugin '('lastfm.py', '/home/shashank/Projects/CompleteMusic-2.0/lib/python3.7/site-packages/eyed3/plugins')' requires packages that are not installed: cannot import name 'COVER_EXTRA_LARGE' from 'pylast' (/home/shashank/Projects/CompleteMusic-2.0/lib/python3.7/site-packages/pylast/__init__.py)
    0.8.10
    
    Traceback (most recent call last):
    File "mio.py", line 182, in <module>
    test_object = MusicIndiaOnline("Balam Pichkari")
    File "mio.py", line 31, in __init__
    self.download_song()
    File "mio.py", line 77, in download_song
    audiofile.tag.track_num = self.metadata['track-number']
    File "[I have redacted this]/lib/python3.7/site-packages/eyed3/core.py", line 173, in track_num
    self._setTrackNum(v)
    File "[I have redacted this]/lib/python3.7/site-packages/eyed3/id3/tag.py", line 303, in _setTrackNum
    self._setNum(frames.TRACKNUM_FID, val)
    File "[I have redacted this]/lib/python3.7/site-packages/eyed3/id3/tag.py", line 328, in _setNum
    n = (tn, tt)
    UnboundLocalError: local variable 'tn' referenced before assignment
    

    I hope I have given enough info. I'd also like to clarify that apart from the above change in source code I haven't changed anything else.

    opened by gadilashashank 9
  • Failed to find magiclib

    Failed to find magiclib

    I am running Windows 10 version 1703 with Python 3.6.2 installed.

    I created a python script that uses eyeD3 simply by importing it after running pip install eyed3 which worked until I updated to version 1703.

    Now when I try to run the script I get this output:

    Traceback (most recent call last):
      File ".\script.py", line 6, in <module>
        import eyed3
      File "C:\Users\User\AppData\Local\Programs\Python\Python36-32\lib\site-packages\eyed3\__init__.py", line 35, in <module>
        from .utils.log import log                                            # noqa
      File "C:\Users\User\AppData\Local\Programs\Python\Python36-32\lib\site-packages\eyed3\utils\__init__.py", line 27, in <module>
        import magic
      File "C:\Users\User\AppData\Local\Programs\Python\Python36-32\lib\site-packages\magic.py", line 176, in <module>
        raise ImportError('failed to find libmagic.  Check your installation')
    ImportError: failed to find libmagic.  Check your installation
    

    I have tried reinstalling magiclib but it's not helping. What should I try?

    Informational 
    opened by GregSkl 9
  • UnicodeEncodeError: 'ascii' codec can't encode character

    UnicodeEncodeError: 'ascii' codec can't encode character

    Does 0.8 version work with unicode characters? This error not occurred with 0.7.11.

    eyeD3 01.\ Discothèque.mp3 
    Uncaught exception: 'ascii' codec can't encode character u'\xe8' in position 32: ordinal not in range(128)
    
    eyed3:ERROR: 'ascii' codec can't encode character u'\xe8' in position 32: ordinal not in range(128)
    Traceback (most recent call last):
      File "/home/pavel/.local/lib/python2.7/site-packages/eyed3/main.py", line 279, in _main
        retval = mainFunc(args, config)
      File "/home/pavel/.local/lib/python2.7/site-packages/eyed3/main.py", line 50, in main
        fs_encoding=args.fs_encoding)
      File "/home/pavel/.local/lib/python2.7/site-packages/eyed3/utils/__init__.py", line 81, in walk
        handler.handleFile(os.path.abspath(path))
      File "/home/pavel/.local/lib/python2.7/site-packages/eyed3/plugins/classic.py", line 457, in handleFile
        super(ClassicPlugin, self).handleFile(f, tag_version=parse_version)
      File "/home/pavel/.local/lib/python2.7/site-packages/eyed3/plugins/__init__.py", line 172, in handleFile
        self.audio_file = core.load(f, *args, **kwargs)
      File "/home/pavel/.local/lib/python2.7/site-packages/eyed3/core.py", line 77, in load
        path = pathlib.Path(path)
      File "/usr/lib/python2.7/dist-packages/pathlib.py", line 936, in __new__
        self = cls._from_parts(args, init=False)
      File "/usr/lib/python2.7/dist-packages/pathlib.py", line 613, in _from_parts
        drv, root, parts = self._parse_args(args)
      File "/usr/lib/python2.7/dist-packages/pathlib.py", line 606, in _parse_args
        return cls._flavour.parse_parts(parts)
      File "/usr/lib/python2.7/dist-packages/pathlib.py", line 75, in parse_parts
        parts = _py2_fsencode(parts)
      File "/usr/lib/python2.7/dist-packages/pathlib.py", line 58, in _py2_fsencode
        else part for part in parts]
    UnicodeEncodeError: 'ascii' codec can't encode character u'\xe8' in position 32: ordinal not in range(128)
    
    opened by spvkgn 8
  • MagicException(err) on import eyed3

    MagicException(err) on import eyed3

    Python v3.7.0a3 , eyed3 v0.8.4 , python_magic v0.4.15 , os Windows 7 , and x64 dll's from libmagicwin64-master (files timestamped 2015).

    import magic returns no error, but upon import eyed3, the following is output (in IDLE):

    Traceback (most recent call last): File "<pyshell#123>", line 1, in import eyed3 File "D:\Python\Python3\lib\site-packages\eyed3_init_.py", line 36, in from .core import load # noqa File "D:\Python\Python3\lib\site-packages\eyed3\core.py", line 9, in from .utils import guessMimetype File "D:\Python\Python3\lib\site-packages\eyed3\utils_init_.py", line 53, in mime_types = MagicTypes() File "D:\Python\Python3\lib\site-packages\eyed3\utils_init.py", line 41, in init keep_going=False) File "D:\Python\Python3\lib\site-packages\magic.py", line 67, in init magic_load(self.cookie, magic_file) File "D:\Python\Python3\lib\site-packages\magic.py", line 264, in magic_load return _magic_load(cookie, coerce_filename(filename)) File "D:\Python\Python3\lib\site-packages\magic.py", line 195, in errorcheck_negative_one raise MagicException(err) magic.MagicException: None [end output]

    Very interested in adding this to my mp3 scripting flow; hopefully, we can get this to work. Yes, I know the documents indicate python >=3.3, but I can hope can't I?

    Thanks!

    Informational 
    opened by damihm 7
  • `application/x-font-gdos` is sometimes returned as a .mp3 mime-type and it not in the list of acceptable types

    `application/x-font-gdos` is sometimes returned as a .mp3 mime-type and it not in the list of acceptable types

    I have directory of songs, they all look like " Noisia-Tommy+s_Theme.mp3". I wrote a script to automatically tag the artist and the title for each of them.

    #!/usr/bin/env python3
    
    import eyed3
    import os
    
    os.chdir("./")
    for filename in os.listdir('./'):
        for c, s in enumerate(filename):
                if s=="-":
                    artist=filename[:(c)]
                    title=filename[(c+1):-4]
                    audiofile=eyed3.load(filename)
                    audiofile.initTag()
                    artist=artist.replace("+", "'")
                    artist=artist.replace("_", " ")
                    title=title.replace("+", "'")
                    title=title.replace("_", " ")
                    print(title)
                    print(artist)
                    audiofile.tag.artist=artist
                    audiofile.tag.title=title
                    audiofile.tag.save()
                    break 
    

    When I run it I get this error : Traceback (most recent call last): File "./tag.py", line 14, in <module> audiofile.initTag() AttributeError: 'NoneType' object has no attribute 'initTag' But it happens only with 1/3 of the files. It works for some songs, but not for all of them. Any advices? ``

    merge to master 
    opened by Nathoufresh 6
  • lastfm plugin import failure

    lastfm plugin import failure

    I see this with eyeD3 version 0.8.8 under python 3.6.7

    eyed3.plugins:WARNING: Plugin '('lastfm.py', '/usr/local/lib/python3.6/dist-packages/eyed3/plugins')' requires packages that are not installed: cannot import name 'COVER_EXTRA_LARGE'

    Looks like it may be a fairly simple fix.

    This is from lastfm.py:

    from pylast import (COVER_EXTRA_LARGE, COVER_LARGE, COVER_MEDIUM, COVER_MEGA, COVER_SMALL)

    What is declared in pylast 3.0.0:

    SIZE_SMALL = 0 SIZE_MEDIUM = 1 SIZE_LARGE = 2 SIZE_EXTRA_LARGE = 3 SIZE_MEGA = 4

    task 
    opened by billsime 6
  • Update pytest to 4.0.0

    Update pytest to 4.0.0

    This PR updates pytest from 3.9.1 to 4.0.0.

    Changelog

    4.0.0

    =========================
    
    Removals
    --------
    
    - `3737 &lt;https://github.com/pytest-dev/pytest/issues/3737&gt;`_: **RemovedInPytest4Warnings are now errors by default.**
    
    Following our plan to remove deprecated features with as little disruption as
    possible, all warnings of type ``RemovedInPytest4Warnings`` now generate errors
    instead of warning messages.
    
    **The affected features will be effectively removed in pytest 4.1**, so please consult the
    `Deprecations and Removals &lt;https://docs.pytest.org/en/latest/deprecations.html&gt;`__
    section in the docs for directions on how to update existing code.
    
    In the pytest ``4.0.X`` series, it is possible to change the errors back into warnings as a stop
    gap measure by adding this to your ``pytest.ini`` file:
    
    .. code-block:: ini
    
       [pytest]
       filterwarnings =
           ignore::pytest.RemovedInPytest4Warning
    
    But this will stop working when pytest ``4.1`` is released.
    
    **If you have concerns** about the removal of a specific feature, please add a
    comment to `4348 &lt;https://github.com/pytest-dev/pytest/issues/4348&gt;`__.
    
    
    - `4358 &lt;https://github.com/pytest-dev/pytest/issues/4358&gt;`_: Remove the ``::()`` notation to denote a test class instance in node ids.
    
    Previously, node ids that contain test instances would use ``::()`` to denote the instance like this::
    
       test_foo.py::Test::()::test_bar
    
    The extra ``::()`` was puzzling to most users and has been removed, so that the test id becomes now::
    
       test_foo.py::Test::test_bar
    
    This change could not accompany a deprecation period as is usual when user-facing functionality changes because
    it was not really possible to detect when the functionality was being used explicitly.
    
    The extra ``::()`` might have been removed in some places internally already,
    which then led to confusion in places where it was expected, e.g. with
    ``--deselect`` (`4127 &lt;https://github.com/pytest-dev/pytest/issues/4127&gt;`_).
    
    Test class instances are also not listed with ``--collect-only`` anymore.
    
    
    
    Features
    --------
    
    - `4270 &lt;https://github.com/pytest-dev/pytest/issues/4270&gt;`_: The ``cache_dir`` option uses ``$TOX_ENV_DIR`` as prefix (if set in the environment).
    
    This uses a different cache per tox environment by default.
    
    
    
    Bug Fixes
    ---------
    
    - `3554 &lt;https://github.com/pytest-dev/pytest/issues/3554&gt;`_: Fix ``CallInfo.__repr__`` for when the call is not finished yet.
    

    3.10.1

    ==========================
    
    Bug Fixes
    ---------
    
    - `4287 &lt;https://github.com/pytest-dev/pytest/issues/4287&gt;`_: Fix nested usage of debugging plugin (pdb), e.g. with pytester&#39;s ``testdir.runpytest``.
    
    
    - `4304 &lt;https://github.com/pytest-dev/pytest/issues/4304&gt;`_: Block the ``stepwise`` plugin if ``cacheprovider`` is also blocked, as one depends on the other.
    
    
    - `4306 &lt;https://github.com/pytest-dev/pytest/issues/4306&gt;`_: Parse ``minversion`` as an actual version and not as dot-separated strings.
    
    
    - `4310 &lt;https://github.com/pytest-dev/pytest/issues/4310&gt;`_: Fix duplicate collection due to multiple args matching the same packages.
    
    
    - `4321 &lt;https://github.com/pytest-dev/pytest/issues/4321&gt;`_: Fix ``item.nodeid`` with resolved symlinks.
    
    
    - `4325 &lt;https://github.com/pytest-dev/pytest/issues/4325&gt;`_: Fix collection of direct symlinked files, where the target does not match ``python_files``.
    
    
    - `4329 &lt;https://github.com/pytest-dev/pytest/issues/4329&gt;`_: Fix TypeError in report_collect with _collect_report_last_write.
    
    
    
    Trivial/Internal Changes
    ------------------------
    
    - `4305 &lt;https://github.com/pytest-dev/pytest/issues/4305&gt;`_: Replace byte/unicode helpers in test_capture with python level syntax.
    

    3.10.0

    ==========================
    
    Features
    --------
    
    - `2619 &lt;https://github.com/pytest-dev/pytest/issues/2619&gt;`_: Resume capturing output after ``continue`` with ``__import__(&quot;pdb&quot;).set_trace()``.
    
    This also adds a new ``pytest_leave_pdb`` hook, and passes in ``pdb`` to the
    existing ``pytest_enter_pdb`` hook.
    
    
    - `4147 &lt;https://github.com/pytest-dev/pytest/issues/4147&gt;`_: Add ``--sw``, ``--stepwise`` as an alternative to ``--lf -x`` for stopping at the first failure, but starting the next test invocation from that test.  See `the documentation &lt;https://docs.pytest.org/en/latest/cache.htmlstepwise&gt;`__ for more info.
    
    
    - `4188 &lt;https://github.com/pytest-dev/pytest/issues/4188&gt;`_: Make ``--color`` emit colorful dots when not running in verbose mode. Earlier, it would only colorize the test-by-test output if ``--verbose`` was also passed.
    
    
    - `4225 &lt;https://github.com/pytest-dev/pytest/issues/4225&gt;`_: Improve performance with collection reporting in non-quiet mode with terminals.
    
    The &quot;collecting …&quot; message is only printed/updated every 0.5s.
    
    
    
    Bug Fixes
    ---------
    
    - `2701 &lt;https://github.com/pytest-dev/pytest/issues/2701&gt;`_: Fix false ``RemovedInPytest4Warning: usage of Session... is deprecated, please use pytest`` warnings.
    
    
    - `4046 &lt;https://github.com/pytest-dev/pytest/issues/4046&gt;`_: Fix problems with running tests in package ``__init__.py`` files.
    
    
    - `4260 &lt;https://github.com/pytest-dev/pytest/issues/4260&gt;`_: Swallow warnings during anonymous compilation of source.
    
    
    - `4262 &lt;https://github.com/pytest-dev/pytest/issues/4262&gt;`_: Fix access denied error when deleting stale directories created by ``tmpdir`` / ``tmp_path``.
    
    
    - `611 &lt;https://github.com/pytest-dev/pytest/issues/611&gt;`_: Naming a fixture ``request`` will now raise a warning: the ``request`` fixture is internal and
    should not be overwritten as it will lead to internal errors.
    
    - `4266 &lt;https://github.com/pytest-dev/pytest/issues/4266&gt;`_: Handle (ignore) exceptions raised during collection, e.g. with Django&#39;s LazySettings proxy class.
    
    
    
    Improved Documentation
    ----------------------
    
    - `4255 &lt;https://github.com/pytest-dev/pytest/issues/4255&gt;`_: Added missing documentation about the fact that module names passed to filter warnings are not regex-escaped.
    
    
    
    Trivial/Internal Changes
    ------------------------
    
    - `4272 &lt;https://github.com/pytest-dev/pytest/issues/4272&gt;`_: Display cachedir also in non-verbose mode if non-default.
    
    
    - `4277 &lt;https://github.com/pytest-dev/pytest/issues/4277&gt;`_: pdb: improve message about output capturing with ``set_trace``.
    
    Do not display &quot;IO-capturing turned off/on&quot; when ``-s`` is used to avoid
    confusion.
    
    
    - `4279 &lt;https://github.com/pytest-dev/pytest/issues/4279&gt;`_: Improve message and stack level of warnings issued by ``monkeypatch.setenv`` when the value of the environment variable is not a ``str``.
    

    3.9.3

    =========================
    
    Bug Fixes
    ---------
    
    - `4174 &lt;https://github.com/pytest-dev/pytest/issues/4174&gt;`_: Fix &quot;ValueError: Plugin already registered&quot; with conftest plugins via symlink.
    
    
    - `4181 &lt;https://github.com/pytest-dev/pytest/issues/4181&gt;`_: Handle race condition between creation and deletion of temporary folders.
    
    
    - `4221 &lt;https://github.com/pytest-dev/pytest/issues/4221&gt;`_: Fix bug where the warning summary at the end of the test session was not showing the test where the warning was originated.
    
    
    - `4243 &lt;https://github.com/pytest-dev/pytest/issues/4243&gt;`_: Fix regression when ``stacklevel`` for warnings was passed as positional argument on python2.
    
    
    
    Improved Documentation
    ----------------------
    
    - `3851 &lt;https://github.com/pytest-dev/pytest/issues/3851&gt;`_: Add reference to ``empty_parameter_set_mark`` ini option in documentation of ``pytest.mark.parametrize``
    
    
    
    Trivial/Internal Changes
    ------------------------
    
    - `4028 &lt;https://github.com/pytest-dev/pytest/issues/4028&gt;`_: Revert patching of ``sys.breakpointhook`` since it appears to do nothing.
    
    
    - `4233 &lt;https://github.com/pytest-dev/pytest/issues/4233&gt;`_: Apply an import sorter (``reorder-python-imports``) to the codebase.
    
    
    - `4248 &lt;https://github.com/pytest-dev/pytest/issues/4248&gt;`_: Remove use of unnecessary compat shim, six.binary_type
    

    3.9.2

    =========================
    
    Bug Fixes
    ---------
    
    - `2909 &lt;https://github.com/pytest-dev/pytest/issues/2909&gt;`_: Improve error message when a recursive dependency between fixtures is detected.
    
    
    - `3340 &lt;https://github.com/pytest-dev/pytest/issues/3340&gt;`_: Fix logging messages not shown in hooks ``pytest_sessionstart()`` and ``pytest_sessionfinish()``.
    
    
    - `3533 &lt;https://github.com/pytest-dev/pytest/issues/3533&gt;`_: Fix unescaped XML raw objects in JUnit report for skipped tests
    
    
    - `3691 &lt;https://github.com/pytest-dev/pytest/issues/3691&gt;`_: Python 2: safely format warning message about passing unicode strings to ``warnings.warn``, which may cause
    surprising ``MemoryError`` exception when monkey patching ``warnings.warn`` itself.
    
    
    - `4026 &lt;https://github.com/pytest-dev/pytest/issues/4026&gt;`_: Improve error message when it is not possible to determine a function&#39;s signature.
    
    
    - `4177 &lt;https://github.com/pytest-dev/pytest/issues/4177&gt;`_: Pin ``setuptools&gt;=40.0`` to support ``py_modules`` in ``setup.cfg``
    
    
    - `4179 &lt;https://github.com/pytest-dev/pytest/issues/4179&gt;`_: Restore the tmpdir behaviour of symlinking the current test run.
    
    
    - `4192 &lt;https://github.com/pytest-dev/pytest/issues/4192&gt;`_: Fix filename reported by ``warnings.warn`` when using ``recwarn`` under python2.
    
    Links
    • PyPI: https://pypi.org/project/pytest
    • Changelog: https://pyup.io/changelogs/pytest/
    • Homepage: https://docs.pytest.org/en/latest/
    opened by pyup-bot 6
  • Update pytest to 3.8.2

    Update pytest to 3.8.2

    This PR updates pytest from 3.8.1 to 3.8.2.

    Changelog

    3.8.2

    =========================
    
    Deprecations and Removals
    -------------------------
    
    - `4036 &lt;https://github.com/pytest-dev/pytest/issues/4036&gt;`_: The ``item`` parameter of ``pytest_warning_captured`` hook is now documented as deprecated. We realized only after
    the ``3.8`` release that this parameter is incompatible with ``pytest-xdist``.
    
    Our policy is to not deprecate features during bugfix releases, but in this case we believe it makes sense as we are
    only documenting it as deprecated, without issuing warnings which might potentially break test suites. This will get
    the word out that hook implementers should not use this parameter at all.
    
    In a future release ``item`` will always be ``None`` and will emit a proper warning when a hook implementation
    makes use of it.
    
    
    
    Bug Fixes
    ---------
    
    - `3539 &lt;https://github.com/pytest-dev/pytest/issues/3539&gt;`_: Fix reload on assertion rewritten modules.
    
    
    - `4034 &lt;https://github.com/pytest-dev/pytest/issues/4034&gt;`_: The ``.user_properties`` attribute of ``TestReport`` objects is a list
    of (name, value) tuples, but could sometimes be instantiated as a tuple
    of tuples.  It is now always a list.
    
    
    - `4039 &lt;https://github.com/pytest-dev/pytest/issues/4039&gt;`_: No longer issue warnings about using ``pytest_plugins`` in non-top-level directories when using ``--pyargs``: the
    current ``--pyargs`` mechanism is not reliable and might give false negatives.
    
    
    - `4040 &lt;https://github.com/pytest-dev/pytest/issues/4040&gt;`_: Exclude empty reports for passed tests when ``-rP`` option is used.
    
    
    - `4051 &lt;https://github.com/pytest-dev/pytest/issues/4051&gt;`_: Improve error message when an invalid Python expression is passed to the ``-m`` option.
    
    
    - `4056 &lt;https://github.com/pytest-dev/pytest/issues/4056&gt;`_: ``MonkeyPatch.setenv`` and ``MonkeyPatch.delenv`` issue a warning if the environment variable name is not ``str`` on Python 2.
    
    In Python 2, adding ``unicode`` keys to ``os.environ`` causes problems with ``subprocess`` (and possible other modules),
    making this a subtle bug specially susceptible when used with ``from __future__ import unicode_literals``.
    
    
    
    Improved Documentation
    ----------------------
    
    - `3928 &lt;https://github.com/pytest-dev/pytest/issues/3928&gt;`_: Add possible values for fixture scope to docs.
    
    Links
    • PyPI: https://pypi.org/project/pytest
    • Changelog: https://pyup.io/changelogs/pytest/
    • Homepage: https://docs.pytest.org/en/latest/
    opened by pyup-bot 6
  • WARNING:eyed3.id3.frames:Frame 'IPLS' is not yet supported, using raw Frame to parse

    WARNING:eyed3.id3.frames:Frame 'IPLS' is not yet supported, using raw Frame to parse

    I'm getting these warnings with newer MP3s (purchased from eMusic). I'm using eyeD3 inside this Github app: https://github.com/gboysko/shuffle-db which invokes the load API.

    Some files have this warning as well:

    WARNING:eyed3.core:Invalid date: 0707
    

    I'm wondering if these this frame (IPLS) will be supported soon and whether it prevents a load from succeeding. Further, I'm not sure the date warning is being reported properly. For example, if I list the file on the command line, I see:

    eyed3.id3.tag:WARNING: Invalid v2.3 TYER, TDAT, or TIME frame: Invalid date string: 2017--
    
    opened by gboysko 6
  • Character Encoding Probems

    Character Encoding Probems

    Description / Reproduce Bug

    • Attempting to write tags with ISO Latin-1 characters resulted in an unhanded exception.
    • This bug can easily be reproduced with any mp3 to write tags to, using the offending character as an arguement. For example: $eyeD3 --debug -t "title" -a "友 & 愛" ~/Desktop/testfile.mp3

    Setup Information

    • Operating System: Debian Jessie (8)
    • eyeD3 Version: eyeD3 0.6.18
    • Python Versions: 2.7.9 and 3.4.2

    Log/Stacktrace

    From the moment the bug was caught

    SERVICE_AREA-.mp3	[ 2.22 MB ]
    -------------------------------------------------------------------------------
    Time: 06:30	MPEG1, Layer III	[ 48 kb/s @ 44100 Hz - Stereo ]
    -------------------------------------------------------------------------------
    Setting artist: 友 & 愛
    Setting title: Service Area
    Writing tag...
    Uncaught exception: 'latin-1' codec can't encode character u'\u53cb' in position 0: ordinal not in range(256)
    Traceback (most recent call last):
      File "/usr/bin/eyeD3", line 1265, in <module>
        retval = main();
      File "/usr/bin/eyeD3", line 1242, in main
        retval = app.handleFile(f);
      File "/usr/bin/eyeD3", line 559, in handleFile
        if not self.tag.update():
      File "/usr/lib/python2.7/dist-packages/eyeD3/tag.py", line 526, in update
        self.__saveV2Tag(version);
      File "/usr/lib/python2.7/dist-packages/eyeD3/tag.py", line 1251, in __saveV2Tag
        raw_frame = f.render();
      File "/usr/lib/python2.7/dist-packages/eyeD3/frames.py", line 756, in render
        self.text.encode(id3EncodingToString(self.encoding));
    UnicodeEncodeError: 'latin-1' codec can't encode character u'\u53cb' in position 0: ordinal not in range(256)
    

    Traced Execution Log:

    Command: $ eyeD3 --debug -t "title" -a "友 & 愛" ~/Desktop/testfile.mp3

    testfile.mp3	[ 2.22 MB ]
    -------------------------------------------------------------------------------
    eyeD3 trace> Linking File: /home/reprise/Desktop/testfile.mp3
    eyeD3 trace> Located ID3 v2 tag
    eyeD3 trace> TagHeader [major]: 2
    eyeD3 trace> TagHeader [minor]: 4
    eyeD3 trace> TagHeader [revis]: 0
    eyeD3 trace> TagHeader [flags]: unsync(0) extended(0) experimental(0) footer(0)
    eyeD3 trace> TagHeader [size string]: 0x00000118
    eyeD3 trace> TagHeader [size]: 152 (0x98)
    eyeD3 trace> sizeLeft: 152
    eyeD3 trace> +++++++++++++++++++++++++++++++++++++++++++++++++
    eyeD3 trace> FrameSet: Reading Frame #1
    eyeD3 trace> FrameHeader [start byte]: 10 (0xA)
    eyeD3 trace> FrameHeader [id]: TXXX (0x54585858)
    eyeD3 trace> FrameHeader [data size]: 18 (0x12)
    eyeD3 trace> FrameHeader [flags]: ta(0) fa(0) ro(0) co(0) en(0) gr(0) un(0) dl(0)
    eyeD3 trace> FrameSet: Reading 18 (0x12) bytes of data from byte pos 20 (0x14)
    eyeD3 trace> FrameSet: 18 bytes of data read
    eyeD3 trace> UserTextFrame encoding: utf_8
    eyeD3 trace> UserTextFrame description: major_brand
    eyeD3 trace> UserTextFrame text: isom
    eyeD3 trace> UserTextFrame encoding: utf_8
    eyeD3 trace> UserTextFrame description: major_brand
    eyeD3 trace> UserTextFrame text: isom
    eyeD3 trace> sizeLeft: 124
    eyeD3 trace> +++++++++++++++++++++++++++++++++++++++++++++++++
    eyeD3 trace> FrameSet: Reading Frame #2
    eyeD3 trace> FrameHeader [start byte]: 38 (0x26)
    eyeD3 trace> FrameHeader [id]: TXXX (0x54585858)
    eyeD3 trace> FrameHeader [data size]: 19 (0x13)
    eyeD3 trace> FrameHeader [flags]: ta(0) fa(0) ro(0) co(0) en(0) gr(0) un(0) dl(0)
    eyeD3 trace> FrameSet: Reading 19 (0x13) bytes of data from byte pos 48 (0x30)
    eyeD3 trace> FrameSet: 19 bytes of data read
    eyeD3 trace> UserTextFrame encoding: utf_8
    eyeD3 trace> UserTextFrame description: minor_version
    eyeD3 trace> UserTextFrame text: 512
    eyeD3 trace> UserTextFrame encoding: utf_8
    eyeD3 trace> UserTextFrame description: minor_version
    eyeD3 trace> UserTextFrame text: 512
    eyeD3 trace> sizeLeft: 95
    eyeD3 trace> +++++++++++++++++++++++++++++++++++++++++++++++++
    eyeD3 trace> FrameSet: Reading Frame #3
    eyeD3 trace> FrameHeader [start byte]: 67 (0x43)
    eyeD3 trace> FrameHeader [id]: TXXX (0x54585858)
    eyeD3 trace> FrameHeader [data size]: 32 (0x20)
    eyeD3 trace> FrameHeader [flags]: ta(0) fa(0) ro(0) co(0) en(0) gr(0) un(0) dl(0)
    eyeD3 trace> FrameSet: Reading 32 (0x20) bytes of data from byte pos 77 (0x4D)
    eyeD3 trace> FrameSet: 32 bytes of data read
    eyeD3 trace> UserTextFrame encoding: utf_8
    eyeD3 trace> UserTextFrame description: compatible_brands
    eyeD3 trace> UserTextFrame text: isomiso2mp41
    eyeD3 trace> UserTextFrame encoding: utf_8
    eyeD3 trace> UserTextFrame description: compatible_brands
    eyeD3 trace> UserTextFrame text: isomiso2mp41
    eyeD3 trace> sizeLeft: 53
    eyeD3 trace> +++++++++++++++++++++++++++++++++++++++++++++++++
    eyeD3 trace> FrameSet: Reading Frame #4
    eyeD3 trace> FrameHeader [start byte]: 109 (0x6D)
    eyeD3 trace> FrameHeader [id]: TDEN (0x5444454e)
    eyeD3 trace> FrameHeader [data size]: 21 (0x15)
    eyeD3 trace> FrameHeader [flags]: ta(0) fa(0) ro(0) co(0) en(0) gr(0) un(0) dl(0)
    eyeD3 trace> FrameSet: Reading 21 (0x15) bytes of data from byte pos 119 (0x77)
    eyeD3 trace> FrameSet: 21 bytes of data read
    eyeD3 trace> TextFrame encoding: utf_8
    eyeD3 trace> TextFrame text: 2018-03-13 06:42:01
    eyeD3 trace> TextFrame encoding: utf_8
    eyeD3 trace> TextFrame text: 2018-03-13 06:42:01
    eyeD3 trace> sizeLeft: 22
    eyeD3 trace> +++++++++++++++++++++++++++++++++++++++++++++++++
    eyeD3 trace> FrameSet: Reading Frame #5
    eyeD3 trace> FrameHeader [start byte]: 140 (0x8C)
    eyeD3 trace> FrameHeader [id]: TSSE (0x54535345)
    eyeD3 trace> FrameHeader [data size]: 12 (0xC)
    eyeD3 trace> FrameHeader [flags]: ta(0) fa(0) ro(0) co(0) en(0) gr(0) un(0) dl(0)
    eyeD3 trace> FrameSet: Reading 12 (0xC) bytes of data from byte pos 150 (0x96)
    eyeD3 trace> FrameSet: 12 bytes of data read
    eyeD3 trace> TextFrame encoding: utf_8
    eyeD3 trace> TextFrame text: Lavf56.1.0
    eyeD3 trace> Tag contains 0 bytes of padding.
    eyeD3 trace> mp3 header search starting @ a2
    eyeD3 trace> MPEG audio version: 1.0
    eyeD3 trace> MPEG audio layer: III
    eyeD3 trace> MPEG sampling frequency: 44100
    eyeD3 trace> MPEG bit rate: 48
    eyeD3 trace> MPEG channel mode: Stereo
    eyeD3 trace> MPEG channel mode extension: 0
    eyeD3 trace> MPEG CRC error protection: False
    eyeD3 trace> MPEG original: 0
    eyeD3 trace> MPEG copyright: 0
    eyeD3 trace> MPEG private bit: 0
    eyeD3 trace> MPEG padding: 0
    eyeD3 trace> MPEG emphasis: None
    eyeD3 trace> MPEG frame length: 156
    eyeD3 trace> mp3 header fffb3000 found at position: 0xa2
    eyeD3 trace> Info header detected @ 24
    eyeD3 trace> Info header flags: 0x7
    eyeD3 trace> Info numFrames: 5580
    eyeD3 trace> Info numBytes: 2332368
    eyeD3 trace> Info TOC (100 bytes): PRESENT
    Time: 06:30	MPEG1, Layer III	[ 48 kb/s @ 44100 Hz - Stereo ]
    -------------------------------------------------------------------------------
    Setting artist: 友 & 愛
    Setting title: title
    Writing tag...
    eyeD3 trace> Rendering tag version: v2.4
    eyeD3 trace> Linking File: /home/reprise/Desktop/testfile.mp3
    eyeD3 trace> Located ID3 v2 tag
    eyeD3 trace> TagHeader [major]: 2
    eyeD3 trace> TagHeader [minor]: 4
    eyeD3 trace> TagHeader [revis]: 0
    eyeD3 trace> TagHeader [flags]: unsync(0) extended(0) experimental(0) footer(0)
    eyeD3 trace> TagHeader [size string]: 0x00000118
    eyeD3 trace> TagHeader [size]: 152 (0x98)
    eyeD3 trace> sizeLeft: 152
    eyeD3 trace> +++++++++++++++++++++++++++++++++++++++++++++++++
    eyeD3 trace> FrameSet: Reading Frame #1
    eyeD3 trace> FrameHeader [start byte]: 10 (0xA)
    eyeD3 trace> FrameHeader [id]: TXXX (0x54585858)
    eyeD3 trace> FrameHeader [data size]: 18 (0x12)
    eyeD3 trace> FrameHeader [flags]: ta(0) fa(0) ro(0) co(0) en(0) gr(0) un(0) dl(0)
    eyeD3 trace> FrameSet: Reading 18 (0x12) bytes of data from byte pos 20 (0x14)
    eyeD3 trace> FrameSet: 18 bytes of data read
    eyeD3 trace> UserTextFrame encoding: utf_8
    eyeD3 trace> UserTextFrame description: major_brand
    eyeD3 trace> UserTextFrame text: isom
    eyeD3 trace> UserTextFrame encoding: utf_8
    eyeD3 trace> UserTextFrame description: major_brand
    eyeD3 trace> UserTextFrame text: isom
    eyeD3 trace> sizeLeft: 124
    eyeD3 trace> +++++++++++++++++++++++++++++++++++++++++++++++++
    eyeD3 trace> FrameSet: Reading Frame #2
    eyeD3 trace> FrameHeader [start byte]: 38 (0x26)
    eyeD3 trace> FrameHeader [id]: TXXX (0x54585858)
    eyeD3 trace> FrameHeader [data size]: 19 (0x13)
    eyeD3 trace> FrameHeader [flags]: ta(0) fa(0) ro(0) co(0) en(0) gr(0) un(0) dl(0)
    eyeD3 trace> FrameSet: Reading 19 (0x13) bytes of data from byte pos 48 (0x30)
    eyeD3 trace> FrameSet: 19 bytes of data read
    eyeD3 trace> UserTextFrame encoding: utf_8
    eyeD3 trace> UserTextFrame description: minor_version
    eyeD3 trace> UserTextFrame text: 512
    eyeD3 trace> UserTextFrame encoding: utf_8
    eyeD3 trace> UserTextFrame description: minor_version
    eyeD3 trace> UserTextFrame text: 512
    eyeD3 trace> sizeLeft: 95
    eyeD3 trace> +++++++++++++++++++++++++++++++++++++++++++++++++
    eyeD3 trace> FrameSet: Reading Frame #3
    eyeD3 trace> FrameHeader [start byte]: 67 (0x43)
    eyeD3 trace> FrameHeader [id]: TXXX (0x54585858)
    eyeD3 trace> FrameHeader [data size]: 32 (0x20)
    eyeD3 trace> FrameHeader [flags]: ta(0) fa(0) ro(0) co(0) en(0) gr(0) un(0) dl(0)
    eyeD3 trace> FrameSet: Reading 32 (0x20) bytes of data from byte pos 77 (0x4D)
    eyeD3 trace> FrameSet: 32 bytes of data read
    eyeD3 trace> UserTextFrame encoding: utf_8
    eyeD3 trace> UserTextFrame description: compatible_brands
    eyeD3 trace> UserTextFrame text: isomiso2mp41
    eyeD3 trace> UserTextFrame encoding: utf_8
    eyeD3 trace> UserTextFrame description: compatible_brands
    eyeD3 trace> UserTextFrame text: isomiso2mp41
    eyeD3 trace> sizeLeft: 53
    eyeD3 trace> +++++++++++++++++++++++++++++++++++++++++++++++++
    eyeD3 trace> FrameSet: Reading Frame #4
    eyeD3 trace> FrameHeader [start byte]: 109 (0x6D)
    eyeD3 trace> FrameHeader [id]: TDEN (0x5444454e)
    eyeD3 trace> FrameHeader [data size]: 21 (0x15)
    eyeD3 trace> FrameHeader [flags]: ta(0) fa(0) ro(0) co(0) en(0) gr(0) un(0) dl(0)
    eyeD3 trace> FrameSet: Reading 21 (0x15) bytes of data from byte pos 119 (0x77)
    eyeD3 trace> FrameSet: 21 bytes of data read
    eyeD3 trace> TextFrame encoding: utf_8
    eyeD3 trace> TextFrame text: 2018-03-13 06:42:01
    eyeD3 trace> TextFrame encoding: utf_8
    eyeD3 trace> TextFrame text: 2018-03-13 06:42:01
    eyeD3 trace> sizeLeft: 22
    eyeD3 trace> +++++++++++++++++++++++++++++++++++++++++++++++++
    eyeD3 trace> FrameSet: Reading Frame #5
    eyeD3 trace> FrameHeader [start byte]: 140 (0x8C)
    eyeD3 trace> FrameHeader [id]: TSSE (0x54535345)
    eyeD3 trace> FrameHeader [data size]: 12 (0xC)
    eyeD3 trace> FrameHeader [flags]: ta(0) fa(0) ro(0) co(0) en(0) gr(0) un(0) dl(0)
    eyeD3 trace> FrameSet: Reading 12 (0xC) bytes of data from byte pos 150 (0x96)
    eyeD3 trace> FrameSet: 12 bytes of data read
    eyeD3 trace> TextFrame encoding: utf_8
    eyeD3 trace> TextFrame text: Lavf56.1.0
    eyeD3 trace> Tag contains 0 bytes of padding.
    eyeD3 trace> Found current v2.x tag:
    eyeD3 trace> Current tag size: 152
    eyeD3 trace> Current tag padding: 0
    eyeD3 trace> Rendering frame: TXXX
    eyeD3 trace> Rendered 27 bytes
    eyeD3 trace> Rendering frame: TXXX
    eyeD3 trace> Rendered 28 bytes
    eyeD3 trace> Rendering frame: TXXX
    eyeD3 trace> Rendered 41 bytes
    eyeD3 trace> Rendering frame: TDEN
    eyeD3 trace> Rendered 11 bytes
    eyeD3 trace> Rendering frame: TSSE
    eyeD3 trace> Rendered 21 bytes
    eyeD3 trace> Rendering frame: TPE1
    Uncaught exception: 'latin-1' codec can't encode character u'\u53cb' in position 0: ordinal not in range(256)
    Traceback (most recent call last):
      File "/usr/bin/eyeD3", line 1265, in <module>
        retval = main();
      File "/usr/bin/eyeD3", line 1242, in main
        retval = app.handleFile(f);
      File "/usr/bin/eyeD3", line 559, in handleFile
        if not self.tag.update():
      File "/usr/lib/python2.7/dist-packages/eyeD3/tag.py", line 526, in update
        self.__saveV2Tag(version);
      File "/usr/lib/python2.7/dist-packages/eyeD3/tag.py", line 1251, in __saveV2Tag
        raw_frame = f.render();
      File "/usr/lib/python2.7/dist-packages/eyeD3/frames.py", line 756, in render
        self.text.encode(id3EncodingToString(self.encoding));
    UnicodeEncodeError: 'latin-1' codec can't encode character u'\u53cb' in position 0: ordinal not in range(256)
    

    Other notes

    This could be an umbrella issue for other open issues about Characters like #195 with accented e's. I believe the offending characters in My particular issue here are the characters 友 and/or 愛.

    opened by reprise5 6
  • build(deps): bump certifi from 2022.9.24 to 2022.12.7

    build(deps): bump certifi from 2022.9.24 to 2022.12.7

    Bumps certifi from 2022.9.24 to 2022.12.7.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Unable to set image via URL when using tag.

    Unable to set image via URL when using tag.

    When editing files with EYED3 tag and attempting to set a image for the MP3 file it doesn't do anything, no errors and no result. audiofile.tag.images.set(type_ = 3, img_data = None, mime_type = None, description = "Album Artwork", img_url = searchResult['art']) (Where audiofile = an eyed3 loaded audio file)

    Here is the line of code I'm using, URL is a valid image.

    Thanks

    opened by sirnoob-1 0
  • build(deps): bump pillow from 9.2.0 to 9.3.0

    build(deps): bump pillow from 9.2.0 to 9.3.0

    Bumps pillow from 9.2.0 to 9.3.0.

    Release notes

    Sourced from pillow's releases.

    9.3.0

    https://pillow.readthedocs.io/en/stable/releasenotes/9.3.0.html

    Changes

    ... (truncated)

    Changelog

    Sourced from pillow's changelog.

    9.3.0 (2022-10-29)

    • Limit SAMPLESPERPIXEL to avoid runtime DOS #6700 [wiredfool]

    • Initialize libtiff buffer when saving #6699 [radarhere]

    • Inline fname2char to fix memory leak #6329 [nulano]

    • Fix memory leaks related to text features #6330 [nulano]

    • Use double quotes for version check on old CPython on Windows #6695 [hugovk]

    • Remove backup implementation of Round for Windows platforms #6693 [cgohlke]

    • Fixed set_variation_by_name offset #6445 [radarhere]

    • Fix malloc in _imagingft.c:font_setvaraxes #6690 [cgohlke]

    • Release Python GIL when converting images using matrix operations #6418 [hmaarrfk]

    • Added ExifTags enums #6630 [radarhere]

    • Do not modify previous frame when calculating delta in PNG #6683 [radarhere]

    • Added support for reading BMP images with RLE4 compression #6674 [npjg, radarhere]

    • Decode JPEG compressed BLP1 data in original mode #6678 [radarhere]

    • Added GPS TIFF tag info #6661 [radarhere]

    • Added conversion between RGB/RGBA/RGBX and LAB #6647 [radarhere]

    • Do not attempt normalization if mode is already normal #6644 [radarhere]

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Documentation not updated since 0.9.4

    Documentation not updated since 0.9.4

    Guessing this is a known thing, but when I look at the docs here:

    https://eyed3.readthedocs.io/en/latest/history.html

    The latest info is posted for version 0.9.4, while the latest info in the HISTORY.rst file is 0.9.7 (which matches with pypi).

    I don't publish to RTD, but does somebody need to just push the latest info, maybe?

    opened by mlissner 0
  • Use poetry-core build backend

    Use poetry-core build backend

    Replace the deprecated poetry.masonry.api build backend with the more modern poetry.core.masonry.api that avoids unnecessarily installing whole poetry when building wheels. The rationale is provided on the project page: https://pypi.org/project/poetry-core/

    opened by mgorny 0
Releases(v0.9.6)
Gradient - A Python program designed to create a reactive and ambient music listening experience

Gradient is a Python program designed to create a reactive and ambient music listening experience.

Alexander Vega 2 Jan 24, 2022
Vixtify - Python Controlled Music Player

Strumm Sound Playlist : Click me to listen Welcome to GitHub Pages You can use the editor on GitHub to maintain and preview the content for your websi

Vicky Kumar 2 Feb 03, 2022
Library for Python 3 to communicate with the Google Chromecast.

pychromecast Library for Python 3.6+ to communicate with the Google Chromecast. It currently supports: Auto discovering connected Chromecasts on the n

Home Assistant Libraries 2.4k Jan 02, 2023
DeepSpeech is an open source embedded (offline, on-device) speech-to-text engine which can run in real time on devices ranging from a Raspberry Pi 4 to high power GPU servers.

Project DeepSpeech DeepSpeech is an open-source Speech-To-Text engine, using a model trained by machine learning techniques based on Baidu's Deep Spee

Mozilla 20.8k Jan 03, 2023
Code for csig audio deepfake detection

FMFCC Audio Deepfake Detection Solution This repo provides an solution for the 多媒体伪造取证大赛. Our solution achieve the 1st in the Audio Deepfake Detection

BokingChen 9 Jun 04, 2022
Generating a structured library of .wav samples with Python.

sample-library Scripts for generating a structured sample library with Python Requires Docker about Samples are written to wave files in lib/. Differe

Ben Mangold 1 Nov 11, 2021
Automatically move or copy files based on metadata associated with the files. For example, file your photos based on EXIF metadata or use MP3 tags to file your music files.

Automatically move or copy files based on metadata associated with the files. For example, file your photos based on EXIF metadata or use MP3 tags to file your music files.

Rhet Turnbull 14 Nov 02, 2022
Anki vector Music ❤ is the best and only Telegram VC player with playlists, Multi Playback, Channel play and more

Anki Vector Music 🎵 A bot that can play music on Telegram Group and Channel Voice Chats Available on telegram as @Anki Vector Music Features 🔥 Thumb

Damantha Jasinghe 12 Nov 12, 2022
commonfate 📦commonfate 📦 - Common Fate Model and Transform.

Common Fate Transform and Model for Python This package is a python implementation of the Common Fate Transform and Model to be used for audio source

Fabian-Robert Stöter 18 Jan 08, 2022
Voice helper on russian

Voice helper on russian

KreO 1 Jun 30, 2022
Convert complex chord names to midi notes

ezchord Simple python script that can convert complex chord names to midi notes Prerequisites pip install midiutil Usage ./ezchord.py Dmin7 G7 C timi

Alex Zhang 2 Dec 20, 2022
Implicit neural differentiable FM synthesizer

Implicit neural differentiable FM synthesizer The purpose of this project is to emulate arbitrary sounds with FM synthesis, where the parameters of th

Andreas Jansson 34 Nov 06, 2022
An audio digital processing toolbox based on a workflow/pipeline principle

AudioTK Audio ToolKit is a set of audio filters. It helps assembling workflows for specific audio processing workloads. The audio workflow is split in

Matthieu Brucher 238 Oct 18, 2022
Use android as mic/speaker for ubuntu

Pulse Audio Control Panel Platforms Requirements sudo apt install ffmpeg pactl (already installed) Download Download the AppImage from release page ch

19 Dec 01, 2022
Speech Algorithms Collections

Speech Algorithms Collections

Ryuk 498 Jan 06, 2023
A useful tool to generate chord progressions according to melody MIDIs

Auto chord generator, pure python package that generate chord progressions according to given melodies

Billy Yi 53 Dec 30, 2022
Analysis of voices based on the Mel-frequency band

Speaker_partition_module Analysis of voices based on the Mel-frequency band. Goal: Identification of voices speaking (diarization) and calculation of

1 Feb 06, 2022
Python CD-DA ripper preferring accuracy over speed

Whipper Whipper is a Python 3 (3.6+) CD-DA ripper based on the morituri project (CDDA ripper for *nix systems aiming for accuracy over speed). It star

671 Jan 04, 2023
gentle forced aligner

Gentle Robust yet lenient forced-aligner built on Kaldi. A tool for aligning speech with text. Getting Started There are three ways to install Gentle.

1.2k Dec 30, 2022
python wrapper for rubberband

pyrubberband A python wrapper for rubberband. For now, this just provides lightweight wrappers for pitch-shifting and time-stretching. All processing

Brian McFee 106 Nov 28, 2022