72 lines
2.1 KiB
Python
Executable file
72 lines
2.1 KiB
Python
Executable file
#!/usr/bin/env python
|
|
|
|
import argparse
|
|
import json
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
from convert_netscape import Netscape_Converter
|
|
from convert_native_json import JSON_Converter
|
|
from convert_api import API_Converter
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description="Process input file(s)")
|
|
parser.add_argument("input", help="Input file")
|
|
parser.add_argument("--output", help="Output file")
|
|
parser.add_argument("--hoarder-url", help="Hoarder URL destination")
|
|
parser.add_argument("--hoarder-key", help="Hoarder API key")
|
|
parser.add_argument(
|
|
"--flavour", choices=["api", "html", "json"], default="json", help="Flavour of output"
|
|
)
|
|
parser.add_argument(
|
|
"--num", type=int, default=10, help="Number of items to process"
|
|
)
|
|
|
|
args = parser.parse_args()
|
|
if not args.input:
|
|
print("Please provide a file to import as the first argument.")
|
|
sys.exit(1)
|
|
|
|
INPUT_FILE = Path(args.input)
|
|
if not INPUT_FILE.exists():
|
|
print(f"Input file {INPUT_FILE} can not be accessed.")
|
|
sys.exit(1)
|
|
|
|
# Read JSON file
|
|
with open(INPUT_FILE, "r") as f:
|
|
data = json.load(f)
|
|
|
|
if args.num:
|
|
data = data[: args.num]
|
|
|
|
OUTPUT=""
|
|
OUTPUT_FILE = args.output
|
|
print(f"[DEBUG] input: {INPUT_FILE}")
|
|
print(f"[DEBUG] output: {OUTPUT_FILE}")
|
|
match args.flavour:
|
|
case "html":
|
|
print("[DEBUG] style: html")
|
|
OUTPUT = Netscape_Converter(data).convert()
|
|
case "json":
|
|
print("[DEBUG] style: json")
|
|
OUTPUT = JSON_Converter(data).convert()
|
|
case "api":
|
|
print("[DEBUG] style: api")
|
|
if not args.hoarder_url or not args.hoarder_key:
|
|
print("Please provide valid hoarder url and api key.")
|
|
sys.exit(1)
|
|
OUTPUT = API_Converter(data, args.hoarder_url, args.hoarder_key).convert()
|
|
case _:
|
|
print("No valid conversion flavour given.")
|
|
sys.exit(1)
|
|
|
|
if OUTPUT_FILE:
|
|
with open(OUTPUT_FILE, "w") as f:
|
|
f.write(OUTPUT)
|
|
else:
|
|
print(OUTPUT)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|