Закачка в stdin файла, который в данный момент загружается.

Я загружал zip-файлы с Google Диска. Файлы содержат видео в формате mp4, и мне не хотелось ждать завершения загрузки. VLC может нормально воспроизводить неполные файлы, но тогда загруженные файлы являются zip-файлами, а не файлами mp4. wget , вероятно, самый простой способ направить загрузку напрямую в фильтр, а затем я мог бы использовать funzip и вывести его в файл, а затем воспроизвести его, как при потоковой передаче видео. Однако мне не удалось загрузить wget с Google Диска, он просто продолжал возвращать ERROR 400 неверную ошибку запроса, то же самое произошло с curl , поэтому мне пришлось рассчитаться с помощью Chromium. Таким образом, мне пришлось бы использовать неполный файл, а не загружать.

Есть ли какой-нибудь простой способ использовать файл, загружаемый в настоящее время, для передачи по конвейеру funzip ?

0
07.12.2016, 05:16
1 ответ
tail -n +0 -f /path/to/file | funzip ...

По сути, tail отслеживает изменения длины файла и продолжает передавать любые дополнительные байты. Однако он не может знать, когда загрузка завершена, поэтому в какой-то момент может потребоваться убить его, в зависимости от того, что вы делаете с потоком.

Мы, конечно, предполагаем, что браузер попытается загрузить файл линейно и не будет записывать какие-либо метаданные, чтобы указать, что файл загружен только частично (что позже он будет перезаписан фактическими байтами файла). На практике загрузчики в браузерах довольно консервативны, поэтому можно ожидать, что это сработает.

0
28.01.2020, 04:49

Теги

Похожие вопросы