From da3b363f96dc5771e23f5d77704322d5506d95eb Mon Sep 17 00:00:00 2001
From: itdoginfo <koalav42@gmail.com>
Date: Thu, 12 Dec 2024 16:55:50 +0300
Subject: [PATCH] Added single domains for clashx

---
 convert.py | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/convert.py b/convert.py
index 67b8380..37d609b 100755
--- a/convert.py
+++ b/convert.py
@@ -61,8 +61,9 @@ def dnsmasq(src, out, single=None, remove={'google.com'}):
         for name in domains:
             file.write(f'ipset=/{name}/vpn_domains\n')
 
-def clashx(src, out, remove={'google.com'}):
+def clashx(src, out, single=None, remove={'google.com'}):
     domains = set()
+    domains_single = set()
 
     for f in src:
         with open(f) as infile:
@@ -73,6 +74,15 @@ def clashx(src, out, remove={'google.com'}):
                         if not tldextract.extract(line).domain and tldextract.extract(line).suffix:
                             domains.add("." + tldextract.extract(line.rstrip()).suffix)
 
+    if single is not None:
+        with open(single) as infile:
+            for line in infile:
+                if tldextract.extract(line).suffix:
+                    if re.search(r'[^а-я\-]', tldextract.extract(line).domain):
+                        domains_single.add(tldextract.extract(line.rstrip()).fqdn)
+
+    domains = domains.union(domains_single)
+
     domains = domains - remove
     domains = sorted(domains)
 
@@ -153,7 +163,7 @@ if __name__ == '__main__':
 
     raw(inside_lists, rusDomainsInsideOut)
     dnsmasq(inside_lists, rusDomainsInsideOut, rusDomainsInsideSrcSingle, removeDomains)
-    clashx(inside_lists, rusDomainsInsideOut, removeDomains)
+    clashx(inside_lists, rusDomainsInsideOut, rusDomainsInsideSrcSingle, removeDomains)
     kvas(inside_lists, rusDomainsInsideOut, rusDomainsInsideSrcSingle, removeDomainsKvas)
     mikrotik_fwd(inside_lists, rusDomainsInsideOut, rusDomainsInsideSrcSingle, removeDomains)