diff --git a/manuals/pypi_uploader.sh b/manuals/pypi_uploader.sh deleted file mode 100644 index f14de59..0000000 --- a/manuals/pypi_uploader.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -python3 --V -cd .. -python3 -m venv waybackvenv -. waybackvenv/bin/activate -cd - -pip3 install --upgrade pip3 -pip3 install setuptools -U -pip3 install wheel --upgrade -pip3 install twine -U -python3 setup.py sdist bdist_wheel -twine upload dist/* diff --git a/setup.py b/setup.py index 8ecb4ea..474a005 100644 --- a/setup.py +++ b/setup.py @@ -42,6 +42,11 @@ setup( 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: Implementation :: CPython', ], + entry_points={ + 'console_scripts': [ + 'waybackpy = waybackpy.cli:main' + ] + }, project_urls={ 'Documentation': 'https://waybackpy.readthedocs.io', 'Source': 'https://github.com/akamhy/waybackpy', diff --git a/tests/test_1.py b/tests/test_1.py index 51bc395..74e7d8b 100644 --- a/tests/test_1.py +++ b/tests/test_1.py @@ -146,7 +146,8 @@ def test_newest(): def test_get(): target = waybackpy.Url("google.com", user_agent) - assert "Welcome to Google" in target._get(target.oldest()) + assert "Welcome to Google" in target.get(target.oldest()) + def test_wayback_timestamp(): diff --git a/waybackpy/cli.py b/waybackpy/cli.py new file mode 100644 index 0000000..c61fe74 --- /dev/null +++ b/waybackpy/cli.py @@ -0,0 +1,101 @@ +# -*- coding: utf-8 -*- +from __future__ import print_function +import argparse +from waybackpy.wrapper import Url + +def _save(obj): + print(obj.save()) + +def _oldest(obj): + print(obj.oldest()) + +def _newest(obj): + print(obj.newest()) + +def _total_archives(obj): + print(obj.total_archives()) + +def _near(obj, args): + _near_args = {} + if args.year: + _near_args["year"] = args.year + if args.month: + _near_args["month"] = args.month + if args.day: + _near_args["day"] = args.day + if args.hour: + _near_args["hour"] = args.hour + if args.minute: + _near_args["minute"] = args.minute + print(obj.near(**_near_args)) + +def _get(obj, args): + if args.get.lower() == "url": + print(obj.get()) + + elif args.get.lower() == "oldest": + print(obj.get(obj.oldest())) + + elif args.get.lower() == "latest" or args.get.lower() == "newest": + print(obj.get(obj.newest())) + + elif args.get.lower() == "save": + print(obj.get(obj.save())) + + else: + print("Please use get as \"--get 'source'\", 'source' can be one of the followings: \ + \n1) url - get the source code of the url specified using --url/-u.\ + \n2) oldest - get the source code of the oldest archive for the supplied url.\ + \n3) latest - get the source code of the latest archive for the supplied url.\ + \n4) save - Create a new archive and get the source code of this new archive for the supplied url.") + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("-u", "--url", help="URL on which Wayback machine operations would occur.") + parser.add_argument("-ua", "--user_agent", help="User agent, default user_agent is \"waybackpy python package - https://github.com/akamhy/waybackpy\".") + parser.add_argument("-s", "--save", action='store_true', help="Save the URL on the Wayback machine.") + parser.add_argument("-o", "--oldest", action='store_true', help="Oldest archive for the specified URL.") + parser.add_argument("-l", "--latest", action='store_true', help="Latest/Newest archive for the specified URL.") + parser.add_argument("-t", "--total", action='store_true', help="Total number of archives for the specified URL.") + parser.add_argument("-g", "--get", help="Get the source code of the supplied url. Use '--get help' for extended usage.") + + parser.add_argument("-n", "--near", action='store_true', help="Latest/Newest archive for the specified URL.") + parser.add_argument("-y", "--year", type=int, help="Year in integer. For use with --near.") + parser.add_argument("-M", "--month", type=int, help="Month in integer. For use with --near.") + parser.add_argument("-d", "--day", type=int, help="Day in integer. For use with --near.") + parser.add_argument("-H", "--hour", type=int, help="Hour in integer. For use with --near.") + parser.add_argument("-m", "--minute", type=int, help="Minute in integer. For use with --near.") + + args = parser.parse_args() + + if not args.url: + print("please specify an URL using \"--url https://mywebiste.com\". Use --help for help.") + return + + # create the object with or without the user_agent + if args.user_agent: + obj = Url(args.url, args.user_agent) + else: + obj = Url(args.url) + + print(repr(obj)) + + if args.save: + _save(obj) + elif args.oldest: + _oldest(obj) + elif args.latest: + _newest(obj) + elif args.total: + _total_archives(obj) + elif args.near: + _near(obj, args) + elif args.get: + _get(obj, args) + else: + print("Please specify any operation as an argument. Use 'waybackpy --help' for help using wayback.\ + \nLatest docs and version available at https://github.com/akamhy/waybackpy ") + + +if __name__ == "__main__": + main() diff --git a/waybackpy/wrapper.py b/waybackpy/wrapper.py index 3234767..3f555f2 100644 --- a/waybackpy/wrapper.py +++ b/waybackpy/wrapper.py @@ -89,7 +89,7 @@ class Url: header = _get_response(req).headers return "https://" + _archive_url_parser(header) - def _get(self, url="", user_agent="", encoding=""): + def get(self, url="", user_agent="", encoding=""): """Return the source code of the supplied URL. If encoding is not supplied, it is auto-detected from the response. """