reget

A library for creating a terminal user interface


License
MIT
Install
pip install reget==0.5

Documentation

ReGet: retransmit less

Inspired by lack of functionality of wget this tool solves two annoying issues

  • wget -N -O somefile doesn't work as you may expect
  • there is no way to atomically replace target file with updated version

Okay, second problem easily solved like this

#!/bin/bash

TMPFILE=$(mktemp -q)

(wget -qO "$TMPFILE" "$1" && mv "$TMPFILE" "$2") || rm "$TMPFILE"

But what about first issue? It needs much more complicated shell-magic, introduces more troubles and requires additional HTTP request to target server.

Features

  • Built on top of requests.
  • Keep response metadata for next run.
  • Send only needed headers from previous run.
  • Atomic update of destination file.

Installation

$ pip install reget

Usage

As console tool:

$ reget http://example.org /tmp/example

will download server response to /tmp/example and create /tmp/example.json with headers needed for next run.

As python package

>>> import reget
>>> reget.get('http://example.org', '/tmp/example')
<Response [200]>
>>> reget.get('http://example.org', '/tmp/example')
<Response [304]>

Note that subsequent calls with the same url save_path arguments will respect 304 Not Modified.

Known issues

  • Noticable startup time

TODO

  • Option to use single directory for response metadata.
  • Accept multiple <url> <save_path> from file/stdin.