59 lines
2.1 KiB
Python
59 lines
2.1 KiB
Python
from .parser import LyngSatParser
|
||
from .models import LyngSat
|
||
from mainapp.models import Polarization, Standard, Modulation, Satellite
|
||
|
||
def fill_lyngsat_data(target_sats: list[str]):
|
||
parser = LyngSatParser(
|
||
target_sats=target_sats,
|
||
)
|
||
lyngsat_data = parser.get_satellites_data()
|
||
for sat_name, data in lyngsat_data.items():
|
||
url = data['url']
|
||
sources = data['sources']
|
||
for source in sources:
|
||
try:
|
||
freq = float(source['freq'])
|
||
except Exception as e:
|
||
freq = -1.0
|
||
print("Беда с частотой")
|
||
last_update = source['last_update']
|
||
fec = source['metadata']['fec']
|
||
modulation = source['metadata']['modulation']
|
||
standard = source['metadata']['standard']
|
||
symbol_velocity = source['metadata']['symbol_rate']
|
||
polarization = source['pol']
|
||
channel_info = source['provider_name']
|
||
|
||
pol_obj, _ = Polarization.objects.get_or_create(
|
||
name=polarization
|
||
)
|
||
|
||
mod_obj, _ = Modulation.objects.get_or_create(
|
||
name=modulation
|
||
)
|
||
|
||
standard_obj, _ = Standard.objects.get_or_create(
|
||
name=standard
|
||
)
|
||
|
||
sat_obj, _ = Satellite.objects.get(
|
||
name__contains=sat_name
|
||
)
|
||
lyng_obj, _ = LyngSat.objects.get_or_create(
|
||
id_satellite=sat_obj,
|
||
frequency=freq,
|
||
polarization=pol_obj,
|
||
defaults={
|
||
"modulation": mod_obj,
|
||
"standard": standard_obj,
|
||
"sym_velocity": symbol_velocity,
|
||
"channel_info": channel_info,
|
||
"last_update": last_update,
|
||
"fec": fec,
|
||
"url": url
|
||
}
|
||
)
|
||
lyng_obj.objects.update_or_create()
|
||
# TODO: сделать карточку и форму для действий и выбора спутника
|
||
lyng_obj.save()
|