From 6972bb84a2c0e52eeae53434ea9873fd5cba3d5f Mon Sep 17 00:00:00 2001
From: itdoginfo <koalav42@gmail.com>
Date: Wed, 13 Sep 2023 22:41:04 +0300
Subject: [PATCH] added clashx format

---
 convert.py | 24 ++++++++++++++++++++++--
 1 file changed, 22 insertions(+), 2 deletions(-)

diff --git a/convert.py b/convert.py
index f792e9e..df0abbe 100755
--- a/convert.py
+++ b/convert.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3.8
+#!/usr/bin/python3.10
 
 import tldextract
 import urllib.request
@@ -47,6 +47,23 @@ def dnsmasq(src, out, remove={'google.com'}):
         for name in domains:
             file.write(f'ipset=/{name}/vpn_domains\n')
 
+def clashx(src, out, remove={'google.com'}):
+    domains = set()
+
+    for f in src:
+        with open(f) as infile:
+                for line in infile:
+                    if tldextract.extract(line).suffix:
+                        if re.search(r'[^а-я\-]', tldextract.extract(line).domain):
+                            domains.add(tldextract.extract(line.rstrip()).registered_domain)
+
+    domains = domains - remove
+    domains = sorted(domains)
+
+    with open(f'{out}-clashx.lst', 'w') as file:
+        for name in domains:
+            file.write(f'DOMAIN-SUFFIX,{name}\n')
+
 if __name__ == '__main__':
     # Russia inside
     Path("Russia").mkdir(parents=True, exist_ok=True)
@@ -57,12 +74,14 @@ if __name__ == '__main__':
 
     raw(inside_lists, rusDomainsInsideOut)
     dnsmasq(inside_lists, rusDomainsInsideOut, removeDomains)
+    clashx(inside_lists, rusDomainsInsideOut, removeDomains)
 
     # Russia outside
     ouside_lists = [rusDomainsOutsideSrc]
 
     raw(ouside_lists, rusDomainsOutsideOut)
     dnsmasq(ouside_lists, rusDomainsOutsideOut)
+    clashx(ouside_lists, rusDomainsOutsideOut)
 
     # Ukraine
     Path("Ukraine").mkdir(parents=True, exist_ok=True)
@@ -70,4 +89,5 @@ if __name__ == '__main__':
     urllib.request.urlretrieve("https://uablacklist.net/domains.txt", "uablacklist-domains.lst")
     ua_lists = ['uablacklist-domains.lst']
 
-    dnsmasq(ua_lists, uaDomainsOut)
\ No newline at end of file
+    dnsmasq(ua_lists, uaDomainsOut)
+    clashx(ua_lists, uaDomainsOut)
\ No newline at end of file