cursed_archivebox_api.py | ||
cursed-archivebox-api.service | ||
Pipfile | ||
Pipfile.lock | ||
README.md | ||
requirements.txt |
Cursed API for ArchiveBox
ArchiveBox doesn't have a web API yet. This is shitty single-endpoint API to automate page archiving. It uses subprocess to run archivebox CLI. archivebox CLI runs in new thread to avoid blocking main thread.
Deployment
You must deploy API to server which ArchieveBox runs.
Make working directory, create virtualenv and install dependencies:
apt install -y git python3-venv
mkdir -p /opt/cursed_archievebox_api && cd /opt/cursed_archievebox_api
python -m venv env
source env/bin/activate
pip install bottle gunicorn
git clone https://git.nxhs.cloud/ge/cursed-archivebox-api.git .
Start API. Set actual path to docker-compose.yml:
ARCHIVEBOX_BIN="docker compose -f /opt/archievebox/docker-compose.yml run archivebox" python cursed_archivebox_api.py
See also cursed-archivebox-api.service.
Install service:
cp cursed-archivebox-api.service /etc/systemd/system
systemctl enable --now cursed-archivebox-api.service
See logs:
journalctl -u cursed-archivebox-api.service -f
Environment
Variable | Default |
---|---|
ARCHIVEBOX_BIN |
/usr/bin/archivebox (default for non-Docker installations) |
CURSED_PORT |
9998 |
CURSED_HOST |
0.0.0.0 |
CURSED_SERVER |
gunicorn See server backends |
GET /add
Query parameters:
url
. Resource URLdepth
. Archive depth. Default: 0 (current page)tag
. List of comma separated tags e.g.my_tag
,my_tag,another_one
.
Example request:
curl -i 'http://localhost:9998/add?url=https://example.com&depth=0&tag=api,example'