2020-05-04 17:36:00 +02:00
# waybackpy
2020-07-17 21:10:21 +02:00
[![Build Status ](https://img.shields.io/travis/akamhy/waybackpy.svg?label=Travis%20CI&logo=travis&style=flat-square )](https://travis-ci.org/akamhy/waybackpy)
2020-05-05 14:24:38 +02:00
[![Downloads ](https://img.shields.io/pypi/dm/waybackpy.svg )](https://pypistats.org/packages/waybackpy)
2020-05-05 15:38:26 +02:00
[![Release ](https://img.shields.io/github/v/release/akamhy/waybackpy.svg )](https://github.com/akamhy/waybackpy/releases)
2020-05-05 06:07:53 +02:00
[![Codacy Badge ](https://api.codacy.com/project/badge/Grade/255459cede9341e39436ec8866d3fb65 )](https://www.codacy.com/manual/akamhy/waybackpy?utm_source=github.com& utm_medium=referral& utm_content=akamhy/waybackpy& utm_campaign=Badge_Grade)
2020-05-05 06:01:43 +02:00
[![License: MIT ](https://img.shields.io/badge/License-MIT-yellow.svg )](https://github.com/akamhy/waybackpy/blob/master/LICENSE)
2020-05-06 05:48:02 +02:00
[![Maintainability ](https://api.codeclimate.com/v1/badges/942f13d8177a56c1c906/maintainability )](https://codeclimate.com/github/akamhy/waybackpy/maintainability)
2020-05-07 13:21:08 +02:00
[![CodeFactor ](https://www.codefactor.io/repository/github/akamhy/waybackpy/badge )](https://www.codefactor.io/repository/github/akamhy/waybackpy)
2020-05-05 06:01:43 +02:00
[![made-with-python ](https://img.shields.io/badge/Made%20with-Python-1f425f.svg )](https://www.python.org/)
2020-05-07 16:32:47 +02:00
![pypi ](https://img.shields.io/pypi/v/waybackpy.svg )
2020-05-07 04:53:31 +02:00
![PyPI - Python Version ](https://img.shields.io/pypi/pyversions/waybackpy?style=flat-square )
2020-05-05 06:01:43 +02:00
[![Maintenance ](https://img.shields.io/badge/Maintained%3F-yes-green.svg )](https://github.com/akamhy/waybackpy/graphs/commit-activity)
2020-07-16 17:09:12 +02:00
[![codecov ](https://codecov.io/gh/akamhy/waybackpy/branch/master/graph/badge.svg )](https://codecov.io/gh/akamhy/waybackpy)
2020-07-17 21:02:00 +02:00
![](https://img.shields.io/github/repo-size/akamhy/waybackpy.svg?label=Repo%20size& style=flat-square)
2020-07-18 12:52:09 +02:00
![contributions welcome ](https://img.shields.io/static/v1.svg?label=Contributions&message=Welcome&color=0059b3&style=flat-square )
2020-05-05 06:01:43 +02:00
2020-05-04 17:36:00 +02:00
![Internet Archive ](https://upload.wikimedia.org/wikipedia/commons/thumb/8/84/Internet_Archive_logo_and_wordmark.svg/84px-Internet_Archive_logo_and_wordmark.svg.png )
![Wayback Machine ](https://upload.wikimedia.org/wikipedia/commons/thumb/0/01/Wayback_Machine_logo_2010.svg/284px-Wayback_Machine_logo_2010.svg.png )
2020-07-18 13:16:40 +02:00
Waybackpy is a Python library that interfaces with the [Internet Archive ](https://en.wikipedia.org/wiki/Internet_Archive )'s [Wayback Machine ](https://en.wikipedia.org/wiki/Wayback_Machine ) API. Archive pages and retrieve archived pages easily.
2020-05-04 17:36:00 +02:00
2020-05-05 05:33:16 +02:00
Table of contents
=================
<!-- ts -->
2020-05-05 05:57:02 +02:00
2020-07-17 20:50:58 +02:00
* [Installation ](#installation )
2020-05-05 05:57:02 +02:00
2020-07-17 20:50:17 +02:00
* [Usage ](#usage )
* [Saving an url using save() ](#capturing-aka-saving-an-url-using-save )
* [Receiving the oldest archive for an URL Using oldest() ](#receiving-the-oldest-archive-for-an-url-using-oldest )
* [Receiving the recent most/newest archive for an URL using newest() ](#receiving-the-newest-archive-for-an-url-using-newest )
* [Receiving archive close to a specified year, month, day, hour, and minute using near() ](#receiving-archive-close-to-a-specified-year-month-day-hour-and-minute-using-near )
* [Get the content of webpage using get() ](#get-the-content-of-webpage-using-get )
* [Count total archives for an URL using total_archives() ](#count-total-archives-for-an-url-using-total_archives )
2020-05-07 11:43:58 +02:00
2020-05-05 05:57:02 +02:00
2020-07-17 20:50:17 +02:00
* [Tests ](#tests )
2020-05-05 05:57:02 +02:00
2020-07-17 20:50:17 +02:00
* [Dependency ](#dependency )
2020-05-05 05:57:02 +02:00
2020-07-18 13:00:20 +02:00
* [License ](#license )
2020-05-05 05:57:02 +02:00
2020-05-05 05:33:16 +02:00
<!-- te -->
2020-05-04 17:36:00 +02:00
## Installation
Using [pip ](https://en.wikipedia.org/wiki/Pip_(package_manager )):
2020-07-18 04:46:59 +02:00
```bash
pip install waybackpy
```
2020-05-04 17:36:00 +02:00
## Usage
2020-05-05 05:57:02 +02:00
#### Capturing aka Saving an url Using save()
2020-05-04 17:36:00 +02:00
```python
import waybackpy
2020-05-05 05:33:16 +02:00
# Capturing a new archive on Wayback machine.
2020-07-18 12:52:09 +02:00
target_url = waybackpy.Url("https://github.com/akamhy/waybackpy", user_agnet="My-cool-user-agent")
archived_url = target_url.save()
2020-05-04 17:36:00 +02:00
print(archived_url)
```
2020-07-18 12:52:09 +02:00
This should print an URL similar to the following archived URL:
2020-05-04 17:36:00 +02:00
2020-07-18 12:52:09 +02:00
> <https://web.archive.org/web/20200504141153/https://github.com/akamhy/waybackpy>
2020-05-04 17:36:00 +02:00
2020-07-18 12:52:09 +02:00
#### Receiving the oldest archive for an URL Using oldest()
2020-05-04 17:36:00 +02:00
```python
import waybackpy
# retrieving the oldest archive on Wayback machine.
2020-07-18 12:52:09 +02:00
target_url = waybackpy.Url("https://www.google.com/", "My-cool-user-agent")
oldest_archive = target_url.oldest()
2020-05-04 17:36:00 +02:00
print(oldest_archive)
```
2020-07-18 12:52:09 +02:00
This should print the oldest available archive for < https: / / google . com > .
2020-05-04 17:36:00 +02:00
2020-07-18 12:52:09 +02:00
> <http://web.archive.org/web/19981111184551/http://google.com:80/>
2020-05-05 05:33:16 +02:00
2020-05-04 17:36:00 +02:00
2020-07-18 12:52:09 +02:00
#### Receiving the newest archive for an URL using newest()
2020-05-04 17:36:00 +02:00
```python
import waybackpy
2020-07-18 12:52:09 +02:00
# retrieving the newest/latest archive on Wayback machine.
target_url = waybackpy.Url(url="https://www.google.com/", user_agnet="My-cool-user-agent")
newest_archive = target_url.newest()
2020-05-04 17:36:00 +02:00
print(newest_archive)
```
2020-07-18 12:52:09 +02:00
This print the newest available archive for < https: / / www . microsoft . com / en-us > , something just like this:
2020-05-04 17:36:00 +02:00
2020-07-18 12:52:09 +02:00
> <http://web.archive.org/web/20200429033402/https://www.microsoft.com/en-us/>
2020-05-05 05:33:16 +02:00
2020-05-04 17:36:00 +02:00
2020-07-18 12:52:09 +02:00
#### Receiving archive close to a specified year, month, day, hour, and minute using near()
2020-05-04 17:36:00 +02:00
```python
import waybackpy
# retriving the the closest archive from a specified year.
# supported argumnets are year,month,day,hour and minute
2020-07-18 12:52:09 +02:00
target_url = waybackpy.Url(https://www.facebook.com/", "Any-User-Agent")
archive_near_year = target_url.near(year=2010)
2020-05-04 17:36:00 +02:00
print(archive_near_year)
```
returns : < http: / / web . archive . org / web / 20100504071154 / http: / / www . facebook . com / >
2020-07-18 12:52:09 +02:00
> Please note that if you only specify the year, the current month and day are default arguments for month and day respectively. Just putting the year parameter would not return the archive closer to January but the current month you are using the package. You need to specify the month "1" for January , 2 for february and so on.
2020-05-04 17:36:00 +02:00
2020-05-05 05:33:16 +02:00
> Do not pad (don't use zeros in the month, year, day, minute, and hour arguments). e.g. For January, set month = 1 and not month = 01.
2020-07-18 12:52:09 +02:00
#### Get the content of webpage using get()
2020-05-05 05:33:16 +02:00
```python
2020-07-18 12:52:09 +02:00
import waybackpy
2020-05-05 05:33:16 +02:00
# retriving the webpage from any url including the archived urls. Don't need to import other libraies :)
2020-07-18 12:52:09 +02:00
# supported argumnets encoding and user_agent
target = waybackpy.Url("google.com", "any-user_agent")
oldest_url = target.oldest()
webpage = target.get(oldest_url) # We are getting the source of oldest archive of google.com.
2020-05-05 05:33:16 +02:00
print(webpage)
```
2020-07-18 12:52:09 +02:00
> This should print the source code for oldest archive of google.com. If no URL is passed in get() then it should retrive the source code of google.com and not any archive.
2020-05-05 05:33:16 +02:00
2020-05-07 15:32:12 +02:00
#### Count total archives for an URL using total_archives()
2020-05-07 11:42:37 +02:00
```python
2020-07-18 12:52:09 +02:00
from waybackpy import Url
# retriving the content of a webpage from any url including but not limited to the archived urls.
count = Url("https://en.wikipedia.org/wiki/Python (programming language)", "User-Agent").total_archives()
2020-05-07 11:42:37 +02:00
print(count)
```
> This should print an integer (int), which is the number of total archives on archive.org
2020-07-18 12:52:09 +02:00
2020-05-05 14:17:00 +02:00
## Tests
* [Here ](https://github.com/akamhy/waybackpy/tree/master/tests )
2020-07-18 12:52:09 +02:00
2020-05-05 05:33:16 +02:00
## Dependency
2020-07-18 12:52:09 +02:00
* None, just python standard libraries (re, json, urllib and datetime). Both python 2 and 3 are supported :)
2020-05-04 17:36:00 +02:00
## License
2020-05-05 14:14:12 +02:00
[MIT License ](https://github.com/akamhy/waybackpy/blob/master/LICENSE )