devolving the removal of various crud to `HtmlLyricsProvider`;
log initial query and use new `StartsOrEndsMatch()` static to
match JSON replies, log each request, and break if full match;
`StartsOrEndsMatch()` ignores some common punctuation variations
& normalizes single quotes and allows match at beginning or end
HtmlLyricsProvider: fix `multiple` mode not to terminate on first
batch, and defer processing till have whole HTML (avoids issues
with tags spanning batches);
add param to take list of regular expressions to remove from HTML
prior to general processing (used only by `GeniusLyrics` for now)
README.md etc: update list of lyrics providers supported
Report music service, URL, and Spotify ID to ListenBrainz.
ListenBrainz accepts the music service in listen reports, in both a canonical domain format and a human-readable display name format. This commit makes Strawberry report both, for maximum flexibility. I've also set it up to report a shareable track URL for supported streaming services. I am already using this data in my homepage's "Now Playing" widget.
Fixes#1768
`UpdateButtonGeometry()`: specify "QPlainTextEdit" for `TextEdit`
padding (Comment and Lyrics) and invert left/right padding for
`LineEdit` if layout direction RTL
`set_reset_button()` in `UpdateModifiedField()` and catering for
non-text in `IsValueModified()` (-1 original being same as 0);
use new `ExtendedEditor::set_font()`;
connect reset for "rating".
Make "comment" `tabChangesFocus` to keep tab chain.
ExtendedEditor: New `set_font()` to get emboldened font to work and
make reset feedback work for `CheckBox` and `RatingBox` by
overriding `Resize()`.
RatingWidget: Allow tabbed focus and implement keyboard input.