Compare commits

...

5 Commits

Author SHA1 Message Date
itdoginfo
2f1d84f8b9 0.1.18 2025-06-06 23:46:06 +03:00
itdoginfo
b5213e4967 Merge pull request #90 from unidcml/main
Fix geosite.dat
2025-06-06 23:44:15 +03:00
unidcml
a88d3f75cb Fix 2025-06-06 18:11:34 +03:00
unidcml
8097852b8b Fix 2025-06-06 17:40:44 +03:00
unidcml
3c8b49c2bf Fix 2025-06-06 17:38:50 +03:00
2 changed files with 45 additions and 17 deletions

View File

@@ -31,7 +31,7 @@ jobs:
-v ${{ github.workspace }}/Services:/app/Services \
-v ${{ github.workspace }}/SRS:/app/SRS \
-v ${{ github.workspace }}/DAT:/app/DAT \
itdoginfo/compilesrs:0.1.17
itdoginfo/compilesrs:0.1.18
- name: Check Russia/inside-dnsmasq-ipset
uses: itdoginfo/dnsmasq-action@0.1

View File

@@ -362,28 +362,55 @@ def generate_srs_combined(input_subnets_file, input_domains_file, output_json_di
print(f"Compile error {output_file_path}: {e}")
def prepare_dat_domains(domains_or_dirs, output_name):
def prepare_dat_domains(domains, output_name, dirs=[]):
output_lists_directory = 'geosite_data'
os.makedirs(output_lists_directory, exist_ok=True)
extracted_domains = []
domain_attrs = {domain: [] for domain in domains}
if all(os.path.isdir(d) for d in domains_or_dirs):
for directory in domains_or_dirs:
for filename in os.listdir(directory):
file_path = os.path.join(directory, filename)
for directory in dirs:
if not os.path.isdir(directory):
continue
for filename in os.listdir(directory):
file_path = os.path.join(directory, filename)
if not os.path.isfile(file_path):
continue
if os.path.isfile(file_path):
with open(file_path, 'r', encoding='utf-8') as file:
attribute = os.path.splitext(filename)[0]
extracted_domains.extend(f"{line.strip()} @{attribute}" for line in file if line.strip())
else:
extracted_domains = domains_or_dirs
attribute = os.path.splitext(filename)[0].replace('_', '-')
with open(file_path, 'r', encoding='utf-8') as f:
for line in f:
domain = line.strip()
if not domain:
continue
if domain in domain_attrs:
domain_attrs[domain].append(f" @{attribute}")
output_file_path = os.path.join(output_lists_directory, output_name)
with open(output_file_path, 'w', encoding='utf-8') as file:
file.writelines(f"{name}\n" for name in extracted_domains)
with open(output_file_path, 'w', encoding='utf-8') as out_f:
for domain, attrs in domain_attrs.items():
line = domain + "".join(attrs)
out_f.write(f"{line}\n")
def prepare_dat_combined(dirs):
import shutil
output_lists_directory = 'geosite_data'
os.makedirs(output_lists_directory, exist_ok=True)
for directory in dirs:
if not os.path.isdir(directory):
continue
for filename in os.listdir(directory):
source_path = os.path.join(directory, filename)
if not os.path.isfile(source_path):
continue
new_name = os.path.splitext(filename)[0].replace('_', '-')
destination_path = os.path.join(output_lists_directory, new_name)
shutil.copyfile(source_path, destination_path)
def generate_dat_domains(data_path='geosite_data', output_name='geosite.dat', output_directory='DAT'):
os.makedirs(output_directory, exist_ok=True)
@@ -462,7 +489,8 @@ if __name__ == '__main__':
generate_srs_combined(OVHSubnets, "Services/ovh.lst")
# Xray domains
prepare_dat_domains(directories, 'russia-inside')
prepare_dat_domains(russia_inside, 'russia-inside', directories)
prepare_dat_domains(russia_outside, 'russia-outside')
prepare_dat_domains(ukraine_inside, 'ukraine-inside')
prepare_dat_combined(directories)
generate_dat_domains()