From 04fc8e9ab470db46c23919b8e21069086a8a5692 Mon Sep 17 00:00:00 2001 From: eri! Date: Thu, 12 Mar 2020 00:22:40 +0100 Subject: [PATCH] initial commit --- README.md | 0 gefavic/__init__.py | 22 ++++++++++++++++++++ gefavic/__main__.py | 10 +++++++++ gefavic/cli.py | 48 +++++++++++++++++++++++++++++++++++++++++++ gefavic/getfavicon.py | 22 ++++++++++++++++++++ requirements.txt | 0 scripts/make_env.sh | 22 ++++++++++++++++++++ setup.py | 46 +++++++++++++++++++++++++++++++++++++++++ 8 files changed, 170 insertions(+) create mode 100644 README.md create mode 100644 gefavic/__init__.py create mode 100644 gefavic/__main__.py create mode 100644 gefavic/cli.py create mode 100644 gefavic/getfavicon.py create mode 100644 requirements.txt create mode 100755 scripts/make_env.sh create mode 100644 setup.py diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/gefavic/__init__.py b/gefavic/__init__.py new file mode 100644 index 0000000..956110d --- /dev/null +++ b/gefavic/__init__.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python # 3 +# -*- coding: utf-8 -*- + + +from gefavic.getfavicon import main as getfavicon + + +__title__ = "gefavic" +__version__ = "0.0.1" +__author__ = "eri!" +__author_email__ = "eri@c3d2.de" +__license__ = "LGPL3" +__copyright__ = "Copyright 2020 me" +__description__ = "favicon requester" +__url__ = "https://gitea.c3d2.de/eri/gefavic" + + + + +def run(options): + getfavicon(options) + diff --git a/gefavic/__main__.py b/gefavic/__main__.py new file mode 100644 index 0000000..b872437 --- /dev/null +++ b/gefavic/__main__.py @@ -0,0 +1,10 @@ +#!/usr/bin/env python # 3 +# -*- coding: utf-8 -*- + + + +import gefavic.cli + + +__name__ == "__main__" and gefavic.cli.main() + diff --git a/gefavic/cli.py b/gefavic/cli.py new file mode 100644 index 0000000..cef656d --- /dev/null +++ b/gefavic/cli.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python # 3 +# -*- coding: utf-8 -*- + +import sys +from argparse import ArgumentParser + +import gefavic + + +### Arguments + +def add_global_arguments(parser): + parser.add_argument( + "--version", + action='version', + version=gefavic.__version__, + help="Show tool version." + ) + parser.add_argument( + "url", + metavar="URL", + nargs="?", + help="URL from where the favicon will be requested." + ) + return parser + + + + + + +### Main + +def global_parser(): + parser = add_global_arguments(ArgumentParser( + description="favicon requester", + add_help=True, + )) + return parser + +def main(): + parser = global_parser() + (options, args) = parser.parse_known_args(sys.argv[1:]) + #print(options, args) + kwargs = vars(options) + gefavic.run(options) + sys.exit(0) + diff --git a/gefavic/getfavicon.py b/gefavic/getfavicon.py new file mode 100644 index 0000000..e3ace49 --- /dev/null +++ b/gefavic/getfavicon.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +from html.parser import HTMLParser + +class favfinder(HTMLParser): + attrs = [] + def handle_starttag(self, tag, attrs): + if tag == 'link': + for attr in attrs: + if 'rel' in attr and attr[1].find('icon') > 0: + self.attrs = attrs + +def gethtml(url): + return "" + + +def main(options): + ff = favfinder() + response = gethtml(options.url) + ff.feed(response) + print(ff.attrs) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..e69de29 diff --git a/scripts/make_env.sh b/scripts/make_env.sh new file mode 100755 index 0000000..2f1592b --- /dev/null +++ b/scripts/make_env.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash + +# parameters +build_dir=build +python_exe=python3 + + + +# create +mkdir -p ${build_dir} +virtualenv -p ${python_exe} ${build_dir} + +# activate +source ${build_dir}/bin/activate + +# setup +pip install -r requirements.txt +pip install -e . + +# cleanup +deactivate +echo "run '${build_dir}/bin/activate' to get into env and 'deactivate' to close it." diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..3f73703 --- /dev/null +++ b/setup.py @@ -0,0 +1,46 @@ +#!/usr/bin/python # 3 +# -*- coding: utf-8 -*- + +from re import sub, finditer + +from setuptools import setup +from setuptools import find_packages + + +def find_description(): + with open("README.md") as file: + return file.read() + + +def find_requirements(): + with open("requirements.txt") as file: + return [line.strip() for line in file.readlines()] + + +def find_meta_data(): + with open("gefavic/__init__.py") as file: + return { + sub(r'^title$', "name", match.group(1)): match.group(2) + for match in finditer(r'__([^\n]+)__\s*=\s*"([^\n]+)"', file.read()) + } + + +setup( + long_description=find_description(), + packages=find_packages(), + install_requires=find_requirements(), + entry_points={"console_scripts": ["gefavic = gefavic.cli:main"]}, + classifiers=[ + "Environment :: Console", + "Intended Audience :: System Administrators", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Natural Language :: English", + "Operating System :: POSIX", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.5", + "Programming Language :: Python :: 3.6", + ], + **find_meta_data() +) + +