* sb/album-multiple-discs: library: don't list albums with multiple discs multiple times
If a user has a music directory where an album has multiple directories for each disc, we would wrongly list that album multiple times in the album view. This is because when we remove duplicate album listings, the differing paths lead us to believe the albums are not the same. Fix this by ignoring the path of the music files so when we remove the duplicates we are left with just one album instead of multiple ones. Fixes: #16368 Tested-by: Reuben Thomas <firstname.lastname@example.org>
Previously, we wouldn't catch IOError's and OSError's when a file couldn't be opened for reading or writing. Fix this by surrounding those locations in try-except clauses and use the 'with' syntax to properly close files when errors occur. This resolves issues for users with a read-only home or otherwise read-only directories. Sadly, the artwork code downloads images directly to disk, and if the file cannot be opened there is no artwork shown. Fixing this is a larger issue we can resolve later. Fixes: #16355
* maint-1.6.2: translations: add Korean translation POTFILES: only include files with actual translatable strings translations: update TRANSLATORS file and remove messages.po setup: generate mo files better translations: update Slovak translations main: make ctrl-w withdraw app when withdraw app config set Fix bad calculation of played song time for audioscrobbling.
* sb/translation-cleanup: POTFILES: only include files with actual translatable strings translations: update TRANSLATORS file and remove messages.po setup: generate mo files better
We shouldn't include files in POTFILES.in that don't actually have translatable strings because they just waste time generating templates and updating po files.
Now that we use git be a little more specific about how to add new translations. In particular, we don't want to maintain a messages.po file, as it should be generated by translators for any release they want to target. Also add a section on updating po files.
* sb/withdraw-on-ctrl-w: main: make ctrl-w withdraw app when withdraw app config set
If the config option to withdraw the app on close is set, ctrl-w would close the entire program when it should really just withdraw the app. Fix by not forcing the application to close on ctrl-w. Fixes: #16354
Sonata calls iterate() at 0.5s intervals when playing a song, in which it calls handle_change_status() if the status has changed, which calls scrobbler's handle_change_status(), which updates the played time using its scrob_time_now attribute. iterate() then calls scrobbler's iterate(), which updates that attribute to the current time. As a result, it can only increment 0.5s per status update. The status usually doesn't update that often, and thus the counted play time lags significantly behind the actual play time. In particular, if the update interval exceeds 1s, scrobbler will never post the song after a normal play. This fixes this by counting play time entirely in scrobbler's handle_change_status().
* sb/big-artwork-first: rhapsody: download big artwork when requesting single image
* wb/lyricwiki-redirect: Improve lyricwiki REDIRECT handling
This patch improves lyricwiki "#REDIRECT" handling: - detect redirect field independent of case and whitespace - after redirection, ensure that variable "content" is in same semantic state after redirection as without redirection [sb: backported to maint-1.6.2]
Previously, the first artwork image listed by rhapsody would be downloaded usually resulting in a small 70x70 image. Download the larger 170x170 image (usually the last image) instead because the most frequent user of the artwork is the currently playing icon. Reported-by: Joschka Thurner <email@example.com>
Previously, the current song would be centered in the current playlist if the file is different than the previous song's file. It's possible for duplicate songs to be present in the current playlist, and thus this test would fail. Instead of using the file, use the song's id which should be unique within the playlist.