From 9030065e371651887bbf6c733642c72c83c85ec9 Mon Sep 17 00:00:00 2001
From: Alexandre Dulaunoy
Date: Sat, 7 Jan 2023 15:52:19 +0100
Subject: [PATCH] new: [providence] first skeleton
Signed-off-by: Alexandre Dulaunoy
---
REQUIREMENTS | 1 +
bin/providence.py | 60 +++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 61 insertions(+)
create mode 100644 REQUIREMENTS
create mode 100644 bin/providence.py
diff --git a/REQUIREMENTS b/REQUIREMENTS
new file mode 100644
index 0000000..f229360
--- /dev/null
+++ b/REQUIREMENTS
@@ -0,0 +1 @@
+requests
diff --git a/bin/providence.py b/bin/providence.py
new file mode 100644
index 0000000..a41995a
--- /dev/null
+++ b/bin/providence.py
@@ -0,0 +1,60 @@
+import json
+import sys
+import argparse
+from pathlib import Path
+import os
+
+import requests
+
+parser = argparse.ArgumentParser(
+ description="providence is an open source to find company domain names based on a given company name",
+ epilog="More info: https://github.com/adulau/providence",
+)
+
+parser.add_argument("-v", help="increase output verbosity", action="store_true")
+parser.add_argument("-n", "--name", type=str, help="Company name to find")
+parser.add_argument(
+ "-t",
+ "--tld",
+ type=str,
+ help="Limit to a specific TLD (if not, all known TLDs are tested)",
+)
+
+args = parser.parse_args()
+
+homedir = str(Path.home())
+
+if not args.name:
+ parser.print_usage()
+ parser.exit()
+
+
+def cache_suffixes(url="https://publicsuffix.org/list/public_suffix_list.dat"):
+ tlds = set()
+ cachedfile = os.path.join(homedir, ".providence-suffix")
+ if not os.path.exists(cachedfile):
+ r = requests.get(url)
+ with open(cachedfile, 'wb') as fd:
+ fd.write(r.content)
+
+ with open(cachedfile, 'r') as fd:
+ for line in fd:
+ tld = line.rstrip()
+ if not tld.startswith("//"):
+ tlds.add(tld)
+ return tlds
+
+
+def guess_name(name=None, tlds=None):
+ if name is None:
+ return False
+ for t in tlds:
+ print(f"{name}.{t}")
+
+
+if not args.tld:
+ tlds = cache_suffixes()
+else:
+ tlds = [args.tld]
+
+guess_name(name=args.name, tlds=tlds)