diff --git a/.github/workflows/create-lists.yml b/.github/workflows/create-lists.yml
index ce3d9fa..0bdf9a4 100644
--- a/.github/workflows/create-lists.yml
+++ b/.github/workflows/create-lists.yml
@@ -2,7 +2,7 @@ name: Create lists
 
 on:
   push:
-    branches: [ "main", "categorize" ]
+    branches: [ "main", "srs" ]
     paths:
       - .github/workflows/create-lists.yml
       - Categories/**
@@ -19,14 +19,18 @@ jobs:
   generate-lists:
     runs-on: ubuntu-22.04
     steps:
-    - uses: actions/checkout@v4.1.4
-    - name: Generate lists
-      uses: actions/setup-python@v5.1.0
-      with:
-        python-version: '3.10' 
-    - run: |
-        pip install tldextract
-        python  convert.py
+    - uses: actions/checkout@4.1.7
+    - name: Compile ruleset srs
+      run: |
+        docker run --rm \
+        -v ${{ github.workspace }}/src:/app/src \
+        -v ${{ github.workspace }}/Russia:/app/Russia \
+        -v ${{ github.workspace }}/Ukraine:/app/Ukraine \
+        -v ${{ github.workspace }}/Categories:/app/Categories \
+        -v ${{ github.workspace }}/Services:/app/Services \
+        -v ${{ github.workspace }}/SRS:/app/SRS \
+        itdoginfo/compilesrs:0.1.1
+
     - name: Check Russia/inside-dnsmasq-ipset
       uses: itdoginfo/dnsmasq-action@0.1
       with:
@@ -57,6 +61,7 @@ jobs:
       with:
         file: "Ukraine/inside-dnsmasq-nfset.lst"
         version: 2.89
+
     - name: Push lists
       uses: EndBug/add-and-commit@v9
       with:
@@ -65,3 +70,12 @@ jobs:
         author_email: githubaction@githubaction.com
         message: 'Update lists'
         push: true
+
+    - name: Set release tag
+      run: echo "TAG_NAME=$(date +'%Y-%m-%d_%H-%M')" >> $GITHUB_ENV
+
+    - name: Release
+      uses: softprops/action-gh-release@v2.1.0
+      with:
+        files: "${{ github.workspace }}/SRS/*.srs"
+        tag_name: ${{ env.TAG_NAME }}
\ No newline at end of file
diff --git a/.github/workflows/create-srs.yml b/.github/workflows/create-srs.yml
deleted file mode 100644
index 59c0a03..0000000
--- a/.github/workflows/create-srs.yml
+++ /dev/null
@@ -1,35 +0,0 @@
-name: Create srs
-
-on:
-  push:
-    branches: [ "main", "srs" ]
-    paths:
-      - .github/workflows/create-srs.yml
-      - Categories/**
-      - Services/**
-      - src/**
-      - Sing-box-compile-srs/**
-
-jobs:
-  compile-and-release:
-    runs-on: ubuntu-latest
-    steps:
-      - name: Checkout repository
-        uses: actions/checkout@v4.1.7
-
-      - name: Compile ruleset srs
-        run: |
-          docker run --rm \
-          -v ${{ github.workspace }}/Categories:/app/Categories \
-          -v ${{ github.workspace }}/Services:/app/Services \
-          -v ${{ github.workspace }}/SRS:/app/SRS \
-          itdoginfo/compilesrs:0.1
-
-      - name: Set release tag
-        run: echo "TAG_NAME=$(date +'%Y-%m-%d_%H-%M')" >> $GITHUB_ENV
-
-      - name: Release
-        uses: softprops/action-gh-release@v2.1.0
-        with:
-          files: "${{ github.workspace }}/SRS/*.srs"
-          tag_name: ${{ env.TAG_NAME }}
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index fd88e43..602f3be 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
 antifilter-domains.lst
 uablacklist-domains.lst
 zaboronahelp-domains.lst
-SRS
\ No newline at end of file
+SRS
+JSON
\ No newline at end of file
diff --git a/Sing-box-compile-srs/Dockerfile b/Dockerfile
similarity index 57%
rename from Sing-box-compile-srs/Dockerfile
rename to Dockerfile
index 3564dde..0c35b51 100644
--- a/Sing-box-compile-srs/Dockerfile
+++ b/Dockerfile
@@ -4,10 +4,10 @@ FROM python:3.10.16-alpine3.21
 
 COPY --from=sing-box /usr/local/bin/sing-box /bin/sing-box
 
+RUN pip install --no-cache-dir tldextract
+
 WORKDIR /app
 
-COPY compile-srs.py /app/compile-srs.py
+COPY convert.py /app/convert.py
 
-VOLUME ["/app/Categories", "/app/Services"]
-
-CMD ["python3", "compile-srs.py"]
\ No newline at end of file
+CMD ["python3", "convert.py"]
\ No newline at end of file
diff --git a/Russia/inside-clashx.lst b/Russia/inside-clashx.lst
index a9a6f75..a42d62a 100644
--- a/Russia/inside-clashx.lst
+++ b/Russia/inside-clashx.lst
@@ -69,6 +69,7 @@ DOMAIN-SUFFIX,brawlstarsgame.com
 DOMAIN-SUFFIX,broadcom.com
 DOMAIN-SUFFIX,broncosportforum.com
 DOMAIN-SUFFIX,btdig.com
+DOMAIN-SUFFIX,btod.com
 DOMAIN-SUFFIX,buanzo.org
 DOMAIN-SUFFIX,buf.build
 DOMAIN-SUFFIX,builds.parsec.app
@@ -153,6 +154,7 @@ DOMAIN-SUFFIX,download3.omnissa.com
 DOMAIN-SUFFIX,doxa.team
 DOMAIN-SUFFIX,dpidetector.org
 DOMAIN-SUFFIX,dreamhost.com
+DOMAIN-SUFFIX,ducati.com
 DOMAIN-SUFFIX,dw.com
 DOMAIN-SUFFIX,e621.net
 DOMAIN-SUFFIX,echofm.online
@@ -688,6 +690,7 @@ DOMAIN-SUFFIX,ytimg.com
 DOMAIN-SUFFIX,ytimg.l.google.com
 DOMAIN-SUFFIX,yummyani.me
 DOMAIN-SUFFIX,zahav.ru
+DOMAIN-SUFFIX,zapier.com
 DOMAIN-SUFFIX,zbigz.com
 DOMAIN-SUFFIX,zedge.net
 DOMAIN-SUFFIX,zendesk.com
diff --git a/Russia/inside-dnsmasq-ipset.lst b/Russia/inside-dnsmasq-ipset.lst
index ebbc477..8e710ca 100644
--- a/Russia/inside-dnsmasq-ipset.lst
+++ b/Russia/inside-dnsmasq-ipset.lst
@@ -69,6 +69,7 @@ ipset=/brawlstarsgame.com/vpn_domains
 ipset=/broadcom.com/vpn_domains
 ipset=/broncosportforum.com/vpn_domains
 ipset=/btdig.com/vpn_domains
+ipset=/btod.com/vpn_domains
 ipset=/buanzo.org/vpn_domains
 ipset=/buf.build/vpn_domains
 ipset=/builds.parsec.app/vpn_domains
@@ -153,6 +154,7 @@ ipset=/download3.omnissa.com/vpn_domains
 ipset=/doxa.team/vpn_domains
 ipset=/dpidetector.org/vpn_domains
 ipset=/dreamhost.com/vpn_domains
+ipset=/ducati.com/vpn_domains
 ipset=/dw.com/vpn_domains
 ipset=/e621.net/vpn_domains
 ipset=/echofm.online/vpn_domains
@@ -688,6 +690,7 @@ ipset=/ytimg.com/vpn_domains
 ipset=/ytimg.l.google.com/vpn_domains
 ipset=/yummyani.me/vpn_domains
 ipset=/zahav.ru/vpn_domains
+ipset=/zapier.com/vpn_domains
 ipset=/zbigz.com/vpn_domains
 ipset=/zedge.net/vpn_domains
 ipset=/zendesk.com/vpn_domains
diff --git a/Russia/inside-dnsmasq-nfset.lst b/Russia/inside-dnsmasq-nfset.lst
index 64bd853..f9bb4ca 100644
--- a/Russia/inside-dnsmasq-nfset.lst
+++ b/Russia/inside-dnsmasq-nfset.lst
@@ -69,6 +69,7 @@ nftset=/brawlstarsgame.com/4#inet#fw4#vpn_domains
 nftset=/broadcom.com/4#inet#fw4#vpn_domains
 nftset=/broncosportforum.com/4#inet#fw4#vpn_domains
 nftset=/btdig.com/4#inet#fw4#vpn_domains
+nftset=/btod.com/4#inet#fw4#vpn_domains
 nftset=/buanzo.org/4#inet#fw4#vpn_domains
 nftset=/buf.build/4#inet#fw4#vpn_domains
 nftset=/builds.parsec.app/4#inet#fw4#vpn_domains
@@ -153,6 +154,7 @@ nftset=/download3.omnissa.com/4#inet#fw4#vpn_domains
 nftset=/doxa.team/4#inet#fw4#vpn_domains
 nftset=/dpidetector.org/4#inet#fw4#vpn_domains
 nftset=/dreamhost.com/4#inet#fw4#vpn_domains
+nftset=/ducati.com/4#inet#fw4#vpn_domains
 nftset=/dw.com/4#inet#fw4#vpn_domains
 nftset=/e621.net/4#inet#fw4#vpn_domains
 nftset=/echofm.online/4#inet#fw4#vpn_domains
@@ -688,6 +690,7 @@ nftset=/ytimg.com/4#inet#fw4#vpn_domains
 nftset=/ytimg.l.google.com/4#inet#fw4#vpn_domains
 nftset=/yummyani.me/4#inet#fw4#vpn_domains
 nftset=/zahav.ru/4#inet#fw4#vpn_domains
+nftset=/zapier.com/4#inet#fw4#vpn_domains
 nftset=/zbigz.com/4#inet#fw4#vpn_domains
 nftset=/zedge.net/4#inet#fw4#vpn_domains
 nftset=/zendesk.com/4#inet#fw4#vpn_domains
diff --git a/Russia/inside-kvas.lst b/Russia/inside-kvas.lst
index de402c6..1f00007 100644
--- a/Russia/inside-kvas.lst
+++ b/Russia/inside-kvas.lst
@@ -68,6 +68,7 @@ brawlstarsgame.com
 broadcom.com
 broncosportforum.com
 btdig.com
+btod.com
 buanzo.org
 buf.build
 builds.parsec.app
@@ -152,6 +153,7 @@ download3.omnissa.com
 doxa.team
 dpidetector.org
 dreamhost.com
+ducati.com
 dw.com
 e621.net
 echofm.online
@@ -688,6 +690,7 @@ ytimg.com
 ytimg.l.google.com
 yummyani.me
 zahav.ru
+zapier.com
 zbigz.com
 zedge.net
 zendesk.com
diff --git a/Russia/inside-mikrotik-fwd.lst b/Russia/inside-mikrotik-fwd.lst
index c3fe573..817e0e7 100644
--- a/Russia/inside-mikrotik-fwd.lst
+++ b/Russia/inside-mikrotik-fwd.lst
@@ -69,6 +69,7 @@
 /ip dns static add name=broadcom.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
 /ip dns static add name=broncosportforum.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
 /ip dns static add name=btdig.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
+/ip dns static add name=btod.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
 /ip dns static add name=buanzo.org type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
 /ip dns static add name=buf.build type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
 /ip dns static add name=builds.parsec.app type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
@@ -153,6 +154,7 @@
 /ip dns static add name=doxa.team type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
 /ip dns static add name=dpidetector.org type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
 /ip dns static add name=dreamhost.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
+/ip dns static add name=ducati.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
 /ip dns static add name=dw.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
 /ip dns static add name=e621.net type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
 /ip dns static add name=echofm.online type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
@@ -688,6 +690,7 @@
 /ip dns static add name=ytimg.l.google.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
 /ip dns static add name=yummyani.me type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
 /ip dns static add name=zahav.ru type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
+/ip dns static add name=zapier.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
 /ip dns static add name=zbigz.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
 /ip dns static add name=zedge.net type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
 /ip dns static add name=zendesk.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
diff --git a/Russia/inside-raw.lst b/Russia/inside-raw.lst
index 26c558f..eaa37b6 100644
--- a/Russia/inside-raw.lst
+++ b/Russia/inside-raw.lst
@@ -69,6 +69,7 @@ brawlstarsgame.com
 broadcom.com
 broncosportforum.com
 btdig.com
+btod.com
 buanzo.org
 buf.build
 builds.parsec.app
@@ -153,6 +154,7 @@ download3.omnissa.com
 doxa.team
 dpidetector.org
 dreamhost.com
+ducati.com
 dw.com
 e621.net
 echofm.online
@@ -688,6 +690,7 @@ ytimg.com
 ytimg.l.google.com
 yummyani.me
 zahav.ru
+zapier.com
 zbigz.com
 zedge.net
 zendesk.com
diff --git a/Sing-box-compile-srs/compile-srs.py b/Sing-box-compile-srs/compile-srs.py
deleted file mode 100755
index b6227c1..0000000
--- a/Sing-box-compile-srs/compile-srs.py
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/usr/bin/python3.10
-
-import json
-import os
-import subprocess
-
-directories = ['Categories', 'Services']
-
-output_directory = 'JSON'
-os.makedirs(output_directory, exist_ok=True)
-compiled_output_directory = 'SRS'
-os.makedirs(compiled_output_directory, exist_ok=True)
-
-for directory in directories:
-    for filename in os.listdir(directory):
-        file_path = os.path.join(directory, filename)
-        
-        if os.path.isfile(file_path):
-            domains = []
-            with open(file_path, 'r', encoding='utf-8') as file:
-                for line in file:
-                    domain = line.strip()
-                    if domain:
-                        domains.append(domain)
-
-        data = {
-            "version": 2,
-            "rules": [
-                {
-                    "domain_suffix": domains
-                }
-            ]
-        }
-
-        output_file_path = os.path.join(output_directory, f"{os.path.splitext(filename)[0]}.json")
-
-        with open(output_file_path, 'w', encoding='utf-8') as output_file:
-            json.dump(data, output_file, indent=4)
-
-        print(f"JSON file generated: {output_file_path}")
-
-print("\nCompile JSON files to .srs files...")
-for filename in os.listdir(output_directory):
-    if filename.endswith('.json'):
-        json_file_path = os.path.join(output_directory, filename)
-        srs_file_path = os.path.join(compiled_output_directory, f"{os.path.splitext(filename)[0]}.srs")
-        try:
-            subprocess.run(
-                ["sing-box", "rule-set", "compile", json_file_path, "-o", srs_file_path], check=True
-            )
-            print(f"Compiled .srs file: {srs_file_path}")
-        except subprocess.CalledProcessError as e:
-            print(f"Compile error {json_file_path}: {e}")
\ No newline at end of file
diff --git a/Ukraine/inside-raw.lst b/Ukraine/inside-raw.lst
new file mode 100644
index 0000000..ef2a02b
--- /dev/null
+++ b/Ukraine/inside-raw.lst
@@ -0,0 +1,1378 @@
+101.ru
+16-bits.ru
+1cent.in
+1cent.tv
+1cupis.ru
+1internet.tv
+1prime.ru
+1rsload.ru
+1tv.com
+1tv.ru
+1tvcrimea.ru
+1x-bet.com
+1xbet.com
+1xslots-online.com
+1xstavka.ru
+22bet.com
+288sb.com
+2gis.ru
+2gis.ua
+2kita.com
+2whois.ru
+3dn.ru
+3dnews.ru
+3dtoday.ru
+4brain.ru
+5-tv.ru
+5.argocasino50.com
+7themes.su
+82.mchs.gov.ru
+82.mvd.ru
+82.rkn.gov.ru
+82.rospotrebnadzor.ru
+82reg.roszdravnadzor.ru
+888.ru
+9649.ru
+abet.ru
+academyit.ru
+achtungpartisanen.ru
+adacoins.ru
+admin-gorlovka.ru
+advisor.wmtransfer.com
+afisha.yandex.ru
+afisha.yandex.ua
+ag.ru
+agava.net.ru
+agklnr.su
+agroprom.msdnr.ru
+aif.ru
+aladdin-rd.ru
+alchevsk.su
+alfabank.ru
+algoritmika.org
+aliexpress.ru
+allcrimea.net
+altaipalace.net
+amalgama-lab.com
+amediateka.ru
+amlgames.com
+amvrosievka-gorsovet.1c-umi.ru
+amvrosievka-gorsovet.umi.ru
+aniqit.com
+anna-news.info
+anomaly-zone.net
+anomaly-zone.ru
+antifashist.com
+antifriz.tv
+antimaydan.info
+antispamsniper.com
+antistarforce.com
+antr-adm.ru
+antratsit.su
+api.viqeo.tv
+apptractor.ru
+aprlnr.su
+arbitr.ru
+arbitrage.webmoney.ru
+arbitrage.webmoney.ua
+armgov.ru
+artmoney.ru
+artpeople.ru
+artv-news.ru
+ascnb1.ru
+asd.news
+asketlnr.su
+asp24.ru
+asssr.info
+astrabet.ru
+atraining.ru
+au-donetsk.ru
+audience.yandex.ru
+audience.yandex.ua
+auto.ru
+autobook.one
+autosport.com.ru
+avia.yandex.ru
+avia.yandex.ua
+avtopribor.ru
+awru.my.games
+bafista.ru
+baltbet.ru
+banking.gdcert.com
+banking.guarantee.ru
+banking.wmeuro.eu
+banks.webmoney.ru
+bdocodex.com
+beeline.ru
+begemot.media
+beget.com
+bet365.com
+bet365.ru
+betboom.ru
+betcity.ru
+bethesda.net
+betring.org
+bettery.ru
+betwinner.com
+bg14.org
+bigsv.ru
+billingtv.net
+bin.entware.net
+bitasproductions.ru
+bizdnr.ru
+bizon365.ru
+blast.hk
+bloknot.ru
+blynk.tk
+bmpvsu.ru
+bober-tv.ru
+bober.ru
+bonus.qiwi.com
+bookmate.com
+boosty.to
+britannia-kaliningrad.ru
+browser.yandex.ru
+browser.yandex.ua
+brunoyam.com
+bryanka.su
+burda.ru
+bwin.ru
+c-eho.info
+c-inform.info
+c-pravda.ru
+cackle.me
+calend.ru
+calendar.yandex.ru
+cambridgecentre.ru
+capitalfm.moscow
+cardsharingserver.tv
+casino.partycasino.com
+casino.redkings.com
+cbilling.biz
+cbilling.in
+cbilling.pw
+cbillingtv.net
+cdn.tf
+cdnbunny.org
+cdnland.in
+cdnvideo.ru
+changamireltd.com
+chat.ru
+chernayamagiya.com
+chipmaker.ru
+chto-eto-takoe.ru
+cikdnr.su
+click.ru
+cloud.pocketbook.digital
+club443.ru
+clubpixel.ru
+cmh.ru
+cnews.ru
+coddyschool.com
+codenet.ru
+college.ru
+combot.org
+comitet.su
+consoleclub.fun
+cont.ws
+contactpay.com
+conversmod.ru
+corp.qiwi.com
+coub.com
+cqham.ru
+crb-dnr.ru
+credit.webmoney.ru
+crimea-news.com
+crimea-radio.ru
+crimea.com
+crimea.gov.ru
+crimea.izbirkom.ru
+crimea.mk.ru
+crimea.ria.ru
+crimea24.tv
+crimea24tv.ru
+crimeapress.info
+css-ms.ru
+ctrana.news
+cwer.ru
+cwer.su
+cwer.ws
+cyberforum.ru
+d3-28.ru
+d4reflection.org
+dan-news.info
+darkside.ru
+datadome.co
+datalock.ru
+debalcevo-dnr.ru
+debt.wmtransfer.com
+delivery.yandex.ru
+denis-pushilin.info
+denis-pushilin.ru
+depirf.ru
+des-life.ru
+developer.qiwi.com
+deviantart.net
+digitalrussia.tv
+dimonvideo.ru
+direct.yandex.ru
+direct.yandex.ua
+disk.yandex.ru
+disk.yandex.ua
+djankoiadm.ru
+dlink.ru
+dmde.ru
+dmkos.ru
+dnd.su
+dnipress.com
+dnmchs.ru
+dnr-hotline.ru
+dnr-life.ru
+dnr-live.ru
+dnr-news.com
+dnr-online.ru
+dnr-pravda.ru
+dnr24.com
+dnr24.su
+dnrailway.ru
+dnronlane.su
+dnrsovet.su
+dns-shop.ru
+dns.yandex.ru
+dns.yandex.ua
+do-mein.ru
+dokuchaevskga.ucoz.org
+domkino-premium.tv
+domkino.tv
+domkinopremium.tv
+dommintrans.ru
+donate.qiwi.com
+donationalerts.com
+donbass.media
+donbasstoday.ru
+doncsm.ru
+doneast.su
+donetsk.kp.ru
+donmarkets.ru
+donmintrans.ru
+donnu.ru
+dontimes.ru
+drive2.ru
+driver.ru
+droider.ru
+dropmefiles.com
+drweb.com
+drweb.ru
+dtf.ru
+dvhab.ru
+dzen.ru
+dzhankoy.rk.gov.ru
+e-hentai.org
+e-news.su
+e1.ru
+easynod.ru
+easynod.servebeer.com
+econri.org
+edem.tv
+edemtv.me
+edu.lpr-reg.ru
+eduson.academy
+elcats.ru
+electrotransport.ru
+elementy.ru
+elibrary.ru
+eljur.ru
+elmi.ua
+enakievo.org
+enigma.ua
+epg.fox-tv.fun
+epp.genproc.gov.ru
+eramedia.com.ua
+esir.gov.spb.ru
+esp8266.ru
+esputnik.com
+etu.ru
+europaplus.ru
+events.wmtransfer.com
+evp.rk.gov.ru
+excelworld.ru
+exchanger.money
+exchanger.money.ru
+exchanger.ru
+exesniper.com
+exist.parts
+f1news.ru
+fanfics.me
+fansubs.ru
+farmanager.com
+fastpic.org
+feedsmart.ru
+feo.rk.gov.ru
+fgi-lnr.su
+ficbook.net
+files.wmtransfer.com
+finbet.bet
+findexiq.com
+fixmypc.ru
+flashboot.ru
+flipperzero.one
+fon.bet
+fonbet.ru
+forma-box.ru
+fornote.net
+forscan.org
+forummikrotik.ru
+forumupload.ru
+fotki.yandex.ru
+fotopik.net
+fotostrana.ru
+fox-tv.fun
+fpdnr.ru
+fplnr.org
+freedom.kiev.ua
+freelance.ru
+freeman42.ru
+freize.net
+frenglish.ru
+fsnslnr.su
+game-debate.com
+gamearmy.ru
+gameawards.ru
+gamekot.top
+gatoga.ru
+gazeta-dnr.ru
+gazeta.ru
+gazetacrimea.ru
+gb-dnr.com
+gb.ru
+gcdn.co
+genichesk.khogov.ru
+getcourse.ru
+ggbet.ru
+giapkdnr.msdnr.ru
+gisclub.tv
+gismeteo.ru
+gisnpa-dnr.ru
+gitflic.ru
+gkecopoldnr.ru
+gkgtn.ru
+gknslnr.su
+gkslnr.su
+gktrlnr.su
+glava-lnr.info
+glava-lnr.su
+glavstat.govdnr.ru
+gle.ru
+global.parimatch.com
+godville.net
+goldfishka68.com
+golospravdy.com
+gomel-sat.bz
+goodgame.ru
+gorlovka-news.su
+gorlovka-tv.ru
+gorlovka.today
+gorod-donetsk.com
+gorod-lugansk.com
+goskomzemdnr.ru
+goskomzemlnr.su
+gosnadzorlnr.ru
+gosrezervlnr.su
+gosstat-dnr.ru
+gostrud-dnr.ru
+gosuslugi.ru
+gov.ru
+govdnr.ru
+government.ru
+gpdnr.su
+gplnr.su
+gs-corp.ru
+gsdsd-dnr.ru
+gt-news.info
+gta.ru
+gtklnr.su
+gtrklnr.su
+gtrlnr.com
+gubkin.ru
+gum-centr.su
+guprec.ru
+gvol.ru
+h-helpers.ru
+habr.com
+habr.ru
+hamsdr.ru
+health-diet.ru
+hexlet.io
+hi-fi-forum.net
+hi-fidelity-forum.com
+highspeednetwork.ru
+hightech.plus
+hlboost.ru
+horrorzone.ru
+hostingradio.ru
+howto-news.info
+howtonews.info
+htmlacademy.ru
+i-don.ru
+i-edem.tv
+iddqd.ru
+ideafix.name
+iedem.tv
+igromania.ru
+iguides.ru
+ihc.ru
+ihor-hosting.ru
+ikrim.net
+ikstv.ru
+ilook.tv
+ilovaisk.ugletele.com
+ilyabirman.ru
+imageban.ru
+imgzona.video
+infergames.com
+info.fox-tv.fun
+info.paymaster.ru
+inforeactor.ru
+informing.ru
+infostart.ru
+infovestnik.blogspot.com
+inlinegroup-c.ru
+inlnk.ru
+inosmi.ru
+insearch.site
+inst.net
+interfax.ru
+internet-lab.ru
+interra.bz
+intrud.rk.gov.ru
+investor.qiwi.com
+involta.ru
+ip-tv.club
+iptv-ru.com
+iptvin.ru
+iseetv.net
+iskra-dnr.ru
+ispsystem.ru
+it999.ru
+itc-life.ru
+ithelp21.ru
+ixbt.com
+iz.ru
+izpp.govdnr.ru
+jaomix.ru
+japancats.ru
+jiht.ru
+jino.ru
+jinopro.net
+jira.ru
+jobs.qiwi.com
+jobs.yoomoney.ru
+journalcrimea.ru
+joyreactor.cc
+jpgazeta.ru
+k3d.tech
+kanal-o.ru
+karpov.courses
+karusel-tv.ru
+kaspersky.com
+kaspersky.ru
+kassa.yandex.ru
+katyusha.tv
+kaznalnr.ru
+kcpn.info
+keeper.webmoney.ru
+keeper.wmtransfer.com
+kg-portal.ru
+kga.su
+khartsyzsk.ugletele.com
+kherson.khogov.ru
+khogov.ru
+kianews24.ru
+kiev.coddyschool.com
+kini24.ru
+kino-teatr.ru
+kinoafisha.ru
+kinokong.pro
+kinzhal.media
+kiozk.ru
+kirovskoe.ugletele.com
+kodik.biz
+korabli.su
+koroleffsov.ru
+koronapay.com
+koshara.co
+kp.ru
+kpfu.ru
+krasnodon.su
+krasnyluch.su
+krt-club.ru
+krtech.ru
+krvesna.rk.gov.ru
+krym.fas.gov.ru
+ktcr.lprreg.ru
+labirint.ru
+laitis.ru
+lambda13.online
+lampa32.ru
+lapki.live
+lenovo-forums.ru
+lenta.ru
+leon.ru
+leonardo.osnova.io
+leonid-pasechnik.info
+lesta.ru
+lgt.su
+lib.ru
+lifelink.ru
+lifelug.su
+ligastavok.ru
+light.webmoney.ru
+light.wmtransfer.com
+lightiptv.me
+linebet.com
+linkmeup.ru
+linuxmint.com.ru
+linuxrussia.com
+litres.ru
+livejournal.com
+lms.mupo.ru
+lnr.media
+lnr.today
+loftschool.com
+login.p1.worldoftanks.net
+login.p2.worldoftanks.net
+login.p3.worldoftanks.net
+login.p4.worldoftanks.net
+login.p5.worldoftanks.net
+login.p6.worldoftanks.net
+login.p7.worldoftanks.net
+login.p8.worldoftanks.net
+login.p9.worldoftanks.net
+login.wmtransfer.com
+login0.tanksblitz.ru
+login1.tanksblitz.ru
+login2.tanksblitz.ru
+login3.tanksblitz.ru
+login4.tanksblitz.ru
+lolz.guru
+losst.ru
+lostarmour.info
+lostarmour.ru
+lostfilm.info
+lostmagic.ru
+lug-info.com
+luga1news.ru
+lugansk-online.su
+lugansk.online
+lugansk.site
+lugansk1.info
+lutik.tv
+lutugino.su
+m24.ru
+magzdb.org
+mail.ru
+mail.wmid.com
+mail.yandex.ua
+makeyevka.ru
+mamba.ru
+manaeff.ru
+mangadex.org
+manjaro.ru
+marathonbet.ru
+market.yandex.ru
+market.yandex.ua
+markupeasy.ru
+marshruty.ru
+mastergrad.com
+mchost.ru
+mchs-lnr.su
+mchs.rk.gov.ru
+mcxdnr.ru
+mdsdnr.ru
+meco.rk.gov.ru
+media-xyz.com
+megafon.ru
+megasoft-ltd.ru
+megatimer.ru
+megatransov.net
+melbet.com
+melbet.ru
+melord.net
+memealerts.com
+mephi.ru
+mer.govdnr.ru
+mer.lpr-reg.ru
+merchant.webmoney.ru
+merchant.wmtransfer.com
+merionet.ru
+merlnr.su
+metanit.com
+meteotrend.com
+metrika.yandex.ru
+metrika.yandex.ua
+metro.yandex.ru
+metro.yandex.ua
+mgb-dnr.ru
+mgbdnr.ru
+mgblnr.org
+mgsn.rk.gov.ru
+mhdd.ru
+miaistok.su
+micro-solution.ru
+micrus.ru
+mid-dnr.su
+mil-lnr.info
+mil.ru
+mincult.govdnr.ru
+minek.rk.gov.ru
+minfin.lprreg.ru
+minfin.rk.gov.ru
+minfindnr.ru
+minfinlnr.su
+minfo.rk.gov.ru
+mini.webmoney.ru
+mini.wmtransfer.com
+mininfodnr.ru
+minjust-dnr.ru
+minjust.lpr-reg.ru
+minobr.su
+minpromlnr.su
+minstroy-dnr.ru
+minstroy.lpr-reg.ru
+minstroylnr.su
+mintek-dnr.ru
+mintop.su
+mintrans.lpr-reg.ru
+mintranslnr.su
+mintrud.gov-dpr.ru
+mintrud.lpr-reg.ru
+mintrudlnr.su
+minzdrav.govdnr.ru
+minzdrav.lpr-reg.ru
+mipt.ru
+mir24.tv
+miralinks.ru
+miranda-ng.org
+mirkosmosa.ru
+mirplus.info
+mirtesen.ru
+mizo.lpr-reg.ru
+mk-donbass.ru
+mk-herson.ru
+mk-zap.ru
+mk.lpr-reg.ru
+mk.ru
+mklnr.su
+mkult.rk.gov.ru
+mmnt.ru
+mobile3.gameassists.co.uk
+mobstudio.ru
+mondnr.ru
+money.yandex.ru
+monitor.net.ru
+monitorlab.ru
+monm.rk.gov.ru
+monteon.ru
+moonback.ru
+moscowmedia.net
+mostbet.ru
+moyaposylka.ru
+mozaika.dn.ua
+mpr.lpr-reg.ru
+mprlnr.su
+mprom.rk.gov.ru
+mpt-dnr.ru
+mpt.lpr-reg.ru
+mptdnr.ru
+mrespublika.ru
+msdk.freshchat.com
+msdnr.ru
+msg13.core.tf
+msh.rk.gov.ru
+mshiplnr.lpr-reg.ru
+mshiplnr.su
+msk.top-academy.ru
+mskagency.ru
+mslnr.su
+msport.rk.gov.ru
+msreview.net
+mstcvfvcvb.com
+mstroy.rk.gov.ru
+mtop.rk.gov.ru
+mtrans.rk.gov.ru
+mtrud.rk.gov.ru
+mts.ru
+mtspdnr.ru
+mtur.rk.gov.ru
+mu-lnr.su
+mulnr.su
+music.yandex.ua
+musicwars.ru
+must.rk.gov.ru
+muz1.tv
+mvddnr.ru
+mvdlnr.ru
+myaccount.partypoker.com
+myarena.ru
+myarena.site
+mybook.ru
+myshows.me
+myvi.tv
+mzdnr.ru
+mzdrav.rk.gov.ru
+mzem.rk.gov.ru
+mzhkh.rk.gov.ru
+mzlnr.su
+n.maps.yandex.ru
+nabu-leaks.com
+nabu-leaks.info
+nabu-leaks.net
+nabu-leaks.org
+nag.ru
+nag.wiki
+nahnews.org
+narfu.ru
+narodmon.ru
+narodnoeopolchenie.ru
+nashagazeta.net
+nashe.ru
+nateks-don.ru
+nateks-dv.ru
+nateks-ural.ru
+nateks-volga.ru
+nateks.by
+nateks.telecomsite.ru
+nation-news.ru
+navitel.ru
+navitel.ua
+neosvc.ru
+netology.ru
+network-xyz.com
+nevelend.ru
+new-team.org
+new.yoomoney.ru
+newinform.com
+news-front.info
+news.yandex.ru
+news.yandex.ua
+newsdnr.ru
+newsua.ru
+newxboxone.ru
+ngs.ru
+nihon-go.ru
+nix.ru
+nm-g.ru
+nomadcasino.com
+novkahovka.khogov.ru
+novoaz-adm.3dn.ru
+novopressa.ru
+novorosinform.org
+novoross.info
+novorossia-tv.ru
+novorossia.su
+novorossia.today
+novorossia.vision
+novorossiatv.com
+novosti.icu
+npoiskra.ru
+nsc.ru
+nslnr.su
+nt1941.su
+nts-tv.com
+ntv.ru
+ntvplus.ru
+ntvplus.tv
+nuipogoda.ru
+obu4alka.ru
+oddr.info
+odnarodyna.org
+odsd.ru
+og-ti.ru
+ok-crimea.ru
+ok.ru
+okdk.ru
+okkupatsiya.net
+old-combats.com
+old-games.ru
+oldbk2.com
+olimp.bet
+ombudsmandnr.ru
+onetrust.com
+online-cloud.moscow
+onlinezakladki.ru
+onmedia.io
+ontvtime.ru
+opcrimea.ru
+opennet.ru
+orderingmemory.com
+osu.ru
+otchet-online.ru
+otr-online.ru
+ott-play.com
+ottg.tv
+ottglanz.tv
+ottplay.com
+otus.ru
+outsidethebox.ms
+overclockers.ru
+owebmoney.ru
+oxy.cloud
+oxy.st
+ozon.ru
+p-on.ru
+p2p.qiwi.com
+pa.fox-tv.fun
+paribet.ru
+parimatch.com
+parimatch.foundation
+parimatch.net
+parimatch.ua
+partner.yandex.ru
+partner.yandex.ua
+pascalabc.net
+passport.webmoney.ru
+passport.yandex.ua
+pathofexile.com
+patriarchia.ru
+paymaster.ru
+paymaster.ua
+paystree.com
+pct.amocrm.ru
+pdd.yandex.ru
+peertube.su
+perviynomer.ru
+pervomaysklnr.su
+pflnr.su
+phoenix-dnr.ru
+php.ru
+pikabu.ru
+pikinform.ru
+pikuco.ru
+pingvinus.ru
+pksspb.ru
+planetaexcel.ru
+play-www.777.com
+playground.ru
+pluggedin.ru
+pm.ua
+pobeda.tv
+poehali.tv
+poig.ru
+pokermatch.com
+pokermatch.ua
+politexpert.net
+politnavigator.net
+politros.com
+poolbet.ru
+pooshock.ru
+pornreactor.cc
+postdonbass.com
+poweruser.guru
+pozdravik.ru
+poznet.ru
+ppcrimea.ru
+pravdabeslana.ru
+pravdnr.ru
+premier.one
+premium.tv
+pressa.ru
+prikolnik.com
+primedice.com
+prodonbass.ru
+productstar.ru
+proglib.io
+prolaz.su
+promedia.ru
+promo.yookassa.ru
+promo.yoomoney.ru
+promodj.com
+psxplanet.ru
+ptspb.ru
+pyatilistnik.org
+qiwi.com
+qiwi.gcs-web.com
+qiwi.kz
+qiwi.me
+qiwiguide.ru
+qiwitrue.dev
+qrz.ru
+r82.fss.ru
+r82.fssprus.ru
+rabota.yandex.ru
+rabota.yandex.ua
+rabotavtaxi.pro
+radcap.ru
+radio.ru
+radio.yandex.ua
+radiokot.ru
+radiomoskvy.ru
+radiopotok.ru
+radiorecord.magonet.ru
+radiorecord.ru
+radioscanner.net
+radioscanner.ru
+radiovera.ru
+radiozvezda.ru
+rambler.ru
+rasp.yandex.ru
+rasp.yandex.ua
+rbc.ru
+rcz-dnr.ru
+realty.yandex.ru
+redray-lnr-news.su
+reg.ru
+remont-aud.net
+remontcompa.ru
+remontka.pro
+remplanner.ru
+ren.tv
+reporter-crimea.ru
+republic-tv.ru
+rezka.ag
+rf-cheats.ru
+rfn.ru
+ria.ru
+riafan.ru
+rian.com.ua
+rian.ru
+rinoptica.ru
+riperam.org
+ritualdnr.ru
+rk.gov.ru
+rkn.gov.ru
+rknpa.ru
+rkproc.ru
+rmnews.ru
+rncb.ru
+rock-n-roll.ru
+rolz.org
+rov-adm.su
+rp-universe.ru
+rp24.info
+rp5.ru
+rs.gov.ru
+rsload.net
+rsload.ru
+rst-dnr.ru
+rt.com
+rtcomm.ru
+rtfm.wiki
+rtr-planeta.com
+ru.com
+rucomics.info
+rumedia24.com
+rus-linux.net
+ruscrimea.ru
+rusdialog.ru
+rusf.ru
+rusmatica.org
+rusnext.ru
+russia.tv
+russian-center.ru
+russian.oplot.tv
+rusvesna.su
+rutab.net
+rutor.info
+rutrk.org
+rutube.ru
+rutubelist.ru
+ruvoip.net
+ruweb.net
+ruxpert.ru
+rv77.pw
+rzd.ru
+s8.capital
+sadmin.io
+sampo.ru
+sape.ru
+sberbank.ru
+sc2tv.ru
+scanmatik.ru
+sceptic.online
+school-xyz.com
+seasonvar.ru
+secretra.com
+security.webmoney.ru
+security.wmtransfer.com
+segodnya.tv
+selectel.org
+sendfile.su
+sendsay.ru
+sergeistrelec.ru
+serveradmin.ru
+sev.gov.ru
+sev.tv
+sevastopol.press
+sf.education
+shahtersk.org
+shareman.tv
+sharij.com.ua
+sharij.net
+sharij.online
+shop.fox-tv.fun
+showgogo.ru
+showip.net
+sibnet.ru
+simadm.ru
+simsync.io
+sipnet.ru
+site.yandex.ua
+skadovsk.khogov.ru
+skgazeta.su
+skillbox.ru
+skillfactory.ru
+skladchik.com
+skladchik.org
+sky.pro
+skyeng.com.ua
+skyeng.in.ua
+skyeng.ru
+skysmart.ru
+slavasev.ru
+slavlnr.su
+slavvesti.su
+sledcom.ru
+slimboxtv.ru
+slo.ru
+slovodel.com
+slurm.io
+smdnr.ru
+smi2.ru
+smotrim.ru
+smtu.ru
+snezh-dnr.wmsite.ru
+soap4youand.me
+sobranie-casino.com
+soft-navigator.ru
+sources.ru
+sovminlnr.ru
+sovminlnr.su
+sp-rc.ru
+spb.ru
+spbstu.ru
+speechkit.yandex.ru
+speedfans.ru
+spletnik.ru
+sportloto.ru
+sprav.yandex.ru
+sprav.yandex.ua
+sputnikimages.com
+sputniknews.com
+stakhanov.su
+star-bet.ru
+starkgames.app
+starline-online.ru
+starline.ru
+starobeshevo.ru
+start.ru
+startallback.com
+stat.yandex.ru
+stat.yandex.ua
+static.qiwi.com
+static.viqeo.tv
+stepik.org
+stitch.su
+stnmoscow.ru
+stoletie.ru
+strana.digital
+strana.news
+strana.one
+strana.today
+strana.ua
+strava.com
+stv92.ru
+supcourt-dpr.su
+support.my.games
+svetovik.info
+svk-portal.su
+svpressa.ru
+swiftbook.ru
+synapse-pe.ru
+synthema.ru
+sysadmins.ru
+szstakhanov.su
+tabor.ru
+tadiphone.dev
+tanki.su
+tanksblitz.ru
+tarakanov.net
+tass.ru
+taxi-yandex.com.ua
+taxi-yandex.kiev.ua
+taxi.yandex.ru
+tcpu.ru
+team-host.ru
+teamplay.qiwi.com
+tech.yandex.ru
+techberg.ru
+tehnichka.pro
+telecafe.ru
+telekanal-oplot.tv
+telepay.webmoney.ru
+telepay.wmtransfer.com
+telephony.yandex.ru
+telesputnik.ru
+teletarget.ru
+televid-sib.ru
+telmanovo-dnr.ru
+telmanovo.dnr-online.ru
+tennisi.bet
+textologia.ru
+teyes.cn
+teyes.ru
+tfomsrk.ru
+thg.ru
+thomaldrin.worldpress.com
+tidal.com
+tiflo.info
+tinkoff.ru
+tjournal.ru
+tk-union.tv
+tnt-online.ru
+tochka.com
+topface.com
+topiptv.info
+topvisor.com
+torez24.ru
+tortuga.club
+tppdnr.ru
+tpu.ru
+trakrd.ru
+translate.yandex.ru
+translate.yandex.ua
+trashbox.ru
+travel.qiwi.com
+travel.yandex.ru
+treeone.ru
+tribuna.com
+tribunal.dnr-online.ru
+trkmillet.ru
+trudgor.su
+trudslava.su
+tsiklnr.su
+tunecom.ru
+tuyahome.online
+tv.rbc.ru
+tv.yandex.ru
+tv.yandex.ua
+tvc.ru
+tvkultura.ru
+tvlider.net
+tvoetv.in.ua
+tvzvezda.ru
+tyuiu.ru
+u2.9111s.ru
+ucoz.ru
+ugoos.twicker.ru
+ukr.rs.gov.ru
+ukraina.ru
+ukraine.ru
+ukrgarant.com
+ulstu.ru
+universe.qiwi.com
+uoperev.ucoz.org
+ural.ru
+uraltm08.ru
+urtaev.com
+usbdev.ru
+usbtor.ru
+uscrimea.ru
+usd.krm.sudrf.ru
+userapi.com
+utmn.ru
+utro.ru
+uzhhorod.today
+vc.ru
+vedomosti.ru
+veesp.com
+vegalab.ru
+veraifoma.ru
+versia.ru
+veseloeradio.ru
+vesti-k.ru
+vesti.ru
+vesti92.ru
+vgl-sport.ru
+vgtrk.com
+vipdrive.net
+virtustec.ru
+visionbot.ru
+visions.ru
+vitrina.tv
+vk-apps.com
+vk.com
+vkforms.ru
+vkopt.net
+vkplay.live
+vladimirmalikov.com
+vmakeevke.com
+vniioeng.ru
+vodadonbassa.ru
+voenmeh.ru
+voice-server.ru
+voicesevas.ru
+voidboost.cc
+voidboost.in
+voloshyna.org.ua
+voltbet.ru
+voskhodinfo.su
+vperedlnr.su
+vpn.zaborona.help
+vremya.tv
+vs.krm.sudrf.ru
+vsednr.ru
+vz.ru
+walletone.com
+wasd.tv
+wbc.com.ru
+web-moneta.com
+webhamster.ru
+webmaster.yandex.ru
+webmoney-keeper.ru
+webmoney.by
+webmoney.com
+webmoney.com.ua
+webmoney.ru
+webmoney.ua
+webmoneydealer.narod.ru
+webos-forums.ru
+whitesaas.com
+wiki.web-money.ru
+wiki.web.money.ru
+wiki.webmoney.ru
+wiki.wmtransfer.com
+wiki93.ru
+wikimapia.org
+wildberries.ru
+win-torrent.net
+win10tweaker.ru
+winitpro.ru
+wink.rt.ru
+winline.ru
+wm-factor.com.ua
+wm.exchanger.money
+wmchanger.com
+wmsc1.webmoney.ru
+wmsc2.webmoney.ru
+wmsc3.webmoney.ru
+wmsc4.webmoney.ru
+wmscl.webmoney.ru
+wmtransfer.com
+wmx.ru
+wod.su
+wooordhunt.ru
+world-evolved.ru
+worldcrisis.ru
+wotspeak.ru
+wtftime.ru
+www.21casino.com
+www.24kcasino.com
+www.agoravox.tv
+www.betchain.com
+www.betchplp.xyz
+www.bitcoincasino.us
+www.capitaller.ru
+www.casinotoken.com
+www.cloudbet.com
+www.donbass-insider.com
+www.donetsk-france.org
+www.doverie-tv.ru
+www.drweb.ru
+www.euslot.com
+www.facct.ru
+www.fastpay-casino.com
+www.geopolitika.ru
+www.grandx.com
+www.group-ib.com
+www.group-ib.ru
+www.ilucki.com
+www.inlinegroup.ru
+www.inlinegroup.ua
+www.ints.net
+www.joocasino.com
+www.kaspersky.ru
+www.kinopoisk.ru
+www.konungcasino.com
+www.labirint.ru
+www.litres.ru
+www.loyalcasino.com
+www.mail.ru
+www.mklnr.su
+www.mosfm.com
+www.n1casino.com
+www.nateks.ru
+www.ok.ru
+www.ozon.ru
+www.paradisecasino.com
+www.patreon.com
+www.pervomaysklnr.su
+www.pinnacle.com
+www.pl.com.ua
+www.probki.net
+www.qiwi.com
+www.qiwi.ua
+www.redstarcasino20.eu
+www.smartwm.ru
+www.tvzvezda.ru
+www.vk.com
+www.wildberries.am
+www.wildberries.by
+www.wildberries.eu
+www.wildberries.kg
+www.wildberries.kz
+www.wildberries.ru
+www.wildberries.ua
+www.yataxi.net
+www.yoomoney.ru
+x-bet.co
+xchess.ru
+xml.yandex.ru
+xml.yandex.ua
+xn--80ahqgjaddr.xn--p1ai
+xn--c1acbl2abdlkab1og.xn--p1ai
+xn--h1aheeehel.xn--p1acf
+xxiveklnr.su
+ya-taxi.bitrix24.site
+ya.com
+ya.ru
+yadro.ru
+yalta-tv.ru
+yalta.rk.gov.ru
+yaltatv.ru
+yandex-taxi.com.ua
+yandex.biz.ua
+yandex.com
+yandex.net
+yandex.ru
+yandex.ua
+yandexcloud.net
+yandexdatafactory.com
+yandextaksiua.com.ua
+yandextaxi.com.ua
+yandextaxi.kiev.ua
+yasispolkom.dnr-online.ru
+yasispolkom.ru
+yataxi.com.ua
+yoobusiness.ru
+yookassa.ru
+yoomoney.ru
+yoomoney.uk
+yoomoney.website
+youmoney.ru
+yourok.ru
+ytro.news
+yumoney.ru
+z-oleg.com
+zavtra.ru
+zaycev.net
+zedom.net
+zenit.win
+zenmoney.ru
+zenon.net
+zerocoder.ru
+zhdanovka.com
+zhdanovka.ugletele.com
+zilore.com
+zno.yandex.ua
+zoneofgames.ru
+zugres.ugletele.com
diff --git a/convert.py b/convert.py
index 647f810..ea0de2e 100755
--- a/convert.py
+++ b/convert.py
@@ -4,6 +4,9 @@ import tldextract
 import urllib.request
 import re
 from pathlib import Path
+import json
+import os
+import subprocess
 
 rusDomainsInsideOut='Russia/inside'
 rusDomainsInsideSrcSingle='src/Russia-domains-inside-single.lst'
@@ -15,7 +18,7 @@ uaDomainsSrc='src/Ukraine-domains-inside.lst'
 uaDomainsOut='Ukraine/inside'
 
 def raw(src, out):
-    domains_raw = set()
+    domains = set()
     files = []
 
     if isinstance(src, list):
@@ -27,15 +30,19 @@ def raw(src, out):
                 files.append(path)
 
     for f in files:
-        with open(f) as infile:
-                for line in infile:
-                    if tldextract.extract(line).suffix:
-                        domains_raw.add(line.rstrip())
+        if f.is_file():
+            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()).fqdn)
+                            if not tldextract.extract(line).domain and tldextract.extract(line).suffix:
+                                domains.add("." + tldextract.extract(line.rstrip()).suffix)
 
-    domains_raw = sorted(domains_raw)
+    domains = sorted(domains)
 
     with open(f'{out}-raw.lst', 'w') as file:
-        for name in domains_raw:
+        for name in domains:
             file.write(f'{name}\n')
 
 def dnsmasq(src, out, remove={'google.com'}):
@@ -158,6 +165,94 @@ def mikrotik_fwd(src, out, remove={'google.com'}):
         for name in domains:
             file.write(f'/ip dns static add name={name} type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost\n')
 
+def domains_from_file(filepath):
+    domains = []
+    try:
+        with open(filepath, 'r', encoding='utf-8') as file:
+            for line in file:
+                domain = line.strip()
+                if domain:
+                    domains.append(domain)
+    except FileNotFoundError:
+        print(f"File not found: {filepath}")
+    return domains
+
+def generate_srs(domains, output_name):
+    output_directory = 'JSON'
+    compiled_output_directory = 'SRS'
+
+    os.makedirs(output_directory, exist_ok=True)
+    os.makedirs(compiled_output_directory, exist_ok=True)
+
+    data = {
+        "version": 2,
+        "rules": [
+            {"domain_suffix": domains}
+        ]
+    }
+
+    json_file_path = os.path.join(output_directory, f"{output_name}.json")
+    srs_file_path = os.path.join(compiled_output_directory, f"{output_name}.srs")
+
+    try:
+        with open(json_file_path, 'w', encoding='utf-8') as json_file:
+            json.dump(data, json_file, indent=4)
+        print(f"JSON file generated: {json_file_path}")
+
+        subprocess.run(
+            ["sing-box", "rule-set", "compile", json_file_path, "-o", srs_file_path], check=True
+        )
+        print(f"Compiled .srs file: {srs_file_path}")
+    except subprocess.CalledProcessError as e:
+        print(f"Compile error {json_file_path}: {e}")
+    except Exception as e:
+        print(f"Error while processing {output_name}: {e}")
+
+def generate_srs_for_categories(directories, output_json_directory='JSON', compiled_output_directory='SRS'):
+    os.makedirs(output_json_directory, exist_ok=True)
+    os.makedirs(compiled_output_directory, exist_ok=True)
+
+    for directory in directories:
+        for filename in os.listdir(directory):
+            file_path = os.path.join(directory, filename)
+            
+            if os.path.isfile(file_path):
+                domains = []
+                with open(file_path, 'r', encoding='utf-8') as file:
+                    for line in file:
+                        domain = line.strip()
+                        if domain:
+                            domains.append(domain)
+
+            data = {
+                "version": 2,
+                "rules": [
+                    {
+                        "domain_suffix": domains
+                    }
+                ]
+            }
+
+            output_file_path = os.path.join(output_json_directory, f"{os.path.splitext(filename)[0]}.json")
+
+            with open(output_file_path, 'w', encoding='utf-8') as output_file:
+                json.dump(data, output_file, indent=4)
+
+            print(f"JSON file generated: {output_file_path}")
+
+    print("\nCompile JSON files to .srs files...")
+    for filename in os.listdir(output_json_directory):
+        if filename.endswith('.json'):
+            json_file_path = os.path.join(output_json_directory, filename)
+            srs_file_path = os.path.join(compiled_output_directory, f"{os.path.splitext(filename)[0]}.srs")
+            try:
+                subprocess.run(
+                    ["sing-box", "rule-set", "compile", json_file_path, "-o", srs_file_path], check=True
+                )
+                print(f"Compiled .srs file: {srs_file_path}")
+            except subprocess.CalledProcessError as e:
+                print(f"Compile error {json_file_path}: {e}")
+
 if __name__ == '__main__':
     # Russia inside
     Path("Russia").mkdir(parents=True, exist_ok=True)
@@ -189,11 +284,24 @@ if __name__ == '__main__':
     urllib.request.urlretrieve("https://raw.githubusercontent.com/zhovner/zaborona_help/master/config/domainsdb.txt", "zaboronahelp-domains.lst")
 
     ua_lists = ['uablacklist-domains.lst', 'zaboronahelp-domains.lst', uaDomainsSrc]
-
+    
+    raw(ua_lists, uaDomainsOut)
     dnsmasq(ua_lists, uaDomainsOut)
     clashx(ua_lists, uaDomainsOut)
     kvas(ua_lists, uaDomainsOut)
     mikrotik_fwd(ua_lists, uaDomainsOut)
 
     for temp_file in ['uablacklist-domains.lst', 'zaboronahelp-domains.lst']:
-        Path(temp_file).unlink()
\ No newline at end of file
+        Path(temp_file).unlink()
+
+    # Sing-box ruleset main
+    russia_inside = domains_from_file('Russia/inside-raw.lst')
+    russia_outside = domains_from_file('Russia/outside-raw.lst')
+    ukraine_inside = domains_from_file('Ukraine/inside-raw.lst')
+    generate_srs(russia_inside, 'russia-inside')
+    generate_srs(russia_outside, 'russia-outside')
+    generate_srs(ukraine_inside, 'ukraine-inside')
+
+    # Sing-box categories
+    directories = ['Categories', 'Services']
+    generate_srs_for_categories(directories)