From 3c53b411b0db89b5071dcd97e5084335924d6802 Mon Sep 17 00:00:00 2001 From: Akash Mahanty Date: Sun, 13 Dec 2020 23:08:16 +0530 Subject: [PATCH] Improve the appearance of readme (#45) * replaced text header wth image * svg * Update README.md * Update README.md * Update README.md * level 2 * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Create CONTRIBUTING.md * Update README.md * Add files via upload * Update README.md * Delete waybackpy-colored 284.png * Delete waybackpy colored.png * Update README.md * Update index.rst * Update index.rst * Update index.rst * Update setup.py * Delete index.rst * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md --- CONTRIBUTING.md | 49 +++ README.md | 65 ++-- assets/waybackpy colored.png | Bin 57277 -> 0 bytes assets/waybackpy-colored 284.png | Bin 18807 -> 0 bytes assets/waybackpy_logo.svg | 85 +++++ index.rst | 525 ------------------------------- setup.py | 3 +- 7 files changed, 174 insertions(+), 553 deletions(-) create mode 100644 CONTRIBUTING.md delete mode 100644 assets/waybackpy colored.png delete mode 100644 assets/waybackpy-colored 284.png create mode 100644 assets/waybackpy_logo.svg delete mode 100644 index.rst diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..1ad7ca3 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,49 @@ +# Contributing to Transcriptase +We love your input! We want to make contributing to this project as easy and transparent as possible, whether it's: + +- Reporting a bug +- Discussing the current state of the code +- Submitting a fix +- Proposing new features +- Becoming a maintainer + +## We Develop with Github +We use github to host code, to track issues and feature requests, as well as accept pull requests. + +## We Use [Github Flow](https://guides.github.com/introduction/flow/index.html), So All Code Changes Happen Through Pull Requests +Pull requests are the best way to propose changes to the codebase (we use [Github Flow](https://guides.github.com/introduction/flow/index.html)). We actively welcome your pull requests: + +1. Fork the repo and create your branch from `master`. +2. If you've added code that should be tested, add tests. +3. If you've changed APIs, update the documentation. +4. Ensure the test suite passes. +5. Make sure your code lints. +6. Issue that pull request! + +## Any contributions you make will be under the MIT Software License +In short, when you submit code changes, your submissions are understood to be under the same [MIT License](https://github.com/akamhy/waybackpy/blob/master/LICENSE) that covers the project. Feel free to contact the maintainers if that's a concern. + +## Report bugs using Github's [issues](https://github.com/akamhy/waybackpy/issues) +We use GitHub issues to track public bugs. Report a bug by [opening a new issue](https://github.com/akamhy/waybackpy/issues/new); it's that easy! + +## Write bug reports with detail, background, and sample code +**Great Bug Reports** tend to have: + +- A quick summary and/or background +- Steps to reproduce + - Be specific! + - Give sample code if you can. +- What you expected would happen +- What actually happens +- Notes (possibly including why you think this might be happening, or stuff you tried that didn't work) + +People *love* thorough bug reports. I'm not even kidding. + +## Use a Consistent Coding Style +* You can try running `flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics` for style unification. + +## License +By contributing, you agree that your contributions will be licensed under its [MIT License](https://github.com/akamhy/waybackpy/blob/master/LICENSE). + +## References +This document is forked from [this gist](https://gist.github.com/briandk/3d2e8b3ec8daf5a27a62) by [briandk](https://github.com/briandk) which was itself adapted from the open-source contribution guidelines for [Facebook's Draft](https://github.com/facebook/draft-js/blob/a9316a723f9e918afde44dea68b5f9f39b7d9b00/CONTRIBUTING.md) diff --git a/README.md b/README.md index 323e09b..6f40907 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,25 @@ -# waybackpy +
+
+
-![contributions welcome](https://img.shields.io/static/v1.svg?label=Contributions&message=Welcome&color=0059b3&style=flat-square) +----------------- + +## Python package & CLI tool that interfaces with the Wayback Machine API. +[![pypi](https://img.shields.io/pypi/v/waybackpy.svg)](https://pypi.org/project/waybackpy/) +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/akamhy/waybackpy/blob/master/LICENSE) [![Build Status](https://github.com/akamhy/waybackpy/workflows/CI/badge.svg)](https://github.com/akamhy/waybackpy/actions) [![codecov](https://codecov.io/gh/akamhy/waybackpy/branch/master/graph/badge.svg)](https://codecov.io/gh/akamhy/waybackpy) +[![contributions welcome](https://img.shields.io/static/v1.svg?label=Contributions&message=Welcome&color=0059b3&style=flat-square)](https://github.com/akamhy/waybackpy/blob/master/CONTRIBUTING.md) +[![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) [![Downloads](https://pepy.tech/badge/waybackpy/month)](https://pepy.tech/project/waybackpy) [![Release](https://img.shields.io/github/v/release/akamhy/waybackpy.svg)](https://github.com/akamhy/waybackpy/releases) -[![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) [![Maintainability](https://api.codeclimate.com/v1/badges/942f13d8177a56c1c906/maintainability)](https://codeclimate.com/github/akamhy/waybackpy/maintainability) [![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg)](https://www.python.org/) -[![pypi](https://img.shields.io/pypi/v/waybackpy.svg)](https://pypi.org/project/waybackpy/) -![PyPI - Python Version](https://img.shields.io/pypi/pyversions/waybackpy?style=flat-square) [![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://github.com/akamhy/waybackpy/graphs/commit-activity) -![Repo size](https://img.shields.io/github/repo-size/akamhy/waybackpy.svg?label=Repo%20size&style=flat-square) -[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/akamhy/waybackpy/blob/master/LICENSE) +[![GitHub last commit](https://img.shields.io/github/last-commit/akamhy/waybackpy?color=blue&style=flat-square)](https://github.com/akamhy/waybackpy/commits/master) +![PyPI - Python Version](https://img.shields.io/pypi/pyversions/waybackpy?style=flat-square) -![Wayback Machine](https://raw.githubusercontent.com/akamhy/waybackpy/master/assets/waybackpy-colored%20284.png) -Waybackpy is a Python package that interfaces with [Internet Archive](https://en.wikipedia.org/wiki/Internet_Archive)'s [Wayback Machine](https://en.wikipedia.org/wiki/Wayback_Machine) API. Archive webpages and retrieve archived webpages easily. Table of contents ================= @@ -29,8 +32,8 @@ Table of contents * [Saving a webpage](#capturing-aka-saving-an-url-using-save) * [Retrieving archive](#retrieving-the-archive-for-an-url-using-archive_url) * [Retrieving the oldest archive](#retrieving-the-oldest-archive-for-an-url-using-oldest) - * [Retrieving the recent most/newest archive](#retrieving-the-newest-archive-for-an-url-using-newest) - * [Retrieving the JSON response of availability API](#retrieving-the-json-reponse-for-the-avaliblity-api-request) + * [Retrieving the latest/newest archive](#retrieving-the-newest-archive-for-an-url-using-newest) + * [Retrieving the JSON response of availability API](#retrieving-the-json-response-for-the-availability-api-request) * [Retrieving archive close to a specified year, month, day, hour, and minute](#retrieving-archive-close-to-a-specified-year-month-day-hour-and-minute-using-near) * [Get the content of webpage](#get-the-content-of-webpage-using-get) * [Count total archives for an URL](#count-total-archives-for-an-url-using-total_archives) @@ -49,8 +52,6 @@ Table of contents * [Tests](#tests) -* [Dependency](#dependency) - * [Packaging](#packaging) * [License](#license) @@ -75,7 +76,7 @@ pip install git+https://github.com/akamhy/waybackpy.git ### As a Python package -#### Capturing aka Saving an url using save() +#### Capturing aka Saving an URL using save() ```python import waybackpy @@ -151,7 +152,7 @@ https://web.archive.org/web/20201016150543/https://www.facebook.com/ Try this out in your browser @ -#### Retrieving the JSON reponse for the avaliblity API request +#### Retrieving the JSON response for the availability API request ```python import waybackpy @@ -219,7 +220,7 @@ print(github_archive_near_2018_4_july_9_2_am) https://web.archive.org/web/20180704090245/https://github.com/ ``` -The package doesn't support second argument yet. You are encourged to create a PR ;) +The package doesn't support the seconds' argument yet. You are encouraged to create a PR ;) Try this out in your browser @ @@ -373,10 +374,10 @@ https://web.archive.org/web/20120512142515/https://www.facebook.com/ #### Get the source code ```bash -waybackpy --url google.com --user_agent "my-unique-user-agent" --get url # Prints the source code of the url +waybackpy --url google.com --user_agent "my-unique-user-agent" --get url # Prints the source code of the URL waybackpy --url google.com --user_agent "my-unique-user-agent" --get oldest # Prints the source code of the oldest archive waybackpy --url google.com --user_agent "my-unique-user-agent" --get newest # Prints the source code of the newest archive -waybackpy --url google.com --user_agent "my-unique-user-agent" --get save # Save a new archive on wayback machine then print the source code of this archive. +waybackpy --url google.com --user_agent "my-unique-user-agent" --get save # Save a new archive on Wayback machine then print the source code of this archive. ``` Try this out in your browser @ @@ -402,7 +403,7 @@ waybackpy --url akamhy.github.io --user_agent "my-user-agent" --known_urls --ali waybackpy --url akamhy.github.io --user_agent "my-user-agent" --known_urls --subdomain -# Prints all known URLs under akamhy.github.io inclusing subdomain +# Prints all known URLs under akamhy.github.io including subdomain waybackpy --url akamhy.github.io --user_agent "my-user-agent" --known_urls --subdomain --alive @@ -414,19 +415,29 @@ waybackpy --url akamhy.github.io --user_agent "my-user-agent" --known_urls --sub ## Tests -[Here](https://github.com/akamhy/waybackpy/tree/master/tests) - To run tests locally: +1) Install or update the testing/coverage tools + ```bash -pip install -U pytest -pip install codecov -pip install pytest pytest-cov -cd tests -pytest --cov=../waybackpy -python -m codecov #For reporting coverage on Codecov +pip install codecov pytest pytest-cov -U ``` +2) Inside the repository run the following commands + +```bash +pytest --cov=waybackpy tests/ +``` + +3) To report coverage run + +```bash +bash <(curl -s https://codecov.io/bash) -t SECRET_CODECOV_TOKEN +``` + +You can find the tests [here](https://github.com/akamhy/waybackpy/tree/master/tests). + + ## Packaging 1. Increment version. diff --git a/assets/waybackpy colored.png b/assets/waybackpy colored.png deleted file mode 100644 index ea8f46aef72c77c256e991edd17b875574d740d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57277 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 diff --git a/assets/waybackpy-colored 284.png b/assets/waybackpy-colored 284.png deleted file mode 100644 index a2567701a7f9fb9fc054d831629a9440869541c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18807 zcmW(+1z1$u7DgIGq`RaWq`MIY8G2Bp8wBYFL6pu*H%Lo&cT1OacT1Pl+q}=XUYMD4 z&faVNwKl;jN^-BzNzmco;9f!GWz^u{UXX!*v!Nn`zrAw*=z#wqnoB|@;ovGFU)~!c zf&Zs6mREzq!FkZb!F}_CgZl@*^lcXo&Y2SqZr=b7PACx$j?gZ(QB?$d1KH@koDAI4 z^RJ&R`7z)tC{7TlEXpPt3L!N|_mH_A9Gtu-L`G7>ZT_gmHJ0o$>G+{w43^fE?roK*1! z|NV!Bn#r2U8cv^|p7eKbQCAmsOsT6oB+niFP4~Fvc*}F-XP4q-na}C1=;$>X9UML7 zy0ll&>r=UJ_bW@juTS4R68(qt;>Fm|lh0BaJ1mQNv-{1ksPMbUM7=&MWcPLGWF7zBKH|z_F7V+`f&x(sfAX>1VTloAy~&I|0OOIJ)?8XB0gf72UD&f za=d~J75@EpfP5Y=rc0RPFYXSXghl)tniP$2cET@u9MM#(QKrkplsgteU!HUc5NRbP zxS?U(Lm}^@e>n9@}LbaqQRd3Ds~poAupz^IC-LgL;oKu0faDg6XQp#b$q%t!2{3T zJ3K@JB>180+c8DlB_5_^dK6qVjGy8OG%!~9)&Gz}JPO#fm?5FT^Ri<*KP!5})uXJ} zGPS!d8%ztCH5S>4weU_FO_}e}D{22zBy@K?MwQIytaN{)5hyRoy-PkaMmX%Se9uY9 zR=S?K;%Y#IESVw2rA~{dg7q!E14Hx&F~(%~o6ujFQ6DQMb|eBmW}T$(e8f^X=fV!K zRAL#+`(tM!X;3;U_hZoCCi!B^!6|QY==yH2-;DV8*76K87LqStS%M?{i+3-PFeYWGuZ<8rYWr(@X0OU2w#!Q$4Xyr6lW2Wc*U2ZbYs6TamTz5> zC6oP~65rJjugEgsi12#|_0~ zh`B#{d}xl5SDcHN#%tijGm>TW(~kb70fP(4>(|MMeAI~uA7@N9q+)`%ir1{#SS4a1 z@YAaKg`^{|ylAkqoWc_d8wWxt%0orea3zevBub;W??`z3h%b;u1_NM8{XOmJ~>z z-lZ5&Ay%1d79O~!5R+gnNV~ib$!eF~3D9cEA<^aM42!-x`}dbo`zk`I!9^WC^;3S# zLQ1kgx-5IKY{iQDtx1%3MU3%WSE^mT=H3{%<91Y=SQz? zMP^tWc?FTX?#_8hN%gJQuPk|;Nr5P(jW|=A(lQ2HB9W;T@ht-ueE$P0D?tvt%9^As zORmJhv~i^}I{|^RtnUrp;&CCJeftNNmu|m_k;SyOg#$6)mZm*)x9R`>E)iE~lt@qG z-x*t1ByY*RPpN`JfaI%1@!IjLSaapj$ISNHk6}@rNwzg-9vPJAZznf0N4D1U{&{>( zQ;P1P##G(BlZ%X=y1ZU2BZ2jB3~CfH7t+2>9;Hd72ls63>|E_8f(MOp%akyum)7SS zG+>we$J$z?riv;^My5o+rf{j0#4fQ+mNq9A8-v2aE z&OhB3FZ}5{yP|q&hTNWWLEOPL`Aw(vH)Sn`8m{K;#ndp_k;2(YBd$dc_i@cXX2K8p zSZn9})ee7)sq(ZYT;AcjdjxVdH@G?tj6#|0@Kn3sgkWqtc$r>VlPuY&^-%XsT7Fux z0b6Ph&F);2z>$r}Rr4#Bz7K!6BTh5I^)yLR=H*o_DMTd06kC{36GFw^b`gnL^Y4(1 z$W!ymZb>Vm#?~Vvq2}({{%qHfxOF*yRR!108~!!8J2tRtZep6Nab#sUr7uJ!h#8hU zzgK;?iX&_DtH^lcH|i)RhN7S$rm749A~PB0cT5xttzMeJFe{QiH72i0MS0aRj32m3 z82*++@LE{)^f-ojGlK?vgB>O~F*pUpEO@`_6h{$)5w&yy;D#F}=g+poQ-xADTFy61 z5f?JzsNv~E`uSMoJR#euqUk0_Kfzo&d8h8ZA@L(4Us)wQl#5JFY^PRDC&qlzeG>%VWI1e%p!o`^VX$kz?bzf+34gdKYuioqm% zY_bm z?0s&;Kic;8a?aNhaYQ~-LTVC~1^ta|X2(%44|Lv3Oh%#h*jQAQ6%|nh(f624x`9PaOB!N28os(k zWg777!QSmR$>R;Y$3&@W)@$SEr@`fK(5P^kbhfrr9+~0Sjr4tiLq)6=!o!@C`s!D#K@5)a}v2<$q zPd3V=;&;` z6zX81+e->4=4Q<{&q}cO%`fXw93O2}v9bLrWF}W1;)vzxa4Ad3^h&2s2>rUTVd9)t zUZ|8@MGzS%oSf{&5JlxpkZdTgT5rCssG+*~x~oe^RlQ5@^Jfc(rv7~)dX-}bC{C#j zr1Qu@b;rS8iK;y=3N_NnzNoOiF)x5V5+(np6pb6Z(UMD( zF_qem_C3}kOqRcfvqM=2_ZdQ9giC%4z%FgYl?eYohr?Qn_$ zXOCLB_&Aq$ef>TEaQjZQ@|q?|QR-r2Uc|CRMEOhyY_MpLe1tPSUD1>gGb(iS)udqJ z+WAcFN&owO`+j({aS1G{GGdWO1rBkqL&noT7oG+RzAtOpFC&ksPdePE#F{rA+wpAh&4I+R_U~6bF|Zb76PHB zri1Pmw%5)s=~--ayy5O*lnljCvB`rT9w@aE1Gr#-<(d2kLU_C5Vy$kT@XM~QeCtiW zywiabPS=`hJ3~`COjX+a1M9;*!-H9(VH^JUEX?(lc>#dy&+omr|2@FbEq8GKCySjx z7uG%j&+}@S(=LSCI}l+9Vw`$#UDbZP)7lm2?r35%Pr8JtlryQLsS9n%s}QEx3Hax6 zuU;HTi>iYkd;+ege06CrB>%mA3kKVCN&`jiGch66zP8%aAvyBW|05RaYPrtr_sioP z@1$G=B733RiDE4sJ@qaQ){YpV;A0l6?3W0>>WD-Aze#(UlAR>t8%k^AIYtsY1Ur6; zj^^=3f@X`zQM=#WRZXWPs}?UKrT^5?{ss*XT_{eBfn5u3DOJ-S2T|Z{qS>G?QJ&$1 zcrr^=i#Jk<1r{dbqL(W9i^vVUOx1}Yg*G0fnBMXMcgOE!`wCG51h+H!!oSc87rosP zLRiz!+*QAkv>~YC-B9w68Yuk;e7Zi}Ao~k>vFhAERO}d|NZ4?fZ1%UY5G{e#hyaT9 z(;~6C-1NUYN>Qn&-+K+sOh^%EWbgB_zt#2i);BkjRD)^JrMyZf1e<0+o^$rJ7Y;tj^S)yHx zD2u9`mWUR{$~Ahtlb*y)JhV0IgF~D&?W`HlRa{UgRqIxsfP&(_`WqW#ax+!pTbAW| zoM~-DcxDjwOZXRx?Vb~v9Fbi#A+_Jwo2*_2_*%F>4g?9LEoyw|Yw^4qOB+`D3ipk^ zj#LphpOI_wAa{8y`AiG6-&K3NCHjcDgw+{WK$B+8d5YDs+@2Qvg!%@hZ z*ksQ|v0FN3YXYi!|trOy8%%QL_xM?tbaRi}Fbl~)nTUeWR^;r43y*}^l!a?rbhG5SFEWo0Hi|!!ao0lYQ zQ}?rd(=BC{+1rI3VdKEVV1(vqzYpRjv44s+!(&rimOpUDr5LCHqtj)rbhZv#_Zv3(o*$AyQdHIii+G}#Lp%J%KP<$|6UNU)F0dcZC z;S>OM+2coIri$7A@IM;J5aw9FHjwG=@oXe(QeR}!^29(sDRG&mMRyNMOFKc0l{%WF z7_?Z=P6Lqd2{O2rs(6(c#=X+hPH(C!VDw{Y{bQ>R_8;EA3{+zR@X0_*depEhpMSeH zo-Hyy)3;!3Y#rI-R#_Gagy|f9q&g=CP*ygenq@UqP0U3`7Aj_Q9INvRLwKjAVtPeQ zSCD+ut>afNFR&(gq(VB)lT)4%MMF3(Kg^LaVPkDXsnzF#(GwR+w?Ap?#x!re!miL9fR*j8};Xa>Ymkf@9OH1H?GrsTR#$Lssmknintxi(V z@0Y?Z-if@PAF8r=)LA1X*`7@1S^3dt6K;N-BZAM*9 zsw2XSc$mhlOg5Z}Q<`Fhynj}z=6@xH#U}Qg@++%U21xcu@QCD?O(j4V#8w4{1(KN@7usN} z&sJ}J?=UI1-Gqi2NJwsU-oL~rK;czmJXsCKZMKXmb=S@3j*%olB>Uc8^6C}c(MirJ z@D$$j;~jYxvCW1*iIM5;zJ6f?O!AQ!b0d}(*|9+#)qK41RvASSYgSlHse4akBQ+^@ zajTA(?<{c55R)!OUF-uV#$t3gFi-XhIKUCbYig|4OjlVDi7d?Yf%;k0&{x)*0XMrU zBQ&fcHd^bJnh+QuAda_wl}As2^rQJLS0~V``H5|MEPvJ&vA+E>4e@C#2p%jd0$wdk zN|iq85V_peE7j*I zAH!Ht6XQdK`G)CHg~(__WWh`31M@A&Rr>IZxqRs(1ChL+V&U^GlEL?IdZ?eg?ggfl z7+9n-)#tgGEOBS1<22UljNbx*6&K{}Xy%+&)6#O^+O|S4*3v-sv^>@G!E9IxTlOj< zl6&$%)HGdjRi3Lq9_>M0CJI#4QW6HBTTMTyXA-Kc5_xJgwSl6%Kpo)PGm1KwesgyY zq5}8{9!I{egWTbRG|g4O{53T-&+RFrZ)$S}L@7UAVF!}fQ_9Zqpuj0~(-w;3EcA#BBvFQV4IXydTDb0Z{ z`-4G`vil9%uB@?#`sek3-!N_)(sR=LiFS1e%+=s{T$v;3Dx25@Go46D&mxvoE6 z56*fBjFjo^ZCUY;wjammO(`h0mj!v5Mn{!-@jc15uBMV}$ z&xyoNJG=C3fEMKDWz#O5-O9uQ&VT}vwdCO3D%?Q7VDvV9@7UagB)Sd*f>lpNmNy;p zgvNsIi?&>Fw)t!VC-y8iV89j>;`@V~!cIGI=cwZCG8u7Fe0MzCtDIVdZZEd}-=F(U_DMJi7MNkVGkOamRR%2Z+KtKAzR`>N+6ugpDeg8U$i+ zY#qiCGrhS8ZXR^VgIA-r)IRngmZ)GMV$#NtL2`qvNPLJW%%~Ew4T$o?#LbDw6zB!x z72c{brW$p^n9(bwd=)F)dPS|^Lw`t$8K3gvW)Lz8qI=KH_0O!h2lBs@8)c?sNt=Z1 zIG?$<(AtfhWaB#lXqDf|zcLDj|AoUyO(cupnC#+0PQLR|KbiD{29zn*0qKXn?e5OC zEoN4l>`KH{&drW_lfZn66c1FU%fNtkuuWv4KQo<{BHzzVQ>~k%Z%#}gb}-GEQ%6Ge zmz_X;Nv1F0$WI~^DYL985~SIxF1;K1|5fH&BZqogUf=%Gz>7!zVG_~PJY&uNVZdI?R z^cFK7@V|TK=IoXjR+_PH_?AsFTLFi%pdfQvVX6E{2~t0L;$~4*jo!w}J-M-#EblkU z$G`CD50m4Iu&wi2;f)8YjUw2nZ{-A}Wg7~70HG^;Vtt}Ct#hb{?H<`68Z@jEE9OBn+MXjD6~o zkOS89Z}4=4H$E7cT&bgN`OR%vHqreA`S_T)J~Cb1OfO?_Sdb)ekQNJnBRRqk*`Abd z>l`eIdoA` z$o9=7*~C%EYK2IKAhTw^C(qT0w#uCH#C^Iy1rTg)c=-6LOU6|%R&mc?g?vlo33Cr3(Baj*#2KCg}7ot0V4|d`LbiF^Ia1|b@yq7DOtT4_WUYCoJK>K#) zxQ@3Z!YP@}*jVP={n@#4v$5Ueb7}#w$gs9H0ojY(2o>2i9gfKO!XTmfP&Jf^&dgk2kZFjcrDxOj3D(e3 z5L{wx93!F`O@*ZvJDI$trORMy`NyBz0>>2BmKiueC5VTzpmXl3ZVX5o<@m)Uz4@wop#Lcp#0cKc1+Y$FZ`3R`4d=w zwHGPen;jESar|>*+*qRtkQ)3>1r=+w(taEycSo6P5g`VyIN&`6=AlEN&ny zlm_*?gzBWb`wZh!m*8i3^vGsD&XRY0nR9 zWtv}YpYP`NgPh?xI#7j8#nPGyZf`cL1U0sb0p1;|T37v9z2?$uly8B`Kw~6}FAZs$ z!;Q>Fg$JroT-^RUekK-6=bAeGG7psCgT~3Yyx&G&WX9DrTTDHOIqGCyuBOLtjg=ZMvhC>o&%l|d%V-Ffto9TbB+_@? zifHLRNd%|B(>bb(4!c58AXpaHw*tuu749Z}DWoJP16&!FmWH;}9o!EO$4qTjALPD& z%#!#bA^1f;$gurPljF6wVT35EuNp-hYj6;}Q{;BT{vtX7j|WzmLusd<{mU^NO@TiN zhD#CHBi$P|!s#YE754L1squZE_xtgRYdrIXhe=V4sx^de*L*G}ggrc7xihEMKwz90 zAOX0jnni`r-JML#Q_W-)piflS(ltMrO(f^2;)q&(67`71)m$9yKLUyi*+FpIt>s?) z=m>}-+oD!@y0r@1n=2iMt0oIlP^NTO4SdX)G`?{w$FK*mH?dOiRx@5^Yzn-lMj$;;rXeRFXFv$#O-rX z|0S zpN?x6mnjiJo>g2(=QxlYStU8A&0A`@`0+zu&orHdN{H^iXNz+!>gNJCRN#!QBBR*F z`nGZMVKhuYL z$#UoF%hAV*{ii)KPGf_1G_VoP0n^_sXXazsg(INyxAHZ(0wvDO4 z&{UK>)BZHiUcbq2666{s1`xGj=RXUVMIQcEOQdx+Oytr1-q^gkO{fij5!*SoLf-0L zGy{r*VDIREI!UYqdxK_s^0@+u@^(}}(K5@<=_= zYqDZqkX?W`vFr~;rM@x+jJ_35;!v(-^%teCIA{^{F@Kb#-zfp#4&day<#nu0WUAqb ziS04dtrF58i*e#MlUW=sD&DIfa*a(|aY~M^RxE}1f2I?L&&mKqL|ZxAP__5%?;q~2 z&*_!1{ZcfLq>^YElzlfdmmxp4eg1Z4;9~|lJ)PQVc1;b)KsnB9&)_z}8m=#2Q{_qG%op#T}0{+A(xi?B91Xwb#W0SoN ziLv!{R@B%42E!~#0xWUZ@EA#uBhYL-JV)hmpz-auRP?aMkDI`IiOtOhF^4pB@pOYL zysPv4;ZIX9;o8GFMa_A{>kG;ZO`sOuGrO%^4AA_bfym}NtD=e&DEvs{rMqNfZlKK`) znO~8QB8=M$;YMa8w@=xw7Y_;4?#l4yAnw;@?L~@IYP2{ zvLRTFOyxIrU~<{BvBpwmz7a*6Vuy$53;boUqM4c}wVkXpuYNM`%Q~1?_M#H8GdtmB z{ERt7Ru)2&H1@88b5}9Hz_sBp%vcNSM&6mXOcQpRvb;PQ9o26Xm1UWw$VtcDI0AIM zW@I3U7Tyd#cnayU7Bl`yeOFH!&+r}*1Wgs5Ua4Vm_X3Hdj?Q1$97||tVp^(@}!@PNa*7lZlx=oCipL5Q4@mgn!2FFN9fHJe+VI6t@pQ zT2Dv#rK2mURzpv&LsJb`v1ChwWdsrx9jMdHoMBVdqX+S;-g#{q-?}=G);J&LSYNRd z?)Xc^IQ#;mr1wQdw~?8d+-Cs+Xk~vR9cKoZw`Fwl@!`J16*PAoFH@}T+D(5#P}!Vl zqhSiS&ZM>IRg;Bh51wXbu#uG^cyFffuf0BnV9!ShNq3fQo10Sdif~AuxuE3oRV@A8 zl@dVoJ|k_%mbsb1H-;YrsMRn+^ccmIDoMdv+rlB+VIIL)#b{OnvG?tPC#LtB;hwAPRhl1SD%IVZS zO-q!h2}#g&BWR8U6`yySzqr#y=Bfb$QII}%)o)y?F=dG$z>wvos@UT=eCh$5k`EDy zQBs^O?~*rfG3!6+ctVF96{=#!3)3nQ16?d!@uvE$@3|dRAiEg-m@gkED-*+w{Dk(s zz1<=rqlNEx`m*cww3E`eT9SP7S^j9|2}%wuC_ZH8qDm|wgw}2ig9C@YsVTa8re0-h zk9S%l@Ap{!yHkWeGTx)S;jig&oV1eGj`7L&cq%Lfg24>LDM!t(V$uv|Q< z-FQnI+WaNDCoApZ!&Na)y^e(@+INu0RIB`)5efqlSP0dBRenRz%S+bUkhjBU9!FR} zz+kEytR|sv(qU2TtKf};Wmv_qts^>`_fI2E;tt-UxOK)yI9JI zrOR+XRSBpUM^Na{ ziJKc3_aOOxBiCYA8?gL@k9qFoBfd1p`Z`^pLnI@TB*7{=&mx)rNQ}~zhxaseM5!^K z>2@#1biP?HK2X73cJviSYP26oZFQqZLa4v51QW>vkE3AJ#@>+0?y%Y3fXOVE(7>g$ zGo6&T6y;N1OPX!V`ABRWHocMRkIp@ckLs~?$pk4nT62Tzr# zJ0?_i!%Pz3Xr0r31S2|niDmhJXR}j$PH~VcwZPcX*gqHNWjnx;3^MT%i%f~ik0!+` zR9}+BaYGx-ozg&o3UAnh%*zcko zIo*`gm<&Q9fiIf8v1%Mj35a{~rhjd|Y#D1(B+Lxpazk-p(ei|$V3`y5E|o$q2$(Db zHF76CA|hgr-vxt*(uXsF4Kb#Ua*~W-BLhL$Flng4+^B zQ-*11$Q0?du+iTR9>`+L7N#lz3$j%ch24veCwY%Hi-x8cTKRGQaO7&>W0*Dv;G4l=z@80#?mJwAWPc*_!6m%uZbiieV`eHjvX zej9C9t)L2m+h2|iVDL%k*L4rEVp&4LRMf^nQdp+x;N-lVJpPP;+CZDkjJLdbIPwPt zpRds{nq^nRlh#Iv|EAQEcgmG`TMGs+g1cPR-cOADJkKeJTaBN(R1;mBoLvGw^EjPJ zMAg)!_#Y$x)Jy{Au;n}sqOT##S%ViUeHKRo4ZqO9R1|6mquP;EG(X03h%tayW2w|j zU!<`Q-P^bUJDOZ<-lnorT=7N49gXmXD?M^L)oOt zkx`jHAL*g?BoX=66w?A}F>dL>+X*XctA+A8-7B%~#FMm|tY`P_a3Gs5VrFr7bczL2 z_hd^4$FHK`9yS~R_j|9bjP^!FODZa9U!?2!1bR>4w&1hg? z8DeUsJLy6gqcsZkMWAg}jY>*0#52`Q2y#$^!C9iV{rz>0g?Z3T3b}<2(z@ip@|)6j z23W*0{QH+T^)VX~F4fUalU5*uET8AA%r^D*F}oQi$%q#1TOpE7oHjsTu-TgNIovs> zBDNQ$B;l!54|g(QFm51(89gltBjHorSYC#rFXo_21}6Op2wK^RN!E=oFDKEhmXT6tB+_USLehaAN?s8*t{{M6%)pPA`FA2c+${2eo{y+&*GT5F?PY zC&tOtgYn)CUK|p>YEJ)=nLq{reXr(B-=AHEDIe*n66pbNg1Hs3uDGm49Cn3*&S7w0 zLrx=!>H2*#J(F%eO`KHqPykoP8v}ohkG6Qf_l3amFkRLO+m<8)bJll0e1or?onwLy zK;we2N_H~m=K&dnKG=!`Q&pryTdT5=tyMta_fkp8(CM8jk}toU97HS7V_}vEVfy1M zg*}eZ*O=?B0swJO*T=BnGAa;xVg=~SV0UKJ4vk7N3&Zt!r=hqEvkCHcmar+>@Np(c z%)pFN&59lcSq@9gTJ-)tljG{oZtcgs{6J6;gaKVK6P|$oM|t=isiF*yd3t8l-N{>i zbrJKVc4%O$!j-9c`26v?Y|^+_in{vDV53EqKJB(9@xAbiK;kR4mped%N?idnJqjDDABEZ=mVwVU;FG)tH zv7MTxARFS7&Au^7>d=Y6J}`sHoL0m4u|PncI-LG2A2HR|?CeyVT( zW1=ax0<$yNDcMKFD-k&%v^egBq%tIgNwZ{^S97Xq5Ahi+!Fqr@ka>wTf`(`<H9##*VA>p}WUcuH}UGacB$(rp3m`+T}Cb$4#Q~*G^)iD|E_tdpbI*6v72k6+y_B zF!6>p{U@2Au!$u%kkIj?+?6!`T7+cg~Z*fW~2IPLhX<5|0y3gk~OAgzgaO5RDm-B z!se?VD8j;MEFnj-Br`ng$!3(RE%}z_LLi+|S_>R_5&vx%=@kenk!9keYJ)bC^f&;u zbEXcyL5FvIcvMp@w{}sxD7Q&&CJ%j^II4c^bXG|BOY?&!*UE99DJ;P0)2XICw2C7% zy8y3g!yc$UhXBdA!ZUEcWszaC2NQ=b=PswA=0qkfKUhjY;;&r?Z&5-!u&tLhu#2 z1jz%{b5j4o%w`FufBpGq5)s+@^i$j|173~*5gcu7CJ5)6Io|oOv=oMiuJcJZ{6qYa z2g}xi$>`0Eywa)d`U!z9nb}16rhuU#;h+%fZNXt){ee0kw&l$ z3sb~-Oc*-(Z-~@dEGldHc=ffM`XTvH1?T!^-mN#@`xrY^yA2Ua;k!yQ(tcbANSMj; z9gFMoOY}xaxEyuTK82bvio?UrRZF+b*YNp_M(rpg2e)l#?2s%Aq9?lJV}ft=34^84vvK`cfMoe? zTLydLrlwq&u=3;fPryQgqs-hQ6fWIB(og=@6zEQ3r*30CZ-^(*eqZ9;FiR9Z5v63T za>n>KsE7VkUSF&YK2qA`y>dKBnT)!G;ju~tG>y1Wgo|BH%Lj{*gx+|LI@BtSjDl$_ z!R@KT*&HE|vHX`N-C_LfVq8yth?flntBiRW-1JWT!}DZ5qq7R_ngc=|sy6 zdA$DP`Q=*re&t0!GZ}{(7d~|GQkT63{rKy~j9?l#4GhW6`k6vcD)$amfb7cZyYf57 z_Kq#?r5tqRxhx2mtsUbh15Q}#^2@uvGnF(%RmM|jG!<3wf8&bi|9pmfPFp{ffXPX7 zV=}r{9ylUk$1E!Yn~RfAozlh@?+&~X$2Mh0Q<%3EjIb1v^D}9{ynKysy2`pd&q?kO z&{584G(8pd5*hp6yW1|&0EU10>eY>xSZ`k+8Y29!LWPQtsdzNhO231XOTE6)LNqir z*H7I}ZoP7;C3@DI=!ld?UPqgn3@%WGP=BWae{~rA7ZQSwC!49lm^xMTdEo2$-NTh zV;NoReiS0Z+~42Fl8stKam&A%yO6^|EG#Vi_3IZEuj~t+ghBtwz3Q3mP4_tZ%}MuS zHPT+KaY_Q7S2DU*@(+W`_V#T z{;{IMV+JB<#h>1K1!V;p62;8_M;mOw8I;Ai+bFhozE$<%ksk{c3l)(Q8e>#pk&*Vg zvMjIbjyilWQPh@V<>sm`X<=EZ;$!!k9jB0x0(I1Cp!ofp?CfkE$6;Pp?bD)PwQlxi(xSS~{EUbL3F*d+eR#eorb6#OONMJUcENg5`bLvJW zt9t0a3wkG*A)P8p-fobsuH0gr8i&As$DzSafDCK}7Y|RjRar}~F9OOTbl0K5!omW) z609`@xOEUadx?9n^f-Zmp(`_vtR&w`2wzuP#{ z-VSHme2OgWa%j*SM!aa(_3F>m)LStzn`^CjQ)Fahx82M@qQrIQPMf+ESdk`nrJBh1 z4l1};uU@%{P*8Z^7zzmq)!(d#Hh@3<PyDNJbSzfv+jIkLp(P%F1l#rRhSb!K)E} zNNT|7V*2fN$KHJU^r`-0;{AJDG9q%*z6kP*%S(Iklq#yK9n!Bw5!;Kks_NGQNbA=_ zSZ2!&5uPrTpJeD`GHYw&{a+GNqrwNvd`CdR#ER@g3+zgDU3SlnF6gJtvs7cm8*?Uy z!TQar>UG%7MpAN=mjS-g9h$6?r$~-1={-Y+`B(HeX+b+$*kys~bFHoU+(fR1R)Y{`;15x7U~FY2a^|3hVfoFyc~5u+O%cho>>jHC(A zRhhqzlJ_erYfZ*y(Ht8a`({WK78$9|h$rB3Nc40Q`ScsKgvIC2>s1*KtdtMCa`pmb z_j4H!#Bvd2U<>iI;&sPU;4JMpNMSA(^ zu*=EGq3k)$PbZU2;t|_gSgaoCKM7r4UYb;CnGGdMR(#w9_uLGM9!|%33byDxqnqma zx8ZrmoLpV2K)*h(gOITBZO3cx_7vMz2y>j!)^@CE5~*!-6iaFS_r^w{bdP-|3b)l4 zHZ7N$t*7C(prYq$tO&v0irj9-Jb$K>vvZ~;3BcAt_NFinueFyv{QQ&i^8>YC7TnhS z2>~9iPG&sve9*B+0{i{^uKP^}al?^RL9d4cee6$ z{!$t+82DWMyZM<}u%ywn70)-^dS}DlxJ%6gHNO74wCK9>6*RL5#cRsj-*V3#u2pG* z20%cASr%+q?Sjol>)qdt?qFOUpNC5wfN}s#u3N7~KU-Pdo+Y#m^$_Y0;VO$rnw#&$ z9<164d~9}m`$5m0j@xWVBHpz1EUv8F`@sXQu&Ag3)QF|Ebxvz*y8grd2T--7-yBB- z1DlRpQ=Xq&Dzm-g2g>d8b*mg-N)MDJn= zjIh-$c9Od;N`fvDUb)3=EPa0Z=Y`gQZOybj^7`C#QU2a?cy0?~ZnJ0D`TZO9wfH?} zA5h277!g2f)4p+P*MtAT?zrVzO-rjkU+j`;dnid7R7Irtqri76yE)T@3hOzp-rnBb z{ryTLE54Km9PPU+NyL_U7e`{!YruJ$>Dx!^`uXQ3f*1D)Ui_PukjoPxt3h zw80q65%ck>yNUf`8Zl+b?q8PBQ=4h~IR) zo(0Hq>Xv#wDxLw*&%?t5&YErgy6s6+S>zP4KqJIUZ1gwJ9(;1%>0#CAyyM!b8xaM? zw(ZlEEx5y%I~hJ=`u`>pJ~lYe*|t6Kt=w<(2fxc6$`H@6_1Yj^blV7L4C##YzM#=_ zTSG!;XqbHI4-Wu)o?;H^q0UqZ3T1B$qLGUjTV7WB@`der zkpZGeWlA_Z^M+*oH@NlO`2e;}2IJYt1nj=~Jk0o*P8VxEa|91BFE(bNrInTRBoBqx zi6l@HH-GZQWUZ{8AMozDE#o6=Z^q+Z#>C=c80%nd@Tci-pf(}&F*gt1f9p3e(|sP@ zT@Gh`SB}l63Sl~+{Qzy9wj;crMezn-pv6IJ*5mM%fXf(_V^1*tyV#)Pv6suk$9Fa+ z{kp>C=u=};Q$CM5PB7w+A3ut98lvatKfyh-ki*HUBr*z$R;!nw)pRkCNAQz8M=!fM zF=SM83JQYVM3gv*Hm9|1w{CYb%)x^J$k!~>8wLa}01EB3*bUV)O4gLhP)maD*mJ@O zmXXg@1E`2V7rwM{x_atnCzO_>#+2^)SMa%lJw1g%7nf+)oego1{s)GlCR}bMA5`nA zt51?fy#jX9JxBOdUv*KX3{Ol>{^(khh^7UL|J)sAt^W#_-W_7pls#F%_whjAy?ZC% zc0vW-!4B7B6xG@)mSPUB1;kXIWwCZ$#O?XchC{=NcHAncrnIy)>xJ6z+FCxF)>|_& zOq5%%^v6eUt|SbleB3(xgltCi8GRqo;o)IWqRVa@uPEF%vDFIjWLbWdH8v#+BG zJ~}#b(MLf+5p>#BVQLs(7YFb(H8lm^0bcp=@Bmj`S4V>if4$^N2?+CbIQTKWf0G&8 z;rz=~Sg6nKtfH+wI9;OczF&}k=yH9u0LU7MUJaJ)wzd^9x1Cf+%)&yjMqL0r=B(qN8F6VToC>veI}eIG zWRytRq3~2(-fYUM-MLBS7|zEVQXvtcz+An7wDuEep}>r0BC<3cFyirp3+qq zyZgi+?LoYYkWp?#IuYsF!&}%;qKS=uc*xk=t{4B z^$erq`tAYH4XBHkgzU6H^&ZvC%s&(q z7t6q4z>^$(Rb?dr>>v4cPPl}u3E=%8N87V-t6T9F7AsQx%$`uiadxKn3i-#P%fgpu z^$nn@(fPpbw1;qod*?=<+78Z1H^XEF`Ui`?&?wLH4Cug0+ZD0a%M#nQ$}`jTQvrYj z)_m_-395o61G@}YNPu0?dB+@QWMP4-iuc7*-&?QpEF7r6vq27qn0`*jZAAe7&li|$ z@#JsNi74LcBqJp?2FqHk*FplFoUQ#rihzLN2hM)CJ-E<9I(eYrQ2^7K3@7vIc;9Xv zE;Y^k^`VZUA_<>29??$fijwdCtId@}OA?+wu~YEVk|a6rEgzrRwR$wIr!*)T?T-{< zUbBy4kZ9}WzT@i{rTqLQTCnXv;RXV|76}}f*mc7wcKADYP*Pwohtfq;o+C_>&5ygKwD$;^UtmZ2zfIg z2zDElxRL-YX;ZD(_mMxVE`5DlN?>y202H%m7O&1*m6?KVSEQE~O6vveISJ)I1?Zh! zSSZR+@iFYij|-caB}f?y(eqgc=jQ`WuGQ$ohNav=DAt|-+uE8T07#%b_yH8Y z!3i$6nqep4&7YQAyina{|?H`kLGKD+Q(xF5d*9Eosud| ziDr=N8A^brm!0HUwBgsk=_ITNb&nd@RjW>mg$fRZ*NSDl4(#$RJ-CuJ|5Ot?FbmiU z+(_H~U|aR|3TSA5sTXZP-gH{?mz8AAXeTEsJoUR^FU~0W8>-_ z$BIdEo+=|A5gD1uQlqnu>ymTv$BOl8MK=MmT9_8FBRl7yvJoX$a})H|=gc!|7+7$E ze=>%YtN{Y1_oKJy&6jvQTHcGnOemlqO6FowSY_-Z-5-j~h1oV#teM336Y4n@zx^ zGOBoB*+)gM$vE2Xxe5y%x?b_m=5+#40^Vx-SzIOPdkcnS+4YgT&hFP)CO$MWOAToZM}K&n=;z&x5nr-Q4K&hjAMBVz9T}J7^Yv>=3

ra4Co8sSU$1_ z6c+MHt}HAJ0$)^re>SKEG|@?^)X&1g;W^ar?PWd>R?q69^Z@LTROVPUUb|-x3XVV) zG>zBPUjlu|7j@W={6%~aEpkPbmQ^v*xb&}?vpRK zJ^O$RcYCIE;LV=0&%jLU6|YUh7Qy_&!rs9_c4nq8K(H8jS~p-c!54&&=AB(!xC8{` zX>kmJ$q@k}w|m3B)@Eq{xalNbD+14}!!=Od0H&(k&&}f5bq8Mi+(>(PdZHo!_%l82 zu;e^5zPLC9T5Q`&fT9RR#wIW8N-0HTAh=+aNk0yF#Bf6*6E0!^{AsSs z&pCke!Su7-RnyiErG-2vCeKE~bTIz3Y2_i}*@Uj*X51hG_}O~4mCwBf1Q!rK&k7Pq zDN#|;=U_}B7bvgi+5u?sebndi{MkDKiS%Wjm(dCr+|Ky8>U5d@D8Tk-CvgKTftBah zfX#m0vPY=!-})b5nf+HDuj)XLP!Do_(ErN&EJ>a(yO*D_4IUSPf6)#B0O{JZF#xif zh6rN;PkGNB}Rfc$ttABvMJ+C<->knIZ;n6dk2gj#S%DX>pyzmwA|{^R$zlv)BLs zYkfIq3!t(PmRt=xf?+^KCmP~CBGW4h((TfSZq8Ee`;LVv#0o?m+8J;?e~BCx7W4~= z1xojsHYn22`0HX{SM^GY?;>r7u~MF3=9g)`cZ3$y4p4>d`E%1We)t3j>aB9Vb!dys z1RbojrGtW!U#CU~#`{iNPh5e!A4;8*>wEvOJw~ zslM*hH5lhpuO8?i=jApI(lBNuG++(}{1oLvS?Kla*Bf5Xr@S8W39Q8RRgiQ;hDjrpr(|QvF-;UUZmUOY0PN%TI&^} znOZn~^kHlYY*s+NHQ~^fv8AV|^OE))#tfkNb5~aaV=>xcjk(WVI9A%*@gjbANw-+%3cXoesmbbAd3`z(mCs6c&8fZVf^treN#s#HE*w z#x#@%But)Ei=zezMB7fatuEGHve#Fh5Ylvccs%`Sp(buD=C?H?NwB-^)L zJ1S#`Ta;6^v#v9qh_u<2K^dw17(J_d;qq+F3JxB-P=hOeR;HvcVNESpeZTRCIXyS8 z!^)lT9b%ur%|xp!`T3Qi;z}`3SRuxPmP8~GiNuyfV)MSFWL`3d$Jv}naCijaFIXf0 d&jLxg=x9mx|1UUCYv{)U+HQVUx_-xzx^H%Gm5=}c diff --git a/assets/waybackpy_logo.svg b/assets/waybackpy_logo.svg new file mode 100644 index 0000000..1e989d8 --- /dev/null +++ b/assets/waybackpy_logo.svg @@ -0,0 +1,85 @@ + + + + + + + image/svg+xml + + + + + + + waybackpy + + + + + + diff --git a/index.rst b/index.rst deleted file mode 100644 index f6322bd..0000000 --- a/index.rst +++ /dev/null @@ -1,525 +0,0 @@ -waybackpy -========= - -|contributions welcome| |Build Status| |codecov| |Downloads| |Release| -|Codacy Badge| |Maintainability| |CodeFactor| |made-with-python| |pypi| -|PyPI - Python Version| |Maintenance| |Repo size| |License: MIT| - -.. figure:: https://raw.githubusercontent.com/akamhy/waybackpy/master/assets/waybackpy-colored%20284.png - :alt: Wayback Machine - - Wayback Machine -Waybackpy is a Python package that interfaces with `Internet -Archive `__'s `Wayback -Machine `__ API. Archive -webpages and retrieve archived webpages easily. - -Table of contents -================= - -.. raw:: html - - - -- `Installation <#installation>`__ - -- `Usage <#usage>`__ -- `As a Python package <#as-a-python-package>`__ - - - `Saving a webpage <#capturing-aka-saving-an-url-using-save>`__ - - `Retrieving - archive <#retrieving-the-archive-for-an-url-using-archive_url>`__ - - `Retrieving the oldest - archive <#retrieving-the-oldest-archive-for-an-url-using-oldest>`__ - - `Retrieving the recent most/newest - archive <#retrieving-the-newest-archive-for-an-url-using-newest>`__ - - `Retrieving the JSON response of availability - API <#retrieving-the-json-reponse-for-the-avaliblity-api-request>`__ - - `Retrieving archive close to a specified year, month, day, hour, - and - minute <#retrieving-archive-close-to-a-specified-year-month-day-hour-and-minute-using-near>`__ - - `Get the content of - webpage <#get-the-content-of-webpage-using-get>`__ - - `Count total archives for an - URL <#count-total-archives-for-an-url-using-total_archives>`__ - - `List of URLs that Wayback Machine knows and has archived for a - domain - name <#list-of-urls-that-wayback-machine-knows-and-has-archived-for-a-domain-name>`__ - -- `With the Command-line - interface <#with-the-command-line-interface>`__ - - - `Saving webpage <#save>`__ - - `Archive URL <#get-archive-url>`__ - - `Oldest archive URL <#oldest-archive>`__ - - `Newest archive URL <#newest-archive>`__ - - `JSON response of API <#get-json-data-of-avaialblity-api>`__ - - `Total archives <#total-number-of-archives>`__ - - `Archive near specified time <#archive-near-time>`__ - - `Get the source code <#get-the-source-code>`__ - - `Fetch all the URLs that the Wayback Machine knows for a - domain <#fetch-all-the-urls-that-the-wayback-machine-knows-for-a-domain>`__ - -- `Tests <#tests>`__ - -- `Dependency <#dependency>`__ - -- `Packaging <#packaging>`__ - -- `License <#license>`__ - -.. raw:: html - - - -Installation ------------- - -Using `pip `__: - -.. code:: bash - - pip install waybackpy - -or direct from this repository using git. - -.. code:: bash - - pip install git+https://github.com/akamhy/waybackpy.git - -Usage ------ - -As a Python package -~~~~~~~~~~~~~~~~~~~ - -Capturing aka Saving an url using save() -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. code:: python - - import waybackpy - - url = "https://en.wikipedia.org/wiki/Multivariable_calculus" - user_agent = "Mozilla/5.0 (Windows NT 5.1; rv:40.0) Gecko/20100101 Firefox/40.0" - - waybackpy_url_obj = waybackpy.Url(url, user_agent) - archive = waybackpy_url_obj.save() - print(archive) - -.. code:: bash - - https://web.archive.org/web/20201016171808/https://en.wikipedia.org/wiki/Multivariable_calculus - -Try this out in your browser @ -https://repl.it/@akamhy/WaybackPySaveExample\ - -Retrieving the archive for an URL using archive\_url -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. code:: python - - import waybackpy - - url = "https://www.google.com/" - user_agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:40.0) Gecko/20100101 Firefox/40.0" - - waybackpy_url_obj = waybackpy.Url(url, user_agent) - archive_url = waybackpy_url_obj.archive_url - print(archive_url) - -.. code:: bash - - https://web.archive.org/web/20201016153320/https://www.google.com/ - -Try this out in your browser @ -https://repl.it/@akamhy/WaybackPyArchiveUrl\ - -Retrieving the oldest archive for an URL using oldest() -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. code:: python - - import waybackpy - - url = "https://www.google.com/" - user_agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:40.0) Gecko/20100101 Firefox/40.0" - - waybackpy_url_obj = waybackpy.Url(url, user_agent) - oldest_archive_url = waybackpy_url_obj.oldest() - print(oldest_archive_url) - -.. code:: bash - - http://web.archive.org/web/19981111184551/http://google.com:80/ - -Try this out in your browser @ -https://repl.it/@akamhy/WaybackPyOldestExample\ - -Retrieving the newest archive for an URL using newest() -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. code:: python - - import waybackpy - - url = "https://www.facebook.com/" - user_agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:39.0) Gecko/20100101 Firefox/39.0" - - waybackpy_url_obj = waybackpy.Url(url, user_agent) - newest_archive_url = waybackpy_url_obj.newest() - print(newest_archive_url) - -.. code:: bash - - https://web.archive.org/web/20201016150543/https://www.facebook.com/ - -Try this out in your browser @ -https://repl.it/@akamhy/WaybackPyNewestExample\ - -Retrieving the JSON reponse for the avaliblity API request -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. code:: python - - import waybackpy - - url = "https://www.facebook.com/" - user_agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:39.0) Gecko/20100101 Firefox/39.0" - - waybackpy_url_obj = waybackpy.Url(url, user_agent) - json_dict = waybackpy_url_obj.JSON - print(json_dict) - -.. code:: javascript - - {'url': 'https://www.facebook.com/', 'archived_snapshots': {'closest': {'available': True, 'url': 'http://web.archive.org/web/20201016150543/https://www.facebook.com/', 'timestamp': '20201016150543', 'status': '200'}}} - -Try this out in your browser @ https://repl.it/@akamhy/WaybackPyJSON\ - -Retrieving archive close to a specified year, month, day, hour, and minute using near() -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. code:: python - - from waybackpy import Url - - user_agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:38.0) Gecko/20100101 Firefox/38.0" - url = "https://github.com/" - - waybackpy_url_obj = Url(url, user_agent) - - # 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. - -.. code:: python - - github_archive_near_2010 = waybackpy_url_obj.near(year=2010) - print(github_archive_near_2010) - -.. code:: bash - - https://web.archive.org/web/20101018053604/http://github.com:80/ - -.. code:: python - - github_archive_near_2011_may = waybackpy_url_obj.near(year=2011, month=5) - print(github_archive_near_2011_may) - -.. code:: bash - - https://web.archive.org/web/20110518233639/https://github.com/ - -.. code:: python - - github_archive_near_2015_january_26 = waybackpy_url_obj.near(year=2015, month=1, day=26) - print(github_archive_near_2015_january_26) - -.. code:: bash - - https://web.archive.org/web/20150125102636/https://github.com/ - -.. code:: python - - github_archive_near_2018_4_july_9_2_am = waybackpy_url_obj.near(year=2018, month=7, day=4, hour=9, minute=2) - print(github_archive_near_2018_4_july_9_2_am) - -.. code:: bash - - https://web.archive.org/web/20180704090245/https://github.com/ - -The package doesn't support second argument yet. You are encourged to -create a PR ;) - -Try this out in your browser @ -https://repl.it/@akamhy/WaybackPyNearExample\ - -Get the content of webpage using get() -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. code:: python - - import waybackpy - - google_url = "https://www.google.com/" - - User_Agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36" - - waybackpy_url_object = waybackpy.Url(google_url, User_Agent) - - - # If no argument is passed in get(), it gets the source of the Url used to create the object. - current_google_url_source = waybackpy_url_object.get() - print(current_google_url_source) - - - # The following chunk of code will force a new archive of google.com and get the source of the archived page. - # waybackpy_url_object.save() type is string. - google_newest_archive_source = waybackpy_url_object.get(waybackpy_url_object.save()) - print(google_newest_archive_source) - - - # waybackpy_url_object.oldest() type is str, it's oldest archive of google.com - google_oldest_archive_source = waybackpy_url_object.get(waybackpy_url_object.oldest()) - print(google_oldest_archive_source) - -Try this out in your browser @ -https://repl.it/@akamhy/WaybackPyGetExample#main.py\ - -Count total archives for an URL using total\_archives() -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. code:: python - - import waybackpy - - URL = "https://en.wikipedia.org/wiki/Python (programming language)" - UA = "Mozilla/5.0 (iPad; CPU OS 8_1_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12B435 Safari/600.1.4" - - waybackpy_url_object = waybackpy.Url(url=URL, user_agent=UA) - - archive_count = waybackpy_url_object.total_archives() - - print(archive_count) # total_archives() returns an int - -.. code:: bash - - 2516 - -Try this out in your browser @ -https://repl.it/@akamhy/WaybackPyTotalArchivesExample\ - -List of URLs that Wayback Machine knows and has archived for a domain name -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -1) If alive=True is set, waybackpy will check all URLs to identify the - alive URLs. Don't use with popular websites like google or it would - take too long. -2) To include URLs from subdomain set sundomain=True - -.. code:: python - - import waybackpy - - URL = "akamhy.github.io" - UA = "Mozilla/5.0 (iPad; CPU OS 8_1_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12B435 Safari/600.1.4" - - waybackpy_url_object = waybackpy.Url(url=URL, user_agent=UA) - known_urls = waybackpy_url_object.known_urls(alive=True, subdomain=False) # alive and subdomain are optional. - print(known_urls) # known_urls() returns list of URLs - -.. code:: bash - - ['http://akamhy.github.io', - 'https://akamhy.github.io/waybackpy/', - 'https://akamhy.github.io/waybackpy/assets/css/style.css?v=a418a4e4641a1dbaad8f3bfbf293fad21a75ff11', - 'https://akamhy.github.io/waybackpy/assets/css/style.css?v=f881705d00bf47b5bf0c58808efe29eecba2226c'] - -Try this out in your browser @ -https://repl.it/@akamhy/WaybackPyKnownURLsToWayBackMachineExample#main.py\ - -With the Command-line interface -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Save -^^^^ - -.. code:: bash - - $ waybackpy --url "https://en.wikipedia.org/wiki/Social_media" --user_agent "my-unique-user-agent" --save - https://web.archive.org/web/20200719062108/https://en.wikipedia.org/wiki/Social_media - -Try this out in your browser @ -https://repl.it/@akamhy/WaybackPyBashSave\ - -Get archive URL -^^^^^^^^^^^^^^^ - -.. code:: bash - - $ waybackpy --url "https://en.wikipedia.org/wiki/SpaceX" --user_agent "my-unique-user-agent" --archive_url - https://web.archive.org/web/20201007132458/https://en.wikipedia.org/wiki/SpaceX - -Try this out in your browser @ -https://repl.it/@akamhy/WaybackPyBashArchiveUrl\ - -Oldest archive -^^^^^^^^^^^^^^ - -.. code:: bash - - $ waybackpy --url "https://en.wikipedia.org/wiki/SpaceX" --user_agent "my-unique-user-agent" --oldest - https://web.archive.org/web/20040803000845/http://en.wikipedia.org:80/wiki/SpaceX - -Try this out in your browser @ -https://repl.it/@akamhy/WaybackPyBashOldest\ - -Newest archive -^^^^^^^^^^^^^^ - -.. code:: bash - - $ waybackpy --url "https://en.wikipedia.org/wiki/YouTube" --user_agent "my-unique-user-agent" --newest - https://web.archive.org/web/20200606044708/https://en.wikipedia.org/wiki/YouTube - -Try this out in your browser @ -https://repl.it/@akamhy/WaybackPyBashNewest\ - -Get JSON data of avaialblity API -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. code:: bash - - waybackpy --url "https://en.wikipedia.org/wiki/SpaceX" --user_agent "my-unique-user-agent" --json - -.. code:: javascript - - {'archived_snapshots': {'closest': {'timestamp': '20201007132458', 'status': '200', 'available': True, 'url': 'http://web.archive.org/web/20201007132458/https://en.wikipedia.org/wiki/SpaceX'}}, 'url': 'https://en.wikipedia.org/wiki/SpaceX'} - -Try this out in your browser @ -https://repl.it/@akamhy/WaybackPyBashJSON\ - -Total number of archives -^^^^^^^^^^^^^^^^^^^^^^^^ - -.. code:: bash - - $ waybackpy --url "https://en.wikipedia.org/wiki/Linux_kernel" --user_agent "my-unique-user-agent" --total - 853 - -Try this out in your browser @ -https://repl.it/@akamhy/WaybackPyBashTotal\ - -Archive near time -^^^^^^^^^^^^^^^^^ - -.. code:: bash - - $ waybackpy --url facebook.com --user_agent "my-unique-user-agent" --near --year 2012 --month 5 --day 12 - https://web.archive.org/web/20120512142515/https://www.facebook.com/ - -Try this out in your browser @ -https://repl.it/@akamhy/WaybackPyBashNear\ - -Get the source code -^^^^^^^^^^^^^^^^^^^ - -.. code:: bash - - waybackpy --url google.com --user_agent "my-unique-user-agent" --get url # Prints the source code of the url - waybackpy --url google.com --user_agent "my-unique-user-agent" --get oldest # Prints the source code of the oldest archive - waybackpy --url google.com --user_agent "my-unique-user-agent" --get newest # Prints the source code of the newest archive - waybackpy --url google.com --user_agent "my-unique-user-agent" --get save # Save a new archive on wayback machine then print the source code of this archive. - -Try this out in your browser @ -https://repl.it/@akamhy/WaybackPyBashGet\ - -Fetch all the URLs that the Wayback Machine knows for a domain -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -1) You can add the '--alive' flag to only fetch alive links. -2) You can add the '--subdomain' flag to add subdomains. -3) '--alive' and '--subdomain' flags can be used simultaneously. -4) All links will be saved in a file, and the file will be created in - the current working directory. - -.. code:: bash - - pip install waybackpy - - # Ignore the above installation line. - - waybackpy --url akamhy.github.io --user_agent "my-user-agent" --known_urls - # Prints all known URLs under akamhy.github.io - - - waybackpy --url akamhy.github.io --user_agent "my-user-agent" --known_urls --alive - # Prints all known URLs under akamhy.github.io which are still working and not dead links. - - - waybackpy --url akamhy.github.io --user_agent "my-user-agent" --known_urls --subdomain - # Prints all known URLs under akamhy.github.io inclusing subdomain - - - waybackpy --url akamhy.github.io --user_agent "my-user-agent" --known_urls --subdomain --alive - # Prints all known URLs under akamhy.github.io including subdomain which are not dead links and still alive. - -Try this out in your browser @ -https://repl.it/@akamhy/WaybackpyKnownUrlsFromWaybackMachine#main.sh\ - -Tests ------ - -`Here `__ - -To run tests locally: - -.. code:: bash - - pip install -U pytest - pip install codecov - pip install pytest pytest-cov - cd tests - pytest --cov=../waybackpy - python -m codecov #For reporting coverage on Codecov - -Packaging ---------- - -1. Increment version. - -2. Build package ``python setup.py sdist bdist_wheel``. - -3. Sign & upload the package ``twine upload -s dist/*``. - -License -------- - -Released under the MIT License. See -`license `__ -for details. - -.. |contributions welcome| image:: https://img.shields.io/static/v1.svg?label=Contributions&message=Welcome&color=0059b3&style=flat-square -.. |Build Status| image:: https://img.shields.io/travis/akamhy/waybackpy.svg?label=Travis%20CI&logo=travis&style=flat-square - :target: https://travis-ci.org/akamhy/waybackpy -.. |codecov| image:: https://codecov.io/gh/akamhy/waybackpy/branch/master/graph/badge.svg - :target: https://codecov.io/gh/akamhy/waybackpy -.. |Downloads| image:: https://pepy.tech/badge/waybackpy/month - :target: https://pepy.tech/project/waybackpy/month -.. |Release| image:: https://img.shields.io/github/v/release/akamhy/waybackpy.svg - :target: https://github.com/akamhy/waybackpy/releases -.. |Codacy Badge| image:: https://api.codacy.com/project/badge/Grade/255459cede9341e39436ec8866d3fb65 - :target: https://www.codacy.com/manual/akamhy/waybackpy?utm_source=github.com&utm_medium=referral&utm_content=akamhy/waybackpy&utm_campaign=Badge_Grade -.. |Maintainability| image:: https://api.codeclimate.com/v1/badges/942f13d8177a56c1c906/maintainability - :target: https://codeclimate.com/github/akamhy/waybackpy/maintainability -.. |CodeFactor| image:: https://www.codefactor.io/repository/github/akamhy/waybackpy/badge - :target: https://www.codefactor.io/repository/github/akamhy/waybackpy -.. |made-with-python| image:: https://img.shields.io/badge/Made%20with-Python-1f425f.svg - :target: https://www.python.org/ -.. |pypi| image:: https://img.shields.io/pypi/v/waybackpy.svg - :target: https://pypi.org/project/waybackpy/ -.. |PyPI - Python Version| image:: https://img.shields.io/pypi/pyversions/waybackpy?style=flat-square -.. |Maintenance| image:: https://img.shields.io/badge/Maintained%3F-yes-green.svg - :target: https://github.com/akamhy/waybackpy/graphs/commit-activity -.. |Repo size| image:: https://img.shields.io/github/repo-size/akamhy/waybackpy.svg?label=Repo%20size&style=flat-square -.. |License: MIT| image:: https://img.shields.io/badge/License-MIT-yellow.svg - :target: https://github.com/akamhy/waybackpy/blob/master/LICENSE diff --git a/setup.py b/setup.py index 3e4491c..a1f62f6 100644 --- a/setup.py +++ b/setup.py @@ -45,7 +45,8 @@ setup( ] }, project_urls={ - 'Documentation': 'https://waybackpy.readthedocs.io', + 'Documentation': 'https://akamhy.github.io/waybackpy/', 'Source': 'https://github.com/akamhy/waybackpy', + 'Tracker': 'https://github.com/akamhy/waybackpy/issues', }, )