waybackpy/README.md

143 lines
6.3 KiB
Markdown
Raw Normal View History

2022-02-04 18:01:46 +01:00
<!-- markdownlint-disable MD033 MD041 -->
<div align="center">
<img src="https://raw.githubusercontent.com/akamhy/waybackpy/master/assets/waybackpy_logo.svg"><br>
2022-01-21 22:38:26 +01:00
<h3>A Python package & CLI tool that interfaces with the Wayback Machine API</h3>
</div>
<p align="center">
<a href="https://github.com/akamhy/waybackpy/actions?query=workflow%3ATests"><img alt="Unit Tests" src="https://github.com/akamhy/waybackpy/workflows/Tests/badge.svg"></a>
2022-02-08 13:19:05 +01:00
<a href="https://codecov.io/gh/akamhy/waybackpy"><img alt="codecov" src="https://codecov.io/gh/akamhy/waybackpy/branch/master/graph/badge.svg"></a>
<a href="https://pypi.org/project/waybackpy/"><img alt="pypi" src="https://img.shields.io/pypi/v/waybackpy.svg"></a>
<a href="https://pepy.tech/project/waybackpy?versions=2*&versions=1*&versions=3*"><img alt="Downloads" src="https://pepy.tech/badge/waybackpy/month"></a>
2022-02-05 05:35:17 +01:00
<a href="https://app.codacy.com/gh/akamhy/waybackpy?utm_source=github.com&utm_medium=referral&utm_content=akamhy/waybackpy&utm_campaign=Badge_Grade_Settings"><img alt="Codacy Badge" src="https://api.codacy.com/project/badge/Grade/6d777d8509f642ac89a20715bb3a6193"></a>
<a href="https://github.com/akamhy/waybackpy/commits/master"><img alt="GitHub lastest commit" src="https://img.shields.io/github/last-commit/akamhy/waybackpy?color=blue&style=flat-square"></a>
<a href="#"><img alt="PyPI - Python Version" src="https://img.shields.io/pypi/pyversions/waybackpy?style=flat-square"></a>
2022-01-24 09:16:31 +01:00
<a href="https://github.com/psf/black"><img alt="Code style: black" src="https://img.shields.io/badge/code%20style-black-000000.svg"></a>
</p>
2022-02-04 18:01:46 +01:00
---
# <img src="https://github.githubassets.com/images/icons/emoji/unicode/2b50.png" width="30"></img> Introduction
2022-01-21 22:38:26 +01:00
Waybackpy is a [Python package](https://www.udacity.com/blog/2021/01/what-is-a-python-package.html) and a [CLI](https://www.w3schools.com/whatis/whatis_cli.asp) tool that interfaces with the [Wayback Machine](https://en.wikipedia.org/wiki/Wayback_Machine) API.
2022-01-21 22:38:26 +01:00
Wayback Machine has 3 client side [API](https://www.redhat.com/en/topics/api/what-are-application-programming-interfaces)s.
2022-02-04 18:01:46 +01:00
- [Save API](https://github.com/akamhy/waybackpy/wiki/Wayback-Machine-APIs#save-api)
- [Availability API](https://github.com/akamhy/waybackpy/wiki/Wayback-Machine-APIs#availability-api)
- [CDX API](https://github.com/akamhy/waybackpy/wiki/Wayback-Machine-APIs#cdx-api)
2022-01-21 22:38:26 +01:00
These three APIs can be accessed via the waybackpy either by importing it in a script or from the CLI.
## <img src="https://github.githubassets.com/images/icons/emoji/unicode/1f3d7.png" width="20"></img> Installation
2020-10-02 20:04:06 +02:00
**Using [pip](https://en.wikipedia.org/wiki/Pip_(package_manager)), from [PyPI](https://pypi.org/) (recommended)**:
2020-10-02 20:04:06 +02:00
2020-07-18 04:46:59 +02:00
```bash
pip install waybackpy
```
2020-10-02 20:04:06 +02:00
**Using [conda](https://en.wikipedia.org/wiki/Conda_(package_manager)), from [conda-forge](https://anaconda.org/conda-forge/waybackpy) (recommended)**:
2022-01-26 11:15:03 +01:00
See also [waybackpy feedstock](https://github.com/conda-forge/waybackpy-feedstock), maintainers are [@rafaelrdealmeida](https://github.com/rafaelrdealmeida/),
[@labriunesp](https://github.com/labriunesp/)
and [@akamhy](https://github.com/akamhy/).
```bash
conda install -c conda-forge waybackpy
```
**Install directly from [this git repository](https://github.com/akamhy/waybackpy) (NOT recommended)**:
2020-10-02 20:04:06 +02:00
```bash
pip install git+https://github.com/akamhy/waybackpy.git
```
## <img src="https://github.githubassets.com/images/icons/emoji/unicode/1f433.png" width="20"></img> Docker Image
Docker Hub : <https://hub.docker.com/r/secsi/waybackpy>
2022-01-21 22:38:26 +01:00
[Docker image](https://searchitoperations.techtarget.com/definition/Docker-image) is automatically updated on every release by [Regulary and Automatically Updated Docker Images](https://github.com/cybersecsi/RAUDI) (RAUDI).
RAUDI is a tool by SecSI (<https://secsi.io>), an Italian cybersecurity startup.
## <img src="https://github.githubassets.com/images/icons/emoji/unicode/1f680.png" width="20"></img> Usage
2022-02-04 18:01:46 +01:00
### As a Python package
2022-02-04 18:01:46 +01:00
#### Save API aka SavePageNow
2022-01-18 16:14:47 +01:00
```python
>>> from waybackpy import WaybackMachineSaveAPI
2022-01-18 16:28:39 +01:00
>>> url = "https://github.com"
2022-01-18 16:14:47 +01:00
>>> user_agent = "Mozilla/5.0 (Windows NT 5.1; rv:40.0) Gecko/20100101 Firefox/40.0"
2022-01-21 22:38:26 +01:00
>>>
2022-01-18 16:28:39 +01:00
>>> save_api = WaybackMachineSaveAPI(url, user_agent)
>>> save_api.save()
https://web.archive.org/web/20220118125249/https://github.com/
>>> save_api.cached_save
False
>>> save_api.timestamp()
datetime.datetime(2022, 1, 18, 12, 52, 49)
2022-01-18 16:14:47 +01:00
```
2022-02-04 18:01:46 +01:00
#### Availability API
2022-01-18 16:14:47 +01:00
```python
>>> from waybackpy import WaybackMachineAvailabilityAPI
2022-01-21 22:38:26 +01:00
>>>
2022-01-18 16:14:47 +01:00
>>> url = "https://google.com"
>>> user_agent = "Mozilla/5.0 (Windows NT 5.1; rv:40.0) Gecko/20100101 Firefox/40.0"
2022-01-21 22:38:26 +01:00
>>>
2022-01-18 16:14:47 +01:00
>>> availability_api = WaybackMachineAvailabilityAPI(url, user_agent)
2022-01-21 22:38:26 +01:00
>>>
2022-01-18 16:14:47 +01:00
>>> availability_api.oldest()
https://web.archive.org/web/19981111184551/http://google.com:80/
2022-01-21 22:38:26 +01:00
>>>
2022-01-18 16:14:47 +01:00
>>> availability_api.newest()
https://web.archive.org/web/20220118150444/https://www.google.com/
2022-01-21 22:38:26 +01:00
>>>
2022-01-18 16:14:47 +01:00
>>> availability_api.near(year=2010, month=10, day=10, hour=10)
https://web.archive.org/web/20101010101708/http://www.google.com/
```
2022-02-04 18:01:46 +01:00
#### CDX API aka CDXServerAPI
```python
2022-01-18 16:28:39 +01:00
>>> from waybackpy import WaybackMachineCDXServerAPI
2022-01-18 16:48:17 +01:00
>>> url = "https://pypi.org"
>>> user_agent = "Mozilla/5.0 (Windows NT 5.1; rv:40.0) Gecko/20100101 Firefox/40.0"
2022-01-18 16:48:17 +01:00
>>> cdx = WaybackMachineCDXServerAPI(url, user_agent, start_timestamp=2016, end_timestamp=2017)
>>> for item in cdx.snapshots():
... print(item.archive_url)
2022-01-21 22:38:26 +01:00
...
2022-01-18 16:48:17 +01:00
https://web.archive.org/web/20160110011047/http://pypi.org/
https://web.archive.org/web/20160305104847/http://pypi.org/
.
. # URLS REDACTED FOR READABILITY
.
https://web.archive.org/web/20171127171549/https://pypi.org/
https://web.archive.org/web/20171206002737/http://pypi.org:80/
```
2022-01-18 16:28:39 +01:00
2022-01-21 22:38:26 +01:00
> Documentation is at <https://github.com/akamhy/waybackpy/wiki/Python-package-docs>.
2022-02-04 18:01:46 +01:00
### As a CLI tool
2022-01-21 22:38:26 +01:00
Demo video on [asciinema.org](https://asciinema.org), you can copy the text from video:
2022-01-21 22:38:26 +01:00
[![asciicast](https://asciinema.org/a/464367.svg)](https://asciinema.org/a/464367)
2022-01-21 22:38:26 +01:00
2022-01-16 21:45:38 +01:00
> CLI documentation is at <https://github.com/akamhy/waybackpy/wiki/CLI-docs>.
## <img src="https://github.githubassets.com/images/icons/emoji/unicode/1f6e1.png" width="20"></img> License
2022-02-04 18:01:46 +01:00
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://github.com/akamhy/waybackpy/blob/master/LICENSE)
2020-10-02 20:04:06 +02:00
2022-01-21 22:38:26 +01:00
Copyright (c) 2020-2022 Akash Mahanty Et al.
2022-01-16 21:45:38 +01:00
Released under the MIT License. See [license](https://github.com/akamhy/waybackpy/blob/master/LICENSE) for details.