0

I have been downloading zip files from Google Drive. The files contain mp4 videos, and I didn't want to wait for the download to finish. VLC could play incomplete files just fine, but then the downloaded files are zip files, not mp4 files. wget is probably the easiest way to pipe a download directly to a filter, and then I could use funzip and output to a file, then play it as if streaming a video. However I couldn't get wget to download from Google Drive, it just kept returning ERROR 400 bad request error, same happened to curl, so I had to settle with Chromium. That way I would have to pipe from an incomplete file rather than a download.

Is there any simple way to use a file currently being downloaded for piping to funzip?

1 Answer 1

0
tail -n +0 -f /path/to/file | funzip ... 

Basically, tail watches for changes in the length of the file and keeps streaming any additional bytes. However, it can't know when the download is finished, so it may be necessary to kill it at some point depending on what you are doing with the stream.

We assume, of course, that the browser is going to try and download the file linearly, and won't write any metadata to indicate that the file is only partially downloaded (that it would later overwrite with actual file bytes). In practice, the downloaders in browsers are pretty conservative, so this can be expected to work.

4
  • It would be good to include some explanation. Also, are you certain that Chromium's download mechanism writes a complete contiguous file from beginning to end? I don't know that all browsers' downloads work like that, but it's not really my area so it's possible that they do. Commented Dec 7, 2016 at 3:45
  • Why don't you just test it? Commented Dec 7, 2016 at 4:48
  • @JuliePelletier That really sounds like a lot of work. Besides, the browser implementation can always change, there's not really a partial-download standard that the browser can be held to. Commented Dec 7, 2016 at 5:06
  • tail -n +0 -f can be shortened to tail +0f Commented Jan 13, 2017 at 14:20

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.