Files
Building/download_from_data_links.py
CrbnsCat10n 45d1fd1139 new file: download_from_data_links.py
new file:   downloads/Non_TMD/free_vib/free_decay.csv
	new file:   downloads/Non_TMD/free_vib/free_vibration.csv
	new file:   downloads/Non_TMD/test/Kobe_seismic_wave.csv
	new file:   downloads/Non_TMD/test/Northridge_seismic_wave.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_0.55Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_0.5Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_0.65Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_0.6Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_0.7Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_0.85Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_0.8Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_0.9Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_1.05Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_1.15Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_1.1Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_1.2Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_1.35Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_1.3Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_1.45Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_1.4Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_1.5Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_1.65Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_1.6Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_1.75Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_1.7Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_1.8Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_1.95Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_1.9Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_1Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_2.05Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_2.15Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_2.1Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_2.25Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_2.2Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_2.35Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_2.3Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_2.45Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_2.4Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_2.5Hz.csv
	new file:   downloads/Non_TMD/train/harmonic_5mm_2Hz.csv
	new file:   downloads/Non_TMD/val/harmonic_5mm_0.75Hz.csv
	new file:   downloads/Non_TMD/val/harmonic_5mm_0.95Hz.csv
	new file:   downloads/Non_TMD/val/harmonic_5mm_1.25Hz.csv
	new file:   downloads/Non_TMD/val/harmonic_5mm_1.55Hz.csv
	new file:   downloads/Non_TMD/val/harmonic_5mm_1.85Hz.csv
	new file:   downloads/TMD/train/harmonic_5mm_0.5Hz_TMD.csv
	new file:   downloads/TMD/train/harmonic_5mm_1.5Hz_TMD.csv
	new file:   downloads/TMD/train/harmonic_5mm_1Hz_TMD.csv
	new file:   downloads/TMD/val/harmonic_5mm_0.75Hz_TMD.csv
	new file:   downloads/TMD/val/harmonic_5mm_1.25Hz_TMD.csv
	new file:   src/__init__.py
	new file:   src/__pycache__/config.cpython-310.pyc
	new file:   src/__pycache__/config.cpython-314.pyc
	new file:   src/__pycache__/dataset.cpython-310.pyc
	new file:   src/__pycache__/dataset.cpython-314.pyc
	new file:   src/__pycache__/model.cpython-310.pyc
	new file:   src/__pycache__/model.cpython-314.pyc
	new file:   src/config.py
	new file:   src/dataset.py
	new file:   src/evaluate.py
	new file:   src/model.py
	new file:   src/train.py
	new file:   "\346\225\260\346\215\256\351\223\276\346\216\245.txt"
2026-04-30 10:56:08 +08:00

117 lines
3.5 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python3
import argparse
import json
import os
import re
import ssl
import urllib.error
import urllib.parse
import urllib.request
def sanitize_filename(name: str) -> str:
sanitized = name.strip()
sanitized = re.sub(r'[<>:"/\\|?*\x00-\x1f]', '_', sanitized)
sanitized = re.sub(r'\s+', ' ', sanitized)
return sanitized
def unique_path(path: str) -> str:
base, ext = os.path.splitext(path)
counter = 1
while os.path.exists(path):
path = f"{base} ({counter}){ext}"
counter += 1
return path
def download_file(url: str, dest_path: str, verify_ssl: bool = True) -> None:
req = urllib.request.Request(url, headers={
'User-Agent': 'Mozilla/5.0 (Python urllib)'
})
context = None
if not verify_ssl:
context = ssl.create_default_context()
context.check_hostname = False
context.verify_mode = ssl.CERT_NONE
with urllib.request.urlopen(req, timeout=60, context=context) as response:
data = response.read()
with open(dest_path, 'wb') as out_file:
out_file.write(data)
def get_extension_from_url(url: str) -> str:
path = urllib.parse.urlparse(url).path
ext = os.path.splitext(path)[1]
return ext if ext else '.bin'
def main() -> None:
parser = argparse.ArgumentParser(
description='从 数据链接.txt 下载每个 file_url并根据 name 重命名到指定目录。'
)
parser.add_argument(
'--input', '-i', default='数据链接.txt',
help='输入 JSON 文件,默认:数据链接.txt'
)
parser.add_argument(
'--output-dir', '-o', default='downloads',
help='输出目录默认downloads'
)
parser.add_argument(
'--ignore-ssl', action='store_true',
help='忽略 SSL 证书验证,适用于证书链不完整的服务器'
)
args = parser.parse_args()
os.makedirs(args.output_dir, exist_ok=True)
with open(args.input, 'r', encoding='utf-8') as infile:
source = json.load(infile)
records = []
if isinstance(source, dict):
records = source.get('data', {}).get('records', [])
elif isinstance(source, list):
records = source
if not isinstance(records, list):
raise ValueError('无法从输入文件中解析 records 列表。')
for record in records:
if not isinstance(record, dict):
continue
name = record.get('name')
url = record.get('file_url')
if not name or not url:
print('跳过:缺少 name 或 file_url。', record)
continue
clean_name = sanitize_filename(name)
ext = get_extension_from_url(url)
dest_name = f'{clean_name}{ext}'
dest_path = os.path.join(args.output_dir, dest_name)
dest_path = unique_path(dest_path)
try:
print(f'正在下载: {url} -> {dest_path}')
download_file(url, dest_path, verify_ssl=not args.ignore_ssl)
except urllib.error.URLError as exc:
if 'CERTIFICATE_VERIFY_FAILED' in str(exc) and not args.ignore_ssl:
print('SSL 证书验证失败,重试时忽略证书验证。')
try:
download_file(url, dest_path, verify_ssl=False)
except Exception as exc2:
print(f'下载失败: {url}\n原因: {exc2}')
else:
print(f'下载失败: {url}\n原因: {exc}')
except Exception as exc:
print(f'保存失败: {dest_path}\n原因: {exc}')
print('下载完成。')
if __name__ == '__main__':
main()