declension
Repos
47
Followers
20
Following
19

Squeezebox integration for Amazon Alexa

58
18

Music player and music library manager for Linux, Windows, and macOS

1133
190

Ansible playbook for (Ubuntu) Python & Java & JS & Haskell & Rust dev & DevOps environment setup

Moved 👉 https://gitlab.com/declension/gitlab-pipeline-monitor

0
0

Events

Poetry: add a script to run QL easily

Lazy but useful...

Created at 4 hours ago
issue comment
Clarify how tag splitting is setup

Thanks, this bar some comments above this is helpful. I guess the bigger question is - how can we stop this being so annoying / unintuitive for users. Ideas back in #1029 I think

Created at 4 hours ago
pull request opened
Playlist browser: throw if no PL library
  • Throw a (new) exception if PL library isn't available (somehow) for playlist browser
  • Then, remove all the checks for this
  • Update the test
  • Hopefully this will stop #3988 (but still unclear how this state came about, maybe some class-instance stuff)
  • Either way it's simpler now, and the non-Optional typing is correct now

Fixes #3988

Created at 4 hours ago
create branch
declension create branch assume-pl-library-exists
Created at 4 hours ago
opened issue
Adding tags to Soundcloud files raises TypeError

https://sentry.io/organizations/quodlibet/issues/3496751361/?referrer=github_plugin

