Basically I can see two/three improvements with advantages and disadvantages:
- Extract streamdetails and cache artwork during scanning.
- Do it synchronously for every item.This will significantly slow down library scanning, especially for low powered devices.
- Do it asynchronously while continuing to scan for more items.This will also slow down library scanning but the library will be filled faster but details won't be available immediately and the overall time the scanning takes will be similar to when doing it synchronously.
- Asynchronously extract streamdetails and cache artwork after finishing a scan. That way the actual library scanning will stay as fast as it is and the user will be able to start browsing his library but additional details will only be loaded asynchronously. This might also lead to conflicts if we want to keep the background loading when browsing the library in the GUI leading to two background loaders running simultaneously.
So what is the preferred/best way to improve this? Are there any other approaches that we could take? Do we want to limit the user experience on "powerful" hardware because there are lower power devices that will suffer? Or should we let the user choose when to perform the task?