Есть список композиций. Заранее неизвестно будут ли найдены файлы для них или нет. Запросы в сервисы отправляются параллельно.




Воспроизведение начнётся сразу если найден лучший вариант из возможных, либо когда все запросы выполнятся

Пользователь может поменять предпочнения относительно источника файлов, изменения применятся мгновенно в том числе для текущего процесса поиска




После завершения поиска в одном из сервисов для текущей композиции будет запущен поиск для следующей

Если файлов нет, то поиск пойдёт до следующей и так далее пока не кончится список или не будет найдена композиция с файлами

Это будет происходить во время воспроизведения текущей композиции, чтобы воспроизведение списка было непрерывным




Вконтакте сразу не доступно, но если пользователь залогинется, то будет сразу добавлен новый источник поиска и туда будет отправлен запрос

Этот запрос тоже будет учтён при принятии решения о том когда воспроизводить.




Файлы могут быть недоспутны по ссылкам что дали сервисы. Если все файлы оказались недоступны, то и композиция помечается соответствующим образом

При всём перечисленном вы можете пользоваться навигацией в приложении.



Одно дело собрать все эти данные и выплюнуть пользователю или конечному разработчику, после чего забыть про этот ответ. Другое дело собирать по кусочками, давать взаимодействовать, влиять на конечный результат, и следить чтобы «счётчик сообщений™» показывал правильное число.

Как я это всё разруливаю? Никак. Я указываю зависимости между состояниями, между моделями, а феймворк разруливает это за меня

Указываю зависимости, а фреймворк следит за изменениями, актуализирует, точечно обновляет




Про торренты.

Допустем у нас есть поисковик торрентов или база рутрекера.

Мы отправляем запрос, получаем infoHash торрента. По сути id.

Отправляем запрос в dht и по кусочкам получаем список файлов и информацию как их получать.

Из файлов выбираем то что мы хотим получить и скачиванием, воспроизводя.