Merge branch 'release/0.1rc1'
This commit is contained in:
commit
cee7ce8438
14
README.md
14
README.md
|
@ -16,3 +16,17 @@ the unix console or toolbars like polybar
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
|
usage: SpaceApiCli.py [-h] [-n NAME] [-v] [-w]
|
||||||
|
|
||||||
|
Show Space Status
|
||||||
|
|
||||||
|
optional arguments:
|
||||||
|
-h, --help show this help message and exit
|
||||||
|
-n NAME, --name NAME Name of Hackerspace
|
||||||
|
-v Show more Infos of Hackerspace
|
||||||
|
-w get homepage url
|
||||||
|
|
||||||
|
|
||||||
|
Defaults: without option -n it will get the state of the hackspace LeineLab in Hannover, Germany
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
from setuptools import setup, find_packages
|
||||||
|
setup(
|
||||||
|
name="SpaceApiCli",
|
||||||
|
version="0.1rc1",
|
||||||
|
packages=find_packages(),
|
||||||
|
scripts=["src/SpaceApiCli.py"],
|
||||||
|
|
||||||
|
# Project uses reStructuredText, so ensure that the docutils get
|
||||||
|
# installed or upgraded on the target machine
|
||||||
|
install_requires=["requests>=2.22.0"],
|
||||||
|
|
||||||
|
package_data={
|
||||||
|
# If any package contains *.txt or *.rst files, include them:
|
||||||
|
"": ["*.txt", "*.rst", "*.md"],
|
||||||
|
# And include any *.msg files found in the "hello" package, too:
|
||||||
|
# "hello": ["*.msg"],
|
||||||
|
},
|
||||||
|
|
||||||
|
# metadata to display on PyPI
|
||||||
|
author="Reiko Kaps",
|
||||||
|
author_email="r31k@k4p5.de",
|
||||||
|
description="A simple Commandline Tool to access the hackspace api",
|
||||||
|
keywords="spaceapi hackspace cli tool",
|
||||||
|
url="https://github.com/reikkaps/spaceapicli", # project home page, if any
|
||||||
|
project_urls={
|
||||||
|
"Bug Tracker": "https://github.com/reikkaps/spaceapicli/issues",
|
||||||
|
"Documentation": "https://github.com/reikkaps/spaceapicli/blob/master/README.md",
|
||||||
|
"Source Code": "https://github.com/reikkaps/spaceapicli",
|
||||||
|
},
|
||||||
|
classifiers=[
|
||||||
|
"License :: OSI Approved :: Python Software Foundation License"
|
||||||
|
]
|
||||||
|
|
||||||
|
# could also include long_description, download_url, etc.
|
||||||
|
)
|
|
@ -0,0 +1,109 @@
|
||||||
|
#!/usr/bin/python3
|
||||||
|
#
|
||||||
|
# Reiko Kaps 2015 <r31k@k4p5.de>
|
||||||
|
|
||||||
|
import json
|
||||||
|
import sys, os, argparse
|
||||||
|
import shutil
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
try:
|
||||||
|
import requests
|
||||||
|
from requests.exceptions import ConnectionError
|
||||||
|
except ImportError as e:
|
||||||
|
print('please install requests python module')
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
DIR_URL='https://directory.spaceapi.io/'
|
||||||
|
|
||||||
|
|
||||||
|
def download(url):
|
||||||
|
"""Download a file to local filesystem
|
||||||
|
Parameter url: URL
|
||||||
|
returns string (json)
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
file = requests.get(url)
|
||||||
|
except ConnectionError as e:
|
||||||
|
raise e
|
||||||
|
|
||||||
|
return file.json()
|
||||||
|
|
||||||
|
|
||||||
|
def save(json):
|
||||||
|
status(json)
|
||||||
|
file = open("./spaceapi.json", 'w')
|
||||||
|
file.write(str(json))
|
||||||
|
file.close()
|
||||||
|
|
||||||
|
def status(json, verbose):
|
||||||
|
"""Ermittelt aus dem Json den Status des Hackerspace"""
|
||||||
|
if verbose is True:
|
||||||
|
pass
|
||||||
|
|
||||||
|
if json['state']['open'] is False:
|
||||||
|
print('🧘 closed'.format(str(json['space'])))
|
||||||
|
return False
|
||||||
|
|
||||||
|
print('🌞 open'.format(str(json['space'])))
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
def getHomepage(json, verbose):
|
||||||
|
"""Ermittelt aus dem Json die Homepage des Hackerspace"""
|
||||||
|
if json['url']:
|
||||||
|
print('opening {}'.format(json['url']))
|
||||||
|
subprocess.run(['firefox', json['url']])
|
||||||
|
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def getspaceurl(name, debug=False):
|
||||||
|
try:
|
||||||
|
directory = download(DIR_URL)
|
||||||
|
except ConnectionError:
|
||||||
|
raise
|
||||||
|
if name in directory:
|
||||||
|
return directory[name]
|
||||||
|
else:
|
||||||
|
if debug:
|
||||||
|
print('Space {} was not found!'.format(name))
|
||||||
|
for key in directory:
|
||||||
|
if name.lower() in key.lower():
|
||||||
|
if debug:
|
||||||
|
print("Trying simulare spacename '{}' ...".format(key))
|
||||||
|
return directory[key]
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
def main(args):
|
||||||
|
if args.v:
|
||||||
|
debug = args.v
|
||||||
|
else:
|
||||||
|
debug = False
|
||||||
|
|
||||||
|
try:
|
||||||
|
json = download(getspaceurl(args.name, debug))
|
||||||
|
except ConnectionError as e:
|
||||||
|
print('not connected')
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
if args.w:
|
||||||
|
getHomepage(json, debug)
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
if status(json, verbose=False):
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
parser = argparse.ArgumentParser(description='Show Space Status')
|
||||||
|
parser.add_argument('-n', '--name', help='Name of Hackerspace', default='LeineLab')
|
||||||
|
parser.add_argument('-v', action='store_true', help='Show more Infos of Hackerspace')
|
||||||
|
parser.add_argument('-w', action='store_true', help='get homepage url')
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
main(args)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue