/
/
# What does this implement/fix? Reading one Plex item could stop the whole library sync for that media type. A track that Plex holds no artist for is rejected while parsing, and because that happens while listing the library there is no way to skip it - the sync stops there and picks up nothing after it, every run. The same track also made the album or playlist it sits in fail to load, so a playlist containing one such track could not be played at all. Separately, when listing the audiobook or podcast library failed, the provider logged the error and returned nothing. An empty listing looks exactly like an emptied library, so the cleanup step that follows removed every audiobook and podcast that is still on the server. **Related issue (if applicable):** - n/a ## Types of changes - [ ] Bugfix (non-breaking change which fixes an issue) — `bugfix` - [ ] New feature (non-breaking change which adds functionality) — `new-feature` - [ ] Enhancement to an existing feature — `enhancement` - [ ] New music/player/metadata/plugin provider — `new-provider` - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) — `breaking-change` - [ ] Refactor (no behaviour change) — `refactor` - [ ] Documentation only — `documentation` - [x] Maintenance / chore — `maintenance` - [ ] CI / workflow change — `ci` - [ ] Dependencies bump — `dependencies` ## Changes - An item we cannot build is skipped and the rest still loads, for artists, albums, tracks, playlists, collections, audiobooks and podcasts, and for the tracks of an album or a playlist. - Only an item we cannot build counts as skippable. Anything else, including an item that disappeared from the server mid-sync, still stops the sync, so the cleanup step is held back rather than removing items that are still there. - A failure to list the audiobook or podcast library now stops the sync instead of silently reporting an empty library. - A release year that cannot be expressed as a date is ignored instead of failing the audiobook or podcast it belongs to. ## Checklist - [x] The code change is tested and works locally. - [x] `pre-commit run --all-files` passes. - [x] `pytest` passes, and tests have been added/updated under `tests/` where applicable. - [ ] For changes to shared models, the companion PR in `music-assistant/models` is linked. - [ ] For changes affecting the UI, the companion PR in `music-assistant/frontend` is linked. - [x] I have read and complied with the project's [AI Policy](https://github.com/music-assistant/.github/blob/main/AI_POLICY.md) for any AI-assisted contributions. - [ ] I have [raised a PR against the documentation repository](https://github.com/music-assistant/music-assistant.io/blob/main/CONTRIBUTING.md) targeting the main or beta branch as appropriate.