Нет, все это просто делается, если не усложнять. Есть N стримов по M файлов (M для каждого стрима может быть произвольным), всю эту информацию придется получить еще до закачки, общий прогресс отслеживается элементарно. Ответ на второй вопрос: попробовать закачать заново. Сейчас я так вижу эту качалку, входные параметры:
- название канала
- путь к папке, куда все будет сохранятся
- переключатель highlights/brodcasts
- переключатель list (ничего не скачивать, только вывести список водов для всех стримов)
Далее получаем список всех стримов, для каждого стрима - список файлов, каждый файл кладем в указанную пользователем папку (или в текущую), со следующей структурой channel_name/[highlights|brodcasts]/stream_id/file_name.flv
Соответственно, если заданный путь уже существует, то просто скипаем закачку текущего файла (возможно стоит сделать ключ force, который будет закачивать в любом случае).
Как плюшку, можно будет сделать опциональную склейку файлов стрима в один с помощью ffmpeg.
Юз-кейсы такие:
- качнуть полный архив водов своего кумира одной командой
- докачивать воды по мере их появления (например, путем добавления скрипта в шедулер)
Теперь про list: сделать один большой текстовый файл, который можно скормить менеджеру закачек не получится, т.к. структура водов не линейная (точнее получится, но это будет каша из файлов из разных трансляций, хотя на первый взгляд идентификаторы там возрастают линейно, т.е. проигрываться все буде по-порядку).
Так что я пока думаю остановиться на такой таблице:
Скрытый текст
[свернуть]
При копировании из ячейки столбца Downloads как раз получаешь список файлов для стрима, при желании можно выделить целый столбец или диапазон ячеек (через ctrl), и скачать только их.
Ну а так, тут выше уже кидали ссылку на вебсайт, который примерно то, что ты описал и делает.