kandi background
Explore Kits

ArchiveBox | Open source self-hosted web | Privacy library

 by   ArchiveBox Python Version: v0.6.2 License: MIT

 by   ArchiveBox Python Version: v0.6.2 License: MIT

Download this library from

kandi X-RAY | ArchiveBox Summary

ArchiveBox is a Python library typically used in Telecommunications, Media, Media, Entertainment, Security, Privacy applications. ArchiveBox has no bugs, it has no vulnerabilities, it has build file available, it has a Permissive License and it has medium support. You can install using 'pip install ArchiveBox' or download it from GitHub, PyPI.
🗃 Open source self-hosted web archiving. Takes URLs/browser history/bookmarks/Pocket/Pinboard/etc., saves HTML, JS, PDFs, media, and more...
Support
Support
Quality
Quality
Security
Security
License
License
Reuse
Reuse

kandi-support Support

  • ArchiveBox has a medium active ecosystem.
  • It has 13237 star(s) with 768 fork(s). There are 159 watchers for this library.
  • It had no major release in the last 12 months.
  • There are 120 open issues and 486 have been closed. On average issues are closed in 47 days. There are 10 open pull requests and 0 closed requests.
  • It has a neutral sentiment in the developer community.
  • The latest version of ArchiveBox is v0.6.2
ArchiveBox Support
Best in #Privacy
Average in #Privacy
ArchiveBox Support
Best in #Privacy
Average in #Privacy

quality kandi Quality

  • ArchiveBox has no bugs reported.
ArchiveBox Quality
Best in #Privacy
Average in #Privacy
ArchiveBox Quality
Best in #Privacy
Average in #Privacy

securitySecurity

  • ArchiveBox has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
ArchiveBox Security
Best in #Privacy
Average in #Privacy
ArchiveBox Security
Best in #Privacy
Average in #Privacy

license License

  • ArchiveBox is licensed under the MIT License. This license is Permissive.
  • Permissive licenses have the least restrictions, and you can use them in most projects.
ArchiveBox License
Best in #Privacy
Average in #Privacy
ArchiveBox License
Best in #Privacy
Average in #Privacy

buildReuse

  • ArchiveBox releases are available to install and integrate.
  • Deployable package is available in PyPI.
  • Build file is available. You can build the component from source.
  • Installation instructions, examples and code snippets are available.
ArchiveBox Reuse
Best in #Privacy
Average in #Privacy
ArchiveBox Reuse
Best in #Privacy
Average in #Privacy
Top functions reviewed by kandi - BETA

