moehmeni / syncedlyrics

Get an LRC format (synchronized) lyrics for your music
MIT License
272 stars 25 forks source link

Deezer API changed probably and doesn't work anymore #50

Open moehmeni opened 5 months ago

moehmeni commented 5 months ago

Scheduled tests of this morning fail due to Deezer failure. I put a log and response of the API for the song request is:

# ...
self._api_call("song.getLyrics", json={"sng_id": track_id})
# ...
{'error': {'DATA_ERROR': 'No lyrics id for 655095912 and country DE'}, 'results': {}, 'payload': None}

I am removing it for now from the library, but PR is much appreciated to make it work again.

Cornelius-Figgle commented 5 months ago

Is this why I am getting the following failed test? If so, do you have a rough idea of how long before a release/tagged source archive will be available for a fixed version?

_________________________________ test_deezer _________________________________

    def test_deezer():
>       _test_provider("Deezer")

tests.py:44:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

provider = 'Deezer', kwargs = {}, lrc = None, @py_assert3 = False
@py_format5 = 'assert False\n{False = isinstance(None, str)\n}'

    def _test_provider(provider: str, **kwargs):
        lrc = syncedlyrics.search(
            search_term=q, allow_plain_format=True, providers=[provider], **kwargs
        )
        logging.debug(lrc)
>       assert isinstance(lrc, str)
E       assert False
E        +  where False = isinstance(None, str)
=========================== short test summary info ============================
FAILED tests.py::test_deezer - assert False
========================= 1 failed, 5 passed in 8.76s ==========================
tests.py:17: AssertionError

I am attempting to compile this package for Void Linux (since it is a dependency for another package) and encountered this just now.

Thanks in advance :)

moehmeni commented 5 months ago

@Cornelius-Figgle Sorry I forgot to answer back then, I just released v1.0.0.

Cornelius-Figgle commented 5 months ago

Thank you, I will update my package :)

Albert-aka-Albot commented 5 months ago

I am getting the same error on Arch Linux :

==> Starting check()...
================================================================ test session starts ================================================================
platform linux -- Python 3.12.3, pytest-8.2.2, pluggy-1.5.0
rootdir: /home/user/.cache/paru/clone/python-syncedlyrics/src/syncedlyrics-0.10.1
configfile: pyproject.toml
plugins: typeguard-4.2.1, asyncio-0.23.7, mock-3.14.0, anyio-4.4.0
asyncio: mode=Mode.STRICT
collected 6 items                                                                                                                                   

tests.py .....F                                                                                                                               [100%]

===================================================================== FAILURES ======================================================================
____________________________________________________________________ test_deezer ____________________________________________________________________

    def test_deezer():
>       _test_provider("Deezer")

tests.py:44: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

provider = 'Deezer', kwargs = {}, lrc = None, @py_assert3 = False, @py_format5 = 'assert False\n{False = isinstance(None, str)\n}'

    def _test_provider(provider: str, **kwargs):
        lrc = syncedlyrics.search(
            search_term=q, allow_plain_format=True, providers=[provider], **kwargs
        )
        logging.debug(lrc)
>       assert isinstance(lrc, str)
E       assert False
E        +  where False = isinstance(None, str)

tests.py:17: AssertionError
============================================================== short test summary info ==============================================================
FAILED tests.py::test_deezer - assert False
============================================================ 1 failed, 5 passed in 9.81s ============================================================
==> ERROR: A failure occurred in check().
    Aborting...
error: failed to build 'python-syncedlyrics-0.10.1-1'
moehmeni commented 5 months ago

@Albert-aka-Albot Upgrade to v1.0.0, but I think spotdl will have compatibility issues since the new version breaks the backwards compatibility.

Cornelius-Figgle commented 5 months ago

I think spotdl will have compatibility issues

I can confirm this when building SpotDl 4.2.5 (under XBPS) with syncedlyrics 1.0.0. I do not experience this error with 0.10.1

Thank you again for the release though, now I have to wait for SpotDL to update their's :)

Successfully built spotdl-4.2.5-py3-none-any.whl
=> spotdl-4.2.5_1: running do_check ...
ImportError while loading conftest '/builddir/spotdl-4.2.5/tests/conftest.py'.
tests/conftest.py:7: in <module>
    from spotdl.download.downloader import Downloader
spotdl/__init__.py:13: in <module>
    from spotdl.console import console_entry_point
spotdl/console/__init__.py:5: in <module>
    from spotdl.console.entry_point import console_entry_point
spotdl/console/entry_point.py:10: in <module>
    from spotdl.console.download import download
spotdl/console/download.py:7: in <module>
    from spotdl.download.downloader import Downloader
spotdl/download/downloader.py:44: in <module>
    from spotdl.utils.lrc import generate_lrc
spotdl/utils/lrc.py:10: in <module>
    from syncedlyrics.utils import is_lrc_valid, save_lrc_file
E   ImportError: cannot import name 'is_lrc_valid' from 'syncedlyrics.utils' (/usr/lib/python3.12/site-packages/syncedlyrics/utils.py)
=> ERROR: spotdl-4.2.5_1: do_check: 'PATH="${testdir}/usr/bin:${PATH}" PYTHONPATH="${testdir}/${py3_sitelib}" PY_IGNORE_IMPORTMISMATCH=1 ${make_check_pre} pytest3 ${testjobs} ${make_check_args} ${make_check_target}' exited with 4
=> ERROR:   in do_check() at common/build-style/python3-pep517.sh:36