Мне нужно поддерживать базу данных в актуальном состоянии с содержанием списка воспроизведения.
Я использую C # Wrapper для API libspotify - http://libspotify -sharp.hallerud.se /
В настоящее время мой рабочий процесс выглядит следующим образом
Войдите в систему, дождитесь загрузки контейнера списка воспроизведения, когда загрузите прослушивание событий загрузки списка воспроизведения, когда интересующий меня список воспроизведения будет загружен, дождитесь загрузки всех дорожек в списке воспроизведения, затем запишите содержимое в базу данных.
Я полностью очищаю каталог кеша при каждом запуске программы.
Я считаю, что это работает нормально и, как и ожидалось, большую часть времени, а затем при удалении некоторых дорожек в обычном клиенте spotify, кажется, что дорожки по-прежнему возвращаются через API, даже если их больше нет ( очищаю директорию кеша, чтобы они были?).
Кто-нибудь знает, что может вызвать это?
ОБНОВЛЕНИЕ
Что я обнаружил, так это то, что API, кажется, возвращает различную информацию к тому, что доступно для просмотра на клиенте. Я запустил консольное приложение с разных компьютеров, и удаленные треки все еще возвращаются. Обычный клиент spotify не показывает их, также протестирован на нескольких компьютерах. В моем приложении я вхожу в систему, ожидаю полной загрузки плейлистов и затем завершаю работу, это приложение выполняет запланированное задание.
ОБНОВЛЕНИЕ 2
Я сейчас жду до
(playlist.IsLoaded == true &&
playlist.CurrentTracks.All(x => x.IsLoaded && x.Artists.Count() > 0))
с использованием
session.OnMetaDataUpdated += HandleOnMetaUpdated;
и
playlist.OnMetadataUpdated += PlaylistMetaUpdated;