TypeError: Expected string but got 0.4980392156862745<class 'float'>
(3 additional frame(s) were not displayed)
...
  File "gi/overrides/Gtk.py", line 1007, in _do_insert
    row, columns = self._convert_row(row)
  File "gi/overrides/Gtk.py", line 907, in _convert_row
    result.append(self._convert_value(cur_col, value))
  File "gi/overrides/Gtk.py", line 921, in _convert_value
    return GObject.Value(self.get_column_type(column), value)
  File "gi/overrides/GObject.py", line 208, in __init__
    self.set_value(py_value)
  File "gi/overrides/GObject.py", line 240, in set_value
    raise TypeError("Expected string but got %s%s" %

TypeError: Expected string but got 0.4980392156862745<class 'float'>
Created at 15 hours ago
opened issue
Creating playlist without selection can raise TypeError

https://sentry.io/organizations/quodlibet/issues/3334578372/?referrer=github_plugin

TypeError: Argument 1 does not allow None as a value
  File "quodlibet/browsers/playlists/main.py", line 577, in __new_playlist
    path = model.get_path(iter)

TypeError: Argument 1 does not allow None as a value
Created at 15 hours ago
issue comment
AttributeError: 'ValueError' object has no attribute 'replace'

Sentry issue: QUODLIBET-VW

Created at 15 hours ago
issue comment
AttributeError: 'PlaylistsBrowser' object has no attribute 'pl_lib'

Sentry issue: QUODLIBET-W1

Created at 15 hours ago
issue comment
Error when a playlist file is added via DnD to playlist browser

Sentry issue: QUODLIBET-W6

Created at 16 hours ago

Modernise match tests

Created at 16 hours ago
delete branch
declension delete branch fix-aggregate-numexpr-units
Created at 16 hours ago

Fix aggregate units on numeric comparisons

  • Units should be compatible with any aggregation of their tag
  • Also store this base tag at constructor for efficiency / de-dupe

Fixes #3995

Merge pull request #4089 from quodlibet/fix-aggregate-numexpr-units

Fix aggregate units on numeric comparisons

Created at 16 hours ago
closed issue
Units no longer work in numeric aggregation expressions

In versions previous to 4.5.0 I was able to use a search such as

#(laststarted:min > 3 days )

This no longer works. Now I'm only able to do a search without the 'numeri_func':

#(laststarted > 3 days )

This happens for laststarted, lastplayed, lastadded in combination with avg, min, max, bav. Using either year, day, month doesn't work.

What works as a workaround is

#(laststarted:min > 3 * 86400)

(86400 = seconds on a day). It can be seconds of the month, week, etc. But, it doesn't work if I do (second of a day)*(days)

#(laststarted:min > 86400 * 3)

It works up to 4 digits the first multiplier times anything, it can be an arbitrary number of multiplications too.

I'm running QuodLobet on Debian testing.

Created at 16 hours ago
pull request closed
Fix aggregate units on numeric comparisons
  • Units should be compatible with any aggregation of their tag
  • Also store this base tag at constructor for efficiency / de-dupe

Fixes #3995

Created at 16 hours ago
started
Created at 16 hours ago
pull request opened
Fix aggregate units on numeric comparisons
  • Units should be compatible with any aggregation of their tag
  • Also store this base tag at constructor for efficiency / de-dupe

Fixes #3995

Created at 17 hours ago
create branch
declension create branch fix-aggregate-numexpr-units
Created at 17 hours ago

Allow markup in cover downloader error dialog

Fixes #4088

Created at 19 hours ago
closed issue
Cover Art downloader displays raw markup when no covers found

Steps to reproduce

  • Find an album that can't produce a cover using the Cover Downloader plugin
  • Watch the informational dialog produced

Expected Output

Dialogs using markup display markup

Actual Output

Raw markup displayed in dialog: image

Test System

Which version of Quod Libet?

git 3ae8704b375b47289b7181cbb104f709f5bcbf7d

Created at 19 hours ago
opened issue
Cover Art downloader displays raw markup when no covers found

Steps to reproduce

  • Find an album that can't produce a cover using the Cover Downloader plugin
  • Watch the informational dialog produced

Expected Output

Dialogs using markup display markup

Actual Output

Raw markup displayed in dialog: image

Test System

Which version of Quod Libet?

git 3ae8704b375b47289b7181cbb104f709f5bcbf7d

Created at 19 hours ago
issue comment
Help debugging missing libdee

I'm not sure but it does sound like some kind of broken upgrade (slightly related forum post perhaps).

I read this as dee needing a version of libicu you no longer have, so fixing / reinstalling that might be your best bet, but that's a Garuda question I guess (or maybe AUR)

Worth looking at https://aur.archlinux.org/packages/dee perhaps too, lots of build failures reported there

Created at 21 hours ago
issue comment
Help debugging missing libdee

Never seen this and looks quite system-related. Have you tried reinstalling / upgrading libicui18n?

Created at 23 hours ago

Translated using Weblate (Japanese)

Currently translated at 64.3% (1068 of 1659 strings)

Translated using Weblate (Japanese)

Currently translated at 63.5% (1052 of 1656 strings)

Translated using Weblate (Japanese)

Currently translated at 62.6% (1037 of 1656 strings)

Translated using Weblate (Japanese)

Currently translated at 61.4% (1017 of 1656 strings)

Translated using Weblate (Japanese)

Currently translated at 60.2% (997 of 1656 strings)

Co-authored-by: Takashi Ueda samus39@gmail.com Translate-URL: https://hosted.weblate.org/projects/quodlibet/quodlibet/ja/ Translation: quodlibet/quodlibet

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Hosted Weblate hosted@weblate.org Translate-URL: https://hosted.weblate.org/projects/quodlibet/quodlibet/ Translation: quodlibet/quodlibet

Translated using Weblate (Slovak)

Currently translated at 100.0% (1659 of 1659 strings)

Co-authored-by: menom menom1@protonmail.com Translate-URL: https://hosted.weblate.org/projects/quodlibet/quodlibet/sk/ Translation: quodlibet/quodlibet

Translated using Weblate (Chinese (Simplified))

Currently translated at 71.1% (1180 of 1659 strings)

Co-authored-by: Eric alchemillatruth@purelymail.com Translate-URL: https://hosted.weblate.org/projects/quodlibet/quodlibet/zh_Hans/ Translation: quodlibet/quodlibet

Translated using Weblate (Japanese)

Currently translated at 64.7% (1075 of 1660 strings)

Translation: quodlibet/quodlibet Translate-URL: https://hosted.weblate.org/projects/quodlibet/quodlibet/ja/

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: quodlibet/quodlibet Translate-URL: https://hosted.weblate.org/projects/quodlibet/quodlibet/

Translated using Weblate (Japanese)

Currently translated at 68.8% (1143 of 1660 strings)

Translation: quodlibet/quodlibet Translate-URL: https://hosted.weblate.org/projects/quodlibet/quodlibet/ja/

Translated using Weblate (Chinese (Simplified))

Currently translated at 71.1% (1181 of 1660 strings)

Translation: quodlibet/quodlibet Translate-URL: https://hosted.weblate.org/projects/quodlibet/quodlibet/zh_Hans/

Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: quodlibet/quodlibet Translate-URL: https://hosted.weblate.org/projects/quodlibet/quodlibet/

Translated using Weblate (German)

Currently translated at 100.0% (1664 of 1664 strings)

Translation: quodlibet/quodlibet Translate-URL: https://hosted.weblate.org/projects/quodlibet/quodlibet/de/

Translated using Weblate (Spanish)

Currently translated at 90.6% (1509 of 1664 strings)

Translation: quodlibet/quodlibet Translate-URL: https://hosted.weblate.org/projects/quodlibet/quodlibet/es/

Translated using Weblate (French)

Currently translated at 100.0% (1664 of 1664 strings)

Translation: quodlibet/quodlibet Translate-URL: https://hosted.weblate.org/projects/quodlibet/quodlibet/fr/

Translated using Weblate (Japanese)

Currently translated at 77.2% (1285 of 1664 strings)

Translation: quodlibet/quodlibet Translate-URL: https://hosted.weblate.org/projects/quodlibet/quodlibet/ja/

Translated using Weblate (Turkish)

Currently translated at 83.5% (1390 of 1664 strings)

Translation: quodlibet/quodlibet Translate-URL: https://hosted.weblate.org/projects/quodlibet/quodlibet/tr/

Translated using Weblate (Chinese (Simplified))

Currently translated at 71.1% (1184 of 1664 strings)

Translation: quodlibet/quodlibet Translate-URL: https://hosted.weblate.org/projects/quodlibet/quodlibet/zh_Hans/

Translated using Weblate (Japanese)

Currently translated at 88.3% (1470 of 1664 strings)

Translation: quodlibet/quodlibet Translate-URL: https://hosted.weblate.org/projects/quodlibet/quodlibet/ja/

Translated using Weblate (Norwegian Bokmål)

Currently translated at 89.1% (1483 of 1664 strings)

Translation: quodlibet/quodlibet Translate-URL: https://hosted.weblate.org/projects/quodlibet/quodlibet/nb_NO/

Merge pull request #4074 from weblate/weblate-quodlibet-quodlibet

Translations update from Hosted Weblate

Created at 23 hours ago
pull request closed
Translations update from Hosted Weblate

Translations update from Hosted Weblate for quodlibet/quodlibet.

Current translation status:

Weblate translation status

Created at 23 hours ago

Fix playlist renaming bug

  • Make the dialog optional but default
  • Add logging
  • Add test around (but not catching exactly) this
  • Fix naming
  • Add some typing all round that might have alerted to the root cause - Exception being passed instead of str (but probably not due to *args, sigh)

Fixes #4022

Merge pull request #4079 from quodlibet/fix-playlist-renaming-error

Fix playlist renaming bug

Created at 23 hours ago
closed issue
AttributeError: 'ValueError' object has no attribute 'replace'

https://sentry.io/organizations/quodlibet/issues/3368456326/?referrer=github_plugin

ValueError: Playlists must have a name
  File "quodlibet/browsers/playlists/main.py", line 589, in _rename
    playlist.rename(newname)
  File "quodlibet/util/collection.py", line 433, in rename
    self.name = self._validated_name(new_name)
  File "quodlibet/util/collection.py", line 643, in _validated_name
    new_name = super()._validated_name(new_name)
  File "quodlibet/util/collection.py", line 443, in _validated_name
    raise ValueError(_("Playlists must have a name"))

AttributeError: 'ValueError' object has no attribute 'replace'
  File "quodlibet/browsers/playlists/main.py", line 584, in __edited
    return self._rename(path, newname)
  File "quodlibet/browsers/playlists/main.py", line 591, in _rename
    qltk.ErrorMessage(
  File "quodlibet/qltk/msg.py", line 73, in __init__
    super().__init__(
  File "quodlibet/qltk/msg.py", line 29, in __init__
    % (escape(title), escape(description) if escape_desc else description))
  File "quodlibet/util/__init__.py", line 205, in escape
    return str.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;")

AttributeError: 'ValueError' object has no attribute 'replace'
Created at 23 hours ago