2hoarder/wallabag2hoarder/convert.py
2025-03-12 20:24:48 +01:00

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()