/single-file-cli

CLI tool for saving a faithful copy of a complete web page in a single HTML file (based on SingleFile)

Primary LanguageJavaScriptGNU Affero General Public License v3.0AGPL-3.0

SingleFile CLI (Command Line Interface)

Introduction

SingleFile can be launched from the command line by running it into a (headless) browser.

It runs through Deno as a standalone script injected into the web page via the Chrome DevTools Protocol instead of being embedded into a WebExtension.

Installation

SingleFile can be run without installing it, just download the executable file and save it in the directory of your choice here: https://github.com/gildas-lormeau/single-file-cli/releases

Make sure Chrome or a Chromium-based browser is installed in the default folder. Otherwise you might need to set the --browser-executable-path option to help SingleFile locating the path of the executable file.

Installation with Docker

  • Installation from Docker Hub

    docker pull capsulecode/singlefile

    docker tag capsulecode/singlefile singlefile

  • Manual installation

    git clone --depth 1 --recursive https://github.com/gildas-lormeau/single-file-cli.git

    cd single-file-cli

    docker build --no-cache -t singlefile .

  • Run

    docker run singlefile "https://www.wikipedia.org"

  • Run and redirect the result into a file

    docker run singlefile "https://www.wikipedia.org" > wikipedia.html

  • Run and mount a volume to get the saved file in the current directory

    • Save one page

      docker run -v %cd%:/usr/src/app/out singlefile "https://www.wikipedia.org" wikipedia.html (Windows)

      docker run -v $(pwd):/usr/src/app/out singlefile "https://www.wikipedia.org" wikipedia.html (Linux/UNIX)

    • Save one or multiple pages by using the filename template (see --filename-template option)

      docker run -v %cd%:/usr/src/app/out singlefile "https://www.wikipedia.org" --dump-content=false (Windows)

      docker run -v $(pwd):/usr/src/app/out singlefile "https://www.wikipedia.org" --dump-content=false (Linux/UNIX)

  • An alternative docker file can be found here https://github.com/screenbreak/SingleFile-dockerized. It allows you to save pages from the command line interface or through an HTTP server.

Manual installation

  • Install Deno

  • There are 3 ways to download the code of SingleFile, choose the one you prefer:

    • Install with npm and run single-file via npx (npm and npx are installed with Node.js)

      npm install "single-file-cli"
      npx single-file ...

      You can also install SingleFile globally with -g when running npm install.

    • Download and unzip manually the master archive provided by Github

      unzip master.zip .
      cd single-file-cli-master
    • Download with git

      git clone --depth 1 --recursive https://github.com/gildas-lormeau/single-file-cli.git
      cd single-file-cli
  • Make single-file executable (Linux/Unix/BSD etc.).

    chmod +x single-file

Run

  • Syntax

    single-file <url> [output] [options ...]
  • Display help

    single-file --help
  • Examples

    single-file https://www.wikipedia.org --dump-content
    single-file https://www.wikipedia.org wikipedia.html
    • Save a list of URLs stored into list-urls.txt in the current folder
    single-file --urls-file=list-urls.txt
    single-file https://www.wikipedia.org --crawl-links=true --crawl-inner-links-only=true --crawl-max-depth=1 --crawl-rewrite-rule="^(.*)\\?.*$ $1"
    single-file https://www.wikipedia.org --crawl-links=true --crawl-inner-links-only=false --crawl-external-links-max-depth=1 --crawl-rewrite-rule="^.*wikipedia.*$"

Compile executables

  • Compile executables into /dist
./compile.sh

License

SingleFile and SingleFile CLI are licensed under AGPL. Code derived from third-party projects is licensed under MIT. Please contact me at gildas.lormeau <at> gmail.com if you are interested in licensing the SingleFile code for a commercial service or product.