kandi has reviewed ArchiveBox and discovered the below as its top functions. This is intended to give you an instant insight into ArchiveBox implemented functionality, and help decide if they suit your requirements.

  • Schedule cron jobs
    • Checks if the data folder exists in the given directory
    • Deduplicates all crontab jobs
    • Print args to stderr
    • Update all existing files
    • Remove urls from archive
    • Add new links to the main index
  • Setup web UI
    • Load all configuration files
    • Load config from defaults
    • Parse configuration options
  • Update all files matching criteria
    • Print version information
      • Saves the mercury article
        • Save a media file
          • Get the title of a link
            • Handle GET requests
              • Saves an archive
                • Download a single file
                  • Run django run server
                    • List all links
                      • Show help for all subcommands
                        • Download a readability document
                          • Remove URLs from archive
                            • Return the dependency info from the given configuration
                              • Add links to the main index
                                • Show the status of the main index
                                  • Saves a wget file
                                    • Get configuration options

                                      Get all kandi verified functions for this library.

                                      Get all kandi verified functions for this library.

                                      ArchiveBox Key Features

                                      Free & open source, doesn't require signing up for anything, stores all data locally

                                      Powerful, intuitive command line interface with modular optional dependencies

                                      Comprehensive documentation, active development, and rich community

                                      Extracts a wide variety of content out-of-the-box: media (youtube-dl), articles (readability), code (git), etc.

                                      Supports scheduled/realtime importing from many types of sources

                                      Uses standard, durable, long-term formats like HTML, JSON, PDF, PNG, and WARC

                                      Usable as a oneshot CLI, self-hosted web UI, Python API (BETA), REST API (ALPHA), or desktop app (ALPHA)

                                      Saves all pages to archive.org as well by default for redundancy (can be disabled for local-only mode)

                                      Planned: support for archiving content requiring a login/paywall/cookies (working, but ill-advised until some pending fixes are released)

                                      Planned: support for running JS during archiving to adblock, autoscroll, modal-hide, thread-expand...

                                      ArchiveBox Examples and Code Snippets

                                      See all related Code Snippets

                                      ArchiveBox

                                      copy iconCopydownload iconDownload
                                      "Your own personal internet archive" (网站存档 / 爬虫)
                                      curl -sSL 'https://get.archivebox.io' | sh
                                      

                                      Quickstart

                                      copy iconCopydownload iconDownload
                                      mkdir ~/archivebox && cd ~/archivebox
                                      curl -O 'https://raw.githubusercontent.com/ArchiveBox/ArchiveBox/master/docker-compose.yml'
                                      

                                      Usage

                                      copy iconCopydownload iconDownload
                                      # archivebox [subcommand] [--args]
                                      # docker-compose run archivebox [subcommand] [--args]
                                      # docker run -v $PWD:/data -it [subcommand] [--args]
                                      
                                      archivebox init --setup      # safe to run init multiple times (also how you update versions)
                                      archivebox --version
                                      archivebox help
                                      

                                      Input Formats

                                      copy iconCopydownload iconDownload
                                      # archivebox add --help
                                      archivebox add 'https://example.com/some/page'
                                      archivebox add < ~/Downloads/firefox_bookmarks_export.html
                                      archivebox add --depth=1 'https://news.ycombinator.com#2020-12-12'
                                      echo 'http://example.com' | archivebox add
                                      echo 'any_text_with [urls](https://example.com) in it' | archivebox add
                                      
                                      # if using docker add -i when piping stdin:
                                      # echo 'https://example.com' | docker run -v $PWD:/data -i archivebox/archivebox add
                                      # if using docker-compose add -T when piping stdin / stdout:
                                      # echo 'https://example.com' | docker-compose run -T archivebox add
                                      

                                      Configuration

                                      copy iconCopydownload iconDownload
                                      archivebox config                               # view the entire config
                                      archivebox config --get CHROME_BINARY           # view a specific value
                                      
                                      archivebox config --set CHROME_BINARY=chromium  # persist a config using CLI
                                      # OR
                                      echo CHROME_BINARY=chromium >> ArchiveBox.conf  # persist a config using file
                                      # OR
                                      env CHROME_BINARY=chromium archivebox ...       # run with a one-off config
                                      

                                      Dependencies

                                      copy iconCopydownload iconDownload
                                      # install python3 and archivebox with your system package manager
                                      # apt/brew/pip/etc install ... (see Quickstart instructions above)
                                      
                                      archivebox setup       # auto install all the extractors and extras
                                      archivebox --version   # see info and check validity of installed dependencies
                                      

                                      Archive Layout

                                      copy iconCopydownload iconDownload
                                      ./
                                          index.sqlite3
                                          ArchiveBox.conf
                                          archive/
                                              ...
                                              1617687755/
                                                  index.html
                                                  index.json
                                                  screenshot.png
                                                  media/some_video.mp4
                                                  warc/1617687755.warc.gz
                                                  git/somerepo.git
                                                  ...
                                      

                                      Static Archive Exporting

                                      copy iconCopydownload iconDownload
                                      # archivebox list --help
                                      archivebox list --html --with-headers > index.html     # export to static html table
                                      archivebox list --json --with-headers > index.json     # export to json blob
                                      archivebox list --csv=timestamp,url,title > index.csv  # export to csv spreadsheet
                                      
                                      # (if using docker-compose, add the -T flag when piping)
                                      # docker-compose run -T archivebox list --html --filter-type=search snozzberries > index.json
                                      

                                      Archiving Private Content

                                      copy iconCopydownload iconDownload
                                      # don't save private content to ArchiveBox, e.g.:
                                      archivebox add 'https://docs.google.com/document/d/12345somePrivateDocument'
                                      archivebox add 'https://vimeo.com/somePrivateVideo'
                                      
                                      # without first disabling saving to Archive.org:
                                      archivebox config --set SAVE_ARCHIVE_DOT_ORG=False  # disable saving all URLs in Archive.org
                                      
                                      # restrict the main index, snapshot content, and add form to authenticated in users as needed:
                                      archivebox config --set PUBLIC_INDEX=False
                                      archivebox config --set PUBLIC_SNAPSHOTS=False
                                      archivebox config --set PUBLIC_ADD_VIEW=False 
                                      
                                      # if extra paranoid or anti-Google:
                                      archivebox config --set SAVE_FAVICON=False          # disable favicon fetching (it calls a Google API passing the URL's domain part only)
                                      archivebox config --set CHROME_BINARY=chromium      # ensure it's using Chromium instead of Chrome
                                      

                                      Security Risks of Viewing Archived JS

                                      copy iconCopydownload iconDownload
                                      # visiting an archived page with malicious JS:
                                      https://127.0.0.1:8000/archive/1602401954/example.com/index.html
                                      
                                      # example.com/index.js can now make a request to read everything from:
                                      https://127.0.0.1:8000/index.html
                                      https://127.0.0.1:8000/archive/*
                                      # then example.com/index.js can send it off to some evil server
                                      

                                      Saving Multiple Snapshots of a Single URL

                                      copy iconCopydownload iconDownload
                                      archivebox add 'https://example.com#2020-10-24'
                                      ...
                                      archivebox add 'https://example.com#2020-10-25'
                                      

                                      Setup the dev environment

                                      copy iconCopydownload iconDownload
                                      git clone --recurse-submodules https://github.com/ArchiveBox/ArchiveBox
                                      cd ArchiveBox
                                      git checkout dev  # or the branch you want to test
                                      git submodule update --init --recursive
                                      git pull --recurse-submodules
                                      

                                      Common development tasks

                                      copy iconCopydownload iconDownload
                                      archivebox config --set DEBUG=True
                                      # or
                                      archivebox server --debug ...
                                      

                                      How to change TabView color for each icon?

                                      copy iconCopydownload iconDownload
                                      struct TestTabviewIconColor: View {
                                          
                                          @State var pageIndex: TabColor = .red
                                          
                                          var body: some View {
                                              VStack {
                                                  Text("Current page is \(pageIndex.rawValue)")
                                                  TabView(selection: $pageIndex) { // Use the Tabview(selection:) init
                                                      Text("The First Tab: \(pageIndex.color().description)")
                                                          .tabItem {
                                                              Image(systemName: "1.square.fill")
                                                              Text("First")
                                                          }
                                                          .tag(TabColor.red)
                                                      
                                                      Text("Another Tab: \(pageIndex.color().description)")
                                                          .tabItem {
                                                              Image(systemName: "2.square.fill")
                                                              Text("Second")
                                                          }
                                                          .tag(TabColor.green)
                                                      
                                                      Text("The Last Tab: \(pageIndex.color().description)")
                                                          .tabItem {
                                                              Image(systemName: "3.square.fill")
                                                              Text("Third")
                                                          }
                                                          .tag(TabColor.teal)
                                                  }
                                                  .accentColor(pageIndex.color())
                                                  .font(.headline)
                                              }
                                          }
                                      }
                                      
                                      // Define your enum here
                                      enum TabColor: Int {
                                          case red = 0
                                          case green = 1
                                          case teal = 2
                                          
                                          func color() -> Color {
                                              switch self {
                                              case .red:
                                                  return .red
                                              case .green:
                                                  return .green
                                              case .teal:
                                                  return .teal
                                              }
                                          }
                                      }
                                      
                                      pageIndex = .green
                                      
                                      struct TestTabviewIconColor: View {
                                          
                                          @State var pageIndex: TabColor = .red
                                          
                                          var body: some View {
                                              VStack {
                                                  Text("Current page is \(pageIndex.rawValue)")
                                                  TabView(selection: $pageIndex) { // Use the Tabview(selection:) init
                                                      Text("The First Tab: \(pageIndex.color().description)")
                                                          .tabItem {
                                                              Image(systemName: "1.square.fill")
                                                              Text("First")
                                                          }
                                                          .tag(TabColor.red)
                                                      
                                                      Text("Another Tab: \(pageIndex.color().description)")
                                                          .tabItem {
                                                              Image(systemName: "2.square.fill")
                                                              Text("Second")
                                                          }
                                                          .tag(TabColor.green)
                                                      
                                                      Text("The Last Tab: \(pageIndex.color().description)")
                                                          .tabItem {
                                                              Image(systemName: "3.square.fill")
                                                              Text("Third")
                                                          }
                                                          .tag(TabColor.teal)
                                                  }
                                                  .accentColor(pageIndex.color())
                                                  .font(.headline)
                                              }
                                          }
                                      }
                                      
                                      // Define your enum here
                                      enum TabColor: Int {
                                          case red = 0
                                          case green = 1
                                          case teal = 2
                                          
                                          func color() -> Color {
                                              switch self {
                                              case .red:
                                                  return .red
                                              case .green:
                                                  return .green
                                              case .teal:
                                                  return .teal
                                              }
                                          }
                                      }
                                      
                                      pageIndex = .green
                                      

                                      I've searched and search SwiftUI Switch Case Menu Cycle?

                                      copy iconCopydownload iconDownload
                                      struct Option: Hashable, Identifiable {
                                          // Identifier for Option !! MUST be unique
                                          let id: Int
                                          let title: String
                                          let imageName: String
                                      }
                                      
                                      struct ContentView: View {
                                          @State var currentOption: Int = 0
                                          
                                          let options: [Option] = [
                                              .init(id: 1, title: "DART Meadow", imageName: "sun.max.fill"),
                                              .init(id: 2, title: "Research", imageName: "flame"),
                                              .init(id: 3, title: "Navigation", imageName: "moon.stars.fill"),
                                          ]
                                          
                                          var body: some View {
                                              GeometryReader { geo in
                                                  HStack {
                                                      ListView(options: options, currentSelection: $currentOption)
                                                          .frame(width: geo.size.width / 2, height: geo.size.height)
                                                      switch (currentOption) {
                                                          case 1: Text("OrbitNodeView")
                                                          case 2: Text("ATM26NodeView")
                                                          case 3: Text("NozzleNodeView")
                                                          default: Text("MainView")
                                                      }
                                                  }
                                              }
                                          }
                                      }
                                      
                                      
                                      struct ListView: View {
                                          let options: [Option]
                                          @Binding var currentSelection: Int
                                          
                                          var body: some View{
                                              VStack(alignment: .leading) {
                                                  ForEach(options, id: \.self) {option in
                                                      HStack {
                                                          Image(systemName: option.imageName)
                                                              .frame(width: 20)
                                                          
                                                          Text(option.title)
                                                          // Don't even have to use current = options[currentSelection] anymore:
                                                              .foregroundColor(currentSelection == option.id ? .accentColor : .primary)
                                                      }
                                                      .padding(8)
                                                      .onTapGesture {
                                                          // Set the currentSelection to the ID of the option
                                                          currentSelection = option.id
                                                      }
                                                  }
                                              }
                                          }
                                      }
                                      

                                      Menu in system status bar is disabled

                                      copy iconCopydownload iconDownload
                                          let item = menu.addItem(
                                                  withTitle: "Order a burrito",
                                                  action: #selector(StatusBarFactory.x(_:)),
                                                  keyEquivalent: "A")
                                          item.target = _instance_of_StatusBarFactory_here // like StatusBarFactory.shared
                                      

                                      See all related Code Snippets

                                      Community Discussions

                                      Trending Discussions on ArchiveBox
                                      • How to change TabView color for each icon?
                                      • I've searched and search SwiftUI Switch Case Menu Cycle?
                                      • Menu in system status bar is disabled
                                      Trending Discussions on ArchiveBox

                                      QUESTION

                                      How to change TabView color for each icon?

                                      Asked 2022-Feb-13 at 20:55

                                      I've tried this to try to change the color of the tab icons individually, but for some reason, the color will modify it correctly and then after tapping back to the icon, it will not display the customized color.

                                      How would I go about changing the tab items icons for each individual tab (different colors for each)?

                                      Here's the code for the view holding the TabView that I'm trying to modify.

                                      struct MainView: View {
                                          @AppStorage("PendingOnboarding") var pendingOnboarding = true
                                      
                                          init() {
                                              UIPageControl.appearance().currentPageIndicatorTintColor = UIColor(Color.recyclepediaGreen)
                                          }
                                          
                                          var body: some View {
                                              NavigationView {
                                                  ZStack {
                                                      TabView {
                                                          CurbsideView()
                                                              .tabItem {
                                                                  Label("Curbside", systemImage: "car.fill")
                                                              }
                                                          ItemsView()
                                                              .tabItem {
                                                                  Label("Items", systemImage: "archivebox.fill")
                                                              }
                                                          LearnView()
                                                              .tabItem {
                                                                  Label("Learn", systemImage: "info.circle.fill")
                                                              }
                                                          ContactUsView()
                                                              .tabItem {
                                                                  Label("Contact Us", systemImage: "phone.fill.connection")
                                                              }
                                                      }
                                                      .accentColor(Color.recyclepediaBlue)
                                                      .toolbar {
                                                          ToolbarItem(placement: .principal) {
                                                              Image("Recyclepedia")
                                                                  .resizable()
                                                                  .scaledToFit()
                                                                  .padding(.top, 5)
                                                                  .padding(.bottom, 5)
                                                          }
                                                      }
                                                  }
                                                  .popup(isPresented: $pendingOnboarding, dragToDismiss: false, closeOnTap: false, backgroundColor: Color.white) {
                                                      OnboardingView(pendingOnboarding: $pendingOnboarding)
                                                  }
                                              }
                                          }
                                      }
                                      

                                      ANSWER

                                      Answered 2022-Feb-13 at 20:55

                                      The easiest solution is to use an enum that returns a Color. Like this:

                                      struct TestTabviewIconColor: View {
                                          
                                          @State var pageIndex: TabColor = .red
                                          
                                          var body: some View {
                                              VStack {
                                                  Text("Current page is \(pageIndex.rawValue)")
                                                  TabView(selection: $pageIndex) { // Use the Tabview(selection:) init
                                                      Text("The First Tab: \(pageIndex.color().description)")
                                                          .tabItem {
                                                              Image(systemName: "1.square.fill")
                                                              Text("First")
                                                          }
                                                          .tag(TabColor.red)
                                                      
                                                      Text("Another Tab: \(pageIndex.color().description)")
                                                          .tabItem {
                                                              Image(systemName: "2.square.fill")
                                                              Text("Second")
                                                          }
                                                          .tag(TabColor.green)
                                                      
                                                      Text("The Last Tab: \(pageIndex.color().description)")
                                                          .tabItem {
                                                              Image(systemName: "3.square.fill")
                                                              Text("Third")
                                                          }
                                                          .tag(TabColor.teal)
                                                  }
                                                  .accentColor(pageIndex.color())
                                                  .font(.headline)
                                              }
                                          }
                                      }
                                      
                                      // Define your enum here
                                      enum TabColor: Int {
                                          case red = 0
                                          case green = 1
                                          case teal = 2
                                          
                                          func color() -> Color {
                                              switch self {
                                              case .red:
                                                  return .red
                                              case .green:
                                                  return .green
                                              case .teal:
                                                  return .teal
                                              }
                                          }
                                      }
                                      

                                      As a bonus, you can select your tab by using it's color simply by calling:

                                      pageIndex = .green
                                      

                                      Source https://stackoverflow.com/questions/71102972

                                      Community Discussions, Code Snippets contain sources that include Stack Exchange Network

                                      Vulnerabilities

                                      No vulnerabilities reported

                                      Install ArchiveBox

                                      🖥  Supported OSs: Linux/BSD, macOS, Windows (Docker/WSL)   👾  CPUs: amd64, x86, arm8, arm7 (raspi>=3).
                                      Install Docker and Docker Compose on your system (if not already installed).
                                      Download the docker-compose.yml file into a new empty directory (can be anywhere). mkdir ~/archivebox && cd ~/archivebox curl -O 'https://raw.githubusercontent.com/ArchiveBox/ArchiveBox/master/docker-compose.yml'
                                      Run the initial setup and create an admin user. docker-compose run archivebox init --setup
                                      Optional: Start the server then login to the Web UI http://127.0.0.1:8000 ⇢ Admin. docker-compose up # completely optional, CLI can always be used without running a server # docker-compose run [-T] archivebox [subcommand] [--args]
                                      Install Docker on your system (if not already installed).
                                      Create a new empty directory and initalize your collection (can be anywhere). mkdir ~/archivebox && cd ~/archivebox docker run -v $PWD:/data -it archivebox/archivebox init --setup
                                      Optional: Start the server then login to the Web UI http://127.0.0.1:8000 ⇢ Admin. docker run -v $PWD:/data -p 8000:8000 archivebox/archivebox # completely optional, CLI can always be used without running a server # docker run -v $PWD:/data -it [subcommand] [--args]
                                      Install Docker on your system (optional, highly recommended but not required).
                                      Run the automatic setup script. curl -sSL 'https://get.archivebox.io' | sh
                                      Add the ArchiveBox repository to your sources. # On Ubuntu == 20.04, add the sources automatically: sudo apt install software-properties-common sudo add-apt-repository -u ppa:archivebox/archivebox # On Ubuntu >= 20.10 or <= 19.10, or other Debian-style systems, add the sources manually: echo "deb http://ppa.launchpad.net/archivebox/archivebox/ubuntu focal main" | sudo tee /etc/apt/sources.list.d/archivebox.list sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C258F79DCC02E369 sudo apt update
                                      Install the ArchiveBox package using apt. sudo apt install archivebox sudo python3 -m pip install --upgrade --ignore-installed archivebox # pip needed because apt only provides a broken older version of Django
                                      Create a new empty directory and initalize your collection (can be anywhere). mkdir ~/archivebox && cd ~/archivebox archivebox init --setup # if any problems, install with pip instead
                                      Optional: Start the server then login to the Web UI http://127.0.0.1:8000 ⇢ Admin. archivebox server 0.0.0.0:8000 # completely optional, CLI can always be used without running a server # archivebox [subcommand] [--args]
                                      Install Homebrew on your system (if not already installed).
                                      Install the ArchiveBox package using brew. brew tap archivebox/archivebox brew install archivebox
                                      Create a new empty directory and initalize your collection (can be anywhere). mkdir ~/archivebox && cd ~/archivebox archivebox init --setup # if any problems, install with pip instead
                                      Optional: Start the server then login to the Web UI http://127.0.0.1:8000 ⇢ Admin. archivebox server 0.0.0.0:8000 # completely optional, CLI can always be used without running a server # archivebox [subcommand] [--args]
                                      Install Python >= v3.7 and Node >= v14 on your system (if not already installed).
                                      Install the ArchiveBox package using pip3. pip3 install archivebox
                                      Create a new empty directory and initalize your collection (can be anywhere). mkdir ~/archivebox && cd ~/archivebox archivebox init --setup # install any missing extras like wget/git/ripgrep/etc. manually as needed
                                      Optional: Start the server then login to the Web UI http://127.0.0.1:8000 ⇢ Admin. archivebox server 0.0.0.0:8000 # completely optional, CLI can always be used without running a server # archivebox [subcommand] [--args]
                                      Arch: pacman install archivebox (contributed by @imlonghao)
                                      FreeBSD: curl -sSL 'https://get.archivebox.io' | sh (uses pkg + pip3 under-the-hood)
                                      Nix: nix-env --install archivebox (contributed by @siraben)
                                      More: contribute another distribution...!
                                      Install Docker on your system (if not already installed).
                                      Download a binary release for your OS or build the native app from source macOS: ArchiveBox.app.zip Linux: ArchiveBox.deb (alpha: build manually) Windows: ArchiveBox.exe (beta: build manually)
                                      (for larger setups, get a quote)
                                      (USD $29-250/mo, pricing)
                                      (USD $5-50+/mo, 🎗  referral link, instructions)
                                      (USD $2.5-50+/mo, 🎗  referral link, instructions)
                                      (USD $10-50+/mo, instructions)
                                      (USD $60-200+/mo)
                                      (USD $60-200+/mo)
                                      Import URLs from some of the supported Input Formats or view the supported Output Formats...
                                      Tweak your UI or archiving behavior Configuration or read about some of the Caveats and troubleshooting steps...
                                      Read about the Dependencies used for archiving or the Archive Layout on disk...
                                      Or check out our full Documentation or Community Wiki...
                                      First-class support for saving multiple snapshots of each site over time will be added eventually (along with the ability to view diffs of the changes between runs). For now ArchiveBox is designed to only archive each unique URL with each extractor type once. The workaround to take multiple snapshots of the same URL is to make them slightly different by adding a hash:. The button in the Admin UI is a shortcut for this hash-date workaround.
                                      Quickstart
                                      Install
                                      Docker

                                      Support

                                      We use the GitHub wiki system and Read the Docs (WIP) for documentation. You can also access the docs locally by looking in the ArchiveBox/docs/ folder.

                                      DOWNLOAD this Library from

                                      Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from
                                      over 430 million Knowledge Items
                                      Find more libraries
                                      Reuse Solution Kits and Libraries Curated by Popular Use Cases
                                      Explore Kits

                                      Save this library and start creating your kit

                                      Share this Page

                                      share link
                                      Consider Popular Privacy Libraries
                                      Try Top Libraries by ArchiveBox
                                      Compare Privacy Libraries with Highest Support
                                      Compare Privacy Libraries with Highest Quality
                                      Compare Privacy Libraries with Highest Security
                                      Compare Privacy Libraries with Permissive License
                                      Compare Privacy Libraries with Highest Reuse
                                      Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from
                                      over 430 million Knowledge Items
                                      Find more libraries
                                      Reuse Solution Kits and Libraries Curated by Popular Use Cases
                                      Explore Kits

                                      Save this library and start creating your kit

                                      • © 2022 Open Weaver Inc.