-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathstatic_sql.py
129 lines (105 loc) · 3.54 KB
/
static_sql.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
import json
import os
import argparse
import datetime
import shutil
import utils.json_utils as js
from tqdm import tqdm
from utils.constants import Path, Constants
from utils.sql_utils import ArtemisDB
class Static2Sqlite():
def __init__(self, db_version):
sig_db = ArtemisDB('data')
sig_db.create_db()
####################### MARK: Sign DB
sig_db.sign_db(
'SigID',
str(datetime.date.today()),
db_version,
Constants.EDITABLE
)
with open(Path.STATIC_DIR / 'index.json') as file:
sigs_idx = json.load(file)
####################### MARK: Scan Tags
all_cat = set()
for sig_idx in sigs_idx.values():
sig = js.Signal()
sig.load(sig_idx['dir'])
for cat in sig.category:
all_cat.add(cat)
cat_idx = {}
for cat in sorted(all_cat):
clb_id = sig_db.add_category_label(
cat
)
cat_idx[cat] = clb_id
####################### MARK: Scan Signals
for sig_idx in tqdm(sigs_idx.values()):
sig = js.Signal()
sig.load(sig_idx['dir'])
sig_id = sig_db.add_signal(
sig.name,
sig.description,
sig.url
)
for cat in sig.category:
sig_db.add_category(
sig_id,
cat_idx[cat]
)
for freq in sig.frequency:
sig_db.add_frequency(
sig_id,
freq['value'],
freq['description']
)
for band in sig.bandwidth:
sig_db.add_bandwidth(
sig_id,
band['value'],
band['description']
)
for acf in sig.acf:
sig_db.add_acf(
sig_id,
acf['value'],
acf['description']
)
for modulation in sig.modulation:
sig_db.add_modulation(
sig_id,
modulation['value'],
modulation['description']
)
for mode in sig.mode:
sig_db.add_mode(
sig_id,
mode['value'],
mode['description']
)
for location in sig.location:
sig_db.add_location(
sig_id,
location['value'],
location['description']
)
####################### MARK: Copy Media
for media in sig.media:
doc_id = sig_db.add_document(
media['extension'],
sig_id,
media['name'],
media['description'],
media['type'],
media['preview']
)
src_file_path = sig.media_dir / '{}.{}'.format(media['file_name'], media['extension'])
dst_file_path = Path.MEDIA_DIR / '{}.{}'.format(doc_id, media['extension'])
shutil.copy(src_file_path, dst_file_path)
if __name__ == "__main__":
parser = argparse.ArgumentParser(description = "Artemis DB Parser")
parser.add_argument("--version", type=int, help="Database version", required=True)
args = parser.parse_args()
os.mkdir(Path.DATA_DIR)
os.mkdir(Path.MEDIA_DIR)
Static2Sqlite(args.version)