sublime-music icon indicating copy to clipboard operation
sublime-music copied to clipboard

KeyError: 'ignored_articles' when ignored_articles is missing

Open sumnerevans opened this issue 5 years ago • 9 comments

In GitLab by @ogarcia on Sep 20, 2020, 09:23

Some server implementations don't return ignored_articles in getArtists.view or in getIndexes.view. The client must expect this and ignore if the key is missing.

sumnerevans avatar Sep 20 '20 15:09 sumnerevans

Which servers does this happen with?

sumnerevans avatar Sep 20 '20 17:09 sumnerevans

In GitLab by @ogarcia on Sep 20, 2020, 13:54

Supysonic. Can use this docker if you want test it.

sumnerevans avatar Sep 20 '20 19:09 sumnerevans

Opened: https://github.com/spl0k/supysonic/issues/194

I'll also plan to fix this on my end.

sumnerevans avatar Sep 20 '20 21:09 sumnerevans

I am getting the following error running the Docker container. I'm assuming that I'm doing something wrong, but I'm not very good at Docker. Any hints?

$ sudo docker run --rm \
  --name=supysonic \
  -v /home/sumner/tmp/supysonic:/var/lib/supysonic \
  -v /home/sumner/tmp/music:/media \
  ogarcia/supysonic
cp: can't create '/var/lib/supysonic/.supysonic': Permission denied
cp: can't create '/var/lib/supysonic/supysonic.db': Permission denied
cannot write in config file.
[Errno 13] Permission denied: '/var/lib/supysonic/.supysonic'
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/pony-0.7.11-py3.8.egg/pony/orm/dbapiprovider.py", line 53, in wrap_dbapi_exceptions
    try: return func(provider, *args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/pony-0.7.11-py3.8.egg/pony/orm/dbapiprovider.py", line 221, in connect
    return provider.pool.connect()
  File "/usr/local/lib/python3.8/site-packages/pony-0.7.11-py3.8.egg/pony/orm/dbapiprovider.py", line 342, in connect
    pool._connect()
  File "/usr/local/lib/python3.8/site-packages/pony-0.7.11-py3.8.egg/pony/orm/dbproviders/sqlite.py", line 629, in _connect
    pool.con = con = sqlite.connect(filename, isolation_level=None, **pool.kwargs)
sqlite3.OperationalError: unable to open database file

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/tmp/supysonic.fcgi", line 3, in <module>
    app = create_application()
  File "/usr/local/lib/python3.8/site-packages/supysonic-0.5.0-py3.8.egg/supysonic/web.py", line 54, in create_application
    init_database(app.config["BASE"]["database_uri"])
  File "/usr/local/lib/python3.8/site-packages/supysonic-0.5.0-py3.8.egg/supysonic/db.py", line 605, in init_database
    metadb.bind(**settings)
  File "/usr/local/lib/python3.8/site-packages/pony-0.7.11-py3.8.egg/pony/orm/core.py", line 765, in bind
    self._bind(*args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/pony-0.7.11-py3.8.egg/pony/orm/core.py", line 787, in _bind
    self.provider = provider_cls(*args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/pony-0.7.11-py3.8.egg/pony/orm/dbproviders/sqlite.py", line 322, in __init__
    DBAPIProvider.__init__(provider, *args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/pony-0.7.11-py3.8.egg/pony/orm/dbapiprovider.py", line 121, in __init__
    connection, is_new_connection = provider.connect()
  File "<string>", line 2, in connect
  File "/usr/local/lib/python3.8/site-packages/pony-0.7.11-py3.8.egg/pony/orm/dbapiprovider.py", line 67, in wrap_dbapi_exceptions
    raise OperationalError(e)
pony.orm.dbapiprovider.OperationalError: unable to open database file

sumnerevans avatar Sep 23 '20 06:09 sumnerevans

In GitLab by @ogarcia on Sep 23, 2020, 04:07

Yes, you don't need mount volumes if you want only to test. Run this command:

sudo docker run -t -i --rm \
  -e SUPYSONIC_RUN_MODE=standalone \
  -p 5000:5000 \ # Listen port 5000 (in host) to 5000 (in container)
  ogarcia/supysonic

Or mounting a music folder:

sudo docker run -t -i --rm \
  -e SUPYSONIC_RUN_MODE=standalone \
  -p 5000:5000 \
  -v /home/sumner/tmp/music:/media \
  ogarcia/supysonic

If you want persistent data folder (-v /home/sumner/tmp/supysonic:/var/lib/supysonic), then the directory /home/sumner/tmp/supysonic must be owned by UID 100:

chown 100:100 /home/sumner/tmp/supysonic

or

chmod 777 /home/sumner/tmp/supysonic

sumnerevans avatar Sep 23 '20 10:09 sumnerevans

In GitLab by @ogarcia on Oct 12, 2020, 04:29

A side note: By default the value of ignoredArticlesString is The El La Los Las Le Les.

There is two options, set a hardcoded default value for APIs lower than 1.10.0, or add a configuration option.

sumnerevans avatar Oct 12 '20 10:10 sumnerevans

mentioned in commit 5f2b884c56002031050d6fa2c859afe9600fb6e8

sumnerevans avatar Oct 14 '20 03:10 sumnerevans

In GitLab by @ogarcia on Oct 25, 2020, 11:49

Hi @sumnerevans

You close the issue but still present in v0.11.10:

2020-10-25 18:47:05,332:ERROR:concurrent.futures:_base:exception calling callback for <Future at 0x7f26e0fa75b0 state=finished raised CacheMissError>
Traceback (most recent call last):
  File "/usr/lib/python3.8/site-packages/sublime_music/adapters/manager.py", line 375, in future_fn
    return fn(*params, **kwargs)
  File "/usr/lib/python3.8/site-packages/sublime_music/adapters/subsonic/adapter.py", line 617, in get_artists
    if artist_index := self._get_json(self._make_url("getArtists")).artists:
  File "/usr/lib/python3.8/site-packages/sublime_music/adapters/subsonic/adapter.py", line 508, in _get_json
    return Response.from_dict(subsonic_response)
  File "/usr/lib/python3.8/site-packages/dataclasses_json/api.py", line 83, in from_dict
    return _decode_dataclass(cls, kvs, infer_missing)
  File "/usr/lib/python3.8/site-packages/dataclasses_json/core.py", line 201, in _decode_dataclass
    init_kwargs[field.name] = _decode_generic(field_type,
  File "/usr/lib/python3.8/site-packages/dataclasses_json/core.py", line 273, in _decode_generic
    res = _decode_dataclass(type_arg, value, infer_missing)
  File "/usr/lib/python3.8/site-packages/dataclasses_json/core.py", line 159, in _decode_dataclass
    field_value = kvs[field.name]
KeyError: 'ignored_articles'

sumnerevans avatar Oct 25 '20 17:10 sumnerevans

Yep, should be actually fixed in 6452cf1 which isn't yet released.

sumnerevans avatar Oct 25 '20 18:10 sumnerevans