• Stars
    star
    502
  • Rank 85,823 (Top 2 %)
  • Language
    JavaScript
  • License
    GNU Affero Genera...
  • Created about 2 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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

SingleFile CLI (Command Line Interface)

Introduction

SingleFile can be launched from the command line by running it into a (headless) browser. It runs through Node.js as a standalone script injected into the web page instead of being embedded into a WebExtension. To connect to the browser, it can use Puppeteer or Selenium WebDriver. Alternatively, it can also emulate a browser with JavaScript disabled by using jsdom.

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

  • Make sure Chrome or Firefox is installed and the executable can be found through the PATH environment variable. Otherwise you will need to set the --browser-executable-path option to help SingleFile locating it. As an alternative to Chrome and Firefox, you can use jsdom by setting the --back-end option to jsdom.

  • Install Node.js

  • There are 3 ways to download the code of SingleFile, choose the one you prefer (npm is installed with Node.js):

    • Download and install globally with npm

      npm install -g "single-file-cli"

    • Download and unzip manually the master archive provided by Github

      unzip master.zip .

      cd single-file-cli-master

      npm install

    • Download with git

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

      cd single-file-cli

      npm install

  • Make single-file executable (Linux/Unix/BSD etc.) if SingleFile is not installed globally.

    chmod +x single-file

  • To use Firefox instead of Chrome, you must download the Selenium WebDriver component (i.e. geckodriver for Firefox). Make sure it can be found through the PATH environment variable or the cli folder. Otherwise you will need to set the --web-driver-executable-path option to help WebDriver locating the executable.

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

    single-file https://www.wikipedia.org wikipedia.html --back-end=webdriver-gecko

    • 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.*$"

Troubleshooting

  • If the error message UnhandledPromiseRejectionWarning: Error: Browser is not downloaded. Run "npm install" or "yarn install" at ChromeLauncher.launch is displayed, it probably means that single-file was not able to find the executable of the browser. Using the option --browser-executable-path to pass to single-file the complete path of the executable fixes this issue.

  • If saving a page takes an unusually long time, this may be due to a timeout error that was automatically recovered. Setting --browser-wait-until to a lower value (e.g. networkidle0 or load instead of networkidle2) fixes this issue.

License

SingleFile is 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.

More Repositories

1

SingleFile

Web Extension for saving a faithful copy of a complete web page in a single HTML file
JavaScript
14,012
star
2

zip.js

JavaScript library to zip and unzip files supporting multi-core compression, compression streams, zip64, split files and encryption.
JavaScript
3,295
star
3

SingleFileZ

Web Extension to save a faithful copy of an entire web page in a self-extracting ZIP file
JavaScript
1,774
star
4

JSONVue

Fork of JSONView for Chromium-based browsers
JavaScript
1,585
star
5

SingleFile-MV3

SingleFile version compatible with Manifest V3. The future, right now!
JavaScript
299
star
6

single-file-companion

JavaScript
108
star
7

Scrapbook-for-SingleFile

PageArchiver (previously called "Scrapbook for SingleFile") is a Chrome extension that helps to archive pages for offline reading
JavaScript
86
star
8

single-file-companion-lite

SingleFile Companion Lite
TypeScript
57
star
9

single-filez-cli

JavaScript
36
star
10

zip-manager

Progressive Web App for creating, reading, and editing zip files
JavaScript
32
star
11

PageEdit

WYSIWYG HTML editor chrome extension
JavaScript
29
star
12

single-file-export-chat

Extension to export MS Teams chats
JavaScript
29
star
13

LazyLoadify

Web Extension to force the lazy loading of non-displayed resources (i.e. image, frame, video and audio contents)
JavaScript
29
star
14

SingleFile-Safari-Extension

Source code of SingleFile for Safari
JavaScript
25
star
15

PrettyPrint

A chrome extension to pretty print JavaScript and CSS
JavaScript
24
star
16

single-file-core

JavaScript
19
star
17

BugMeNot-Lite

Fill automatically login and password fields when a registration form is displayed using bugmenot accounts.
JavaScript
14
star
18

SingleFile-MAFF2HTML

Convert MAFF to HTML with SingleFile
JavaScript
12
star
19

ZipTabs

Chrome extension to archive opened tabs in a zip file
JavaScript
12
star
20

yabson

YaBSON is a library allowing schemaless binary-encoded parsing/serialization of JavaScript data with a generator-based implementation
JavaScript
12
star
21

SingleFile-Archives

Pages saved with SingleFile
HTML
7
star
22

simple-cdp

JavaScript library to interact with the Chrome DevTools Protocol
JavaScript
6
star
23

SingleFile-tools

JavaScript
5
star
24

single-filez-core

JavaScript
5
star
25

Chrome-extensions-presentation

Slides et exemple d'extension de la présentation donnée au BreizhCamp 2011 (Slides and sample extension from presentation I gave at BreizhCamp 2011) - http://www.breizhcamp.org/
JavaScript
5
star
26

SingleFile-Demos

Demos of SingleFile and SingleFileZ
4
star
27

CKEditor-extension-demo

Simple demo of CKEditor integration in a chrome extension
JavaScript
4
star
28

gildas-lormeau.github.io

https://gildas-lormeau.github.io/
HTML
2
star
29

misc-demos

2